我要找到一个名为'A'的目录,然后启动一个名为'B'的可执行文件,其中包含一个路径作为参数,并且有一行带有execl():
execl("./C","C",path,(char*)0);
perror("Exec failed");
其中C在'A'中并且设置了suid位。
。 我想过这样的事情:
find -name A -execdir {}/B path \
但我得到的是:
Exec failed: Permission denied
怎么了?从A发射B给我没有错误。
很抱歉,如果这是一个愚蠢的问题,我对bash脚本真的很新。感谢任何帮助,非常感谢。
答案 0 :(得分:5)
当您通过find
命令运行B时,当前目录是包含A的目录(即A的父目录),而不是A.
如果您运行find -path '*/A/B' -execdir {} \;
,您将获得正确的目录。
这可能是也可能不是解决现实问题的正确方法。在此示例中,B
没有用处,因此很难猜出现实问题是什么。您考虑过sudo
吗?