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

そのコマンドで B を実行するfindと、現在のディレクトリは、A ではなく、A を含むディレクトリ (つまり、A の親ディレクトリ) になります。

を実行すると、正しいディレクトリが得られますfind -path '*/A/B' -execdir {} \;

これは、実際の問題を解決する正しい方法である場合とそうでない場合があります。この例では、Bは何の役にも立たないため、実際の問題が何であるかを推測するのは困難です。検討しましたsudoか?

于 2012-09-02T18:06:46.000 に答える