我需要帮助加载软件,有一个内置的platform_check脚本。我的计划是创建一个名为uname的脚本,它在执行时将打印一个可接受的平台。脚本按我的需要工作,但我不知道如何让uname命令搜索我的自定义uname脚本,而不是/bin/uname默认值。我尝试使用PATH,类似于PATH=~/./PATH_to_uname:$PATH,这是行不通的。我没有根访问权限,所以我不能只在默认位置编辑/创建uname。
当我执行这样的脚本时: exec /目录_ to _ uname /uname和/ -r _ to _uname/uname,我只需要欺骗shell以查找我的自定义uname。
发布于 2021-12-22 02:22:43
您可以尝试使用别名来trick外壳。例如,(使用bash)编辑~/..bashrc并添加alias uname='path/to/uname uname'。执行source ~/.bashrc,命令uname将从别名中获得该命令。如果在执行alias uname='ls -lha'时将其更改为uname并加载(uname命令),它将列出文件/dir。
发布于 2021-12-22 02:27:41
假设您有一个调用uname的平台检查脚本,那么我们将其命名为test.sh:
#!/bin/bash
uname初始运行如预期一样显示uname:
user@computer:~$ ./test.sh
Linux将uname作为bash函数导出到echo您想要用于欺骗的内容:
user@computer:~$ function uname {
> echo "hello"
> }
user@computer:~$ export -f uname
user@computer:~$ ./test.sh
hello发布于 2021-12-22 13:04:29
为了知道在命令期间访问/使用哪些文件,可以使用strace命令:
strace -y uname您将得到大量使用的文件和进程,您可能会看到是否有任何文件和进程可以根据您的需要进行调整。
然而,这是相当危险的(谁知道副作用是什么呢?)因此,我建议您为uname命令创建和使用uname命令。
https://stackoverflow.com/questions/70443517
复制相似问题