setuidプログラムがsudoを介して実行されている場合、そのプログラムの有効な権限は何ですか?

setuidプログラムがsudoを介して実行されている場合、そのプログラムの有効な権限は何ですか?

setuid私はこのドリルがどのように機能するのか、どのように機能するのかに関する多くの質問と回答を読んで理解しているsudoと思います。

しかし、sudoを介してプログラムを実行すると何が起こるのかわかりません。プログラム自体でsetuidビットを設定した場合。この質問は、次の例で最もよく説明されています。

そのシステムにはというユーザーがいますuser1。ユーザーが他のユーザーとしてプログラムを実行できるsudoように、システムが正しくインストールおよび構成されています。また、合計ビットを所有して設定するrootプログラムもあります。/usr/bin/exampleprogroot:wheelsetuidsetgid

root@morn ~ # dir /usr/bin/exampleprog
-rwsr-sr-x 1 root wheel 92K 2017-11-16 23:42 /usr/bin/exampleprog

今ログインしましたrootユーザーとしてそして、次のコマンドを実行します。

root@morn ~ # sudo -u user1 /usr/bin/exampleprog

それではどうなりますか?exampleprogrootとして実行されていますかuser1(与えられたオプションを使用して期待どおりにsudo)、またはrootとして実行されていますか(実行ファイルがルート所有であり、対応するsetuidビットが設定されているため)。

物事をより複雑にするためにも/usr/bin/wrapper属する追加のプログラムがありますが、root:wheelいいえそしてsetuid場所setgid

root@morn ~ # dir /usr/bin/wrapper
-rwxr-xr-x 1 root wheel 15K 2017-11-16 23:42 /usr/bin/wrapper

プログラムが実行されるwrapperと、ある時点で実行(生成)されます/usr/bin/exampleprog

次に、次を実行します。

root@morn ~ # sudo -u user1 /usr/bin/wrapper

wrapper作成されると、後者は次に実行されexampleprogますか?user1root

ベストアンサー1

idプログラムをどこかにコピーし、権限を変更して試してみることができます。これにより、exampleprogルートの有効なuidと対応する実際のuidが表示されますuser1

user1ログインして以下を実行すると、何が起こるかを考えてみてくださいexampleprog。後者は suid root なので、ルートの有効な uid として実行したいと思います。でプログラムを実行する場合も同様ですsudo

おすすめ記事