2

我必须找到一个名为“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 脚本真的很陌生。任何帮助表示赞赏,非常感谢。

4

1 回答 1

5

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

如果你运行,你会得到正确的目录find -path '*/A/B' -execdir {} \;

这可能是解决实际问题的正确方法,也可能不是。在此示例中,B没有任何目的,因此很难猜测现实世界的问题是什么。你考虑过sudo吗?

于 2012-09-02T18:06:46.000 回答