sudoを使用すると、ターゲットユーザーではなくターゲットグループを使用してプログラムを実行できますか?

sudoを使用すると、ターゲットユーザーではなくターゲットグループを使用してプログラムを実行できますか?

標準のインストールと構成を備えたLinuxシステムを検討してくださいsudo。つまり、rootすべてのコマンドを別のユーザーとして実行できるので、次のコマンドを検討してください。

sudo -u user1 -g group1 some_program

もちろんsome_programEUIDで実行したいです。user1 そしてEGIDでgroup1。しかし、私はuser1これが実際に会員である場合にのみ機能することを難しい方法で学びました。この問題をもう少し詳しく調べてみるgroup1必要があるようです。man sudoコマンドラインオプションの説明から-g

[...] sudoers ポリシーでは、-P オプションを使用しない限り、すべてのターゲットユーザーグループを -g オプションとして指定できます。

これは非常に不便です。sudo特に、サービスまたはプログラムがランダムなUIDとGIDで実行され、そのユーザーがそのグループのメンバーではない場合は、テスト目的でこれを頻繁に使用します。このような場合は、テストする前にsudoそのユーザーをそのグループのメンバーとして作成し、テストが完了したらそのタスクを復元することを忘れないでください。

したがって、質問は:任意のUIDとGIDをroot使用してプログラムを実行できる設定や構成はありますか?sudo一致しないもの?共通のメカニズムを提供するソリューションにのみ興味があります。すべてのプログラム、UID、GID。つまり、特定のプログラム、UID、またはGIDのリストをここに入れることは/etc/sudoersオプションではありません。

sudo考えられる解決策の1つは、それを可能にする代替ポリシープロバイダーです。ただし、インストールと構成の方法を学ぶのは難しい場合があり、他の解決策がなくてもこのパスを選択するかどうかはわかりません。そして、私はこれまでこのようなものを見つけませんでした。

アップデート1(2022-01-27)

問題のシステムは、この執筆時点で利用可能なすべてのパッチで更新されたDebian Busterを実行します。 SELinuxはいいえインストールする。ここに私の/etc/sudoersファイルがあります(省略)ただコメントと空白行):

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
root    ALL=(ALL:ALL) ALL
%sudo   ALL=(ALL:ALL) ALL
ipupdate ALL = (root) NOPASSWD: /root/scripts/asterisk-external-ip

私は現在、最後の行が質問とは関係がないと思います。一方、時には「明確にするために削除された」見かけ上重要ではない部分が実際にそのエラーを引き起こすことがわかりました。

ベストアンサー1

さまざまなターゲットグループでプログラムを実行することが-gこのオプションの鍵です。そして-u結合に制限はありません-g

sudoersポリシーでは、-Pオプションを使用しない限り、すべてのターゲットユーザーグループを-gオプションとして指定できます。

明確には説明されていませんが、この文はsudoがデフォルトで使用できる機能を表します。これはsudoを使うという意味ではありません。 sudoが役に立つ追加sudoers任意のユーザーとグループのセットを許可するファイルのポリシー。

ルートには特別な権限は与えられません。ルートまたは「sudoer」として実行できる場合は、sudo -u user1sudoersファイルにそれを許可するルールがあるためです。何らかの理由で(おそらく管理者が更新するつもりはなかったため)、サンプルsudoersファイルではこの規則は次のようになります。

root        ALL = (ALL) ALL
%wheel      ALL = (ALL) ALL

これは、ユーザーがすでに属しているグループ内でデフォルトグループを指定するための制限された目的でのみ許可されますが、sudo -u許可されていません。ユーザー権限だけでなくグループ権限の昇格を許可するには、これらの規則(またはなどを使用するなど、システム上の同等の規則)を次のように変更します。sudo -g-g%admin%sudobinarus

root        ALL = (ALL:ALL) ALL
%wheel      ALL = (ALL:ALL) ALL

これはDebianなどの一部のディストリビューションのデフォルト設定です。

おすすめ記事