查找目录并在其中启动可执行文件

时间:2012-09-02 17:53:29

标签: bash find exec

我要找到一个名为'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脚本真的很新。感谢任何帮助,非常感谢。

1 个答案:

答案 0 :(得分:5)

当您通过find命令运行B时,当前目录是包含A的目录(即A的父目录),而不是A.

如果您运行find -path '*/A/B' -execdir {} \;,您将获得正确的目录。

这可能是也可能不是解决现实问题的正确方法。在此示例中,B没有用处,因此很难猜出现实问题是什么。您考虑过sudo吗?