通常のユーザーが通常のユーザーと通常のグループとしてのみ sudo コマンドを実行できるように制限する方法

通常のユーザーが通常のユーザーと通常のグループとしてのみ sudo コマンドを実行できるように制限する方法

foobarグループ内の通常のユーザーとして、実行ユーザーのパスワードを知っている限り、他の非管理者ユーザー (例 ) としてコマンドusersを実行できるようにしたいと考えています。たとえば、次のことが可能です。sudoraboof:usersfoobar

$ sudo -u raboof echo Hello World!
[sudo] Password for raboof:
$ sudo -g users echo Hello World!
$ sudo -u raboof -g users Hello World!

ただし、上記の 2 番目と 3 番目のバリアントの場合にはsudo実行を拒否します。echo Hello World!

sudo標準プラグインを次のように構成しましたsudoers

User_Alias USER_ADMIN = #0, %#0, %wheel
Runas_Alias RUNAS_ADMIN = #0, %#0, %wheel

User_Alias USER_USER = ALL, !USER_ADMIN
Runas_Alias RUNAS_USER = ALL, !RUNAS_ADMIN

Defaults:USER_USER targetpw

USER_ADMIN ALL = (ALL:ALL) ALL

USER_USER ALL = (RUNAS_USER:RUNAS_USER) ALL

希望どおりに動作させるには、sudoプラグインをどのように構成する必要がありますか?sudoers

答え1

上記の定義の表現をあれこれ試行錯誤した結果、非管理ユーザーとしてRunas_Alias呼び出す 3 つの組み合わせすべてで実際に機能する次の構成にたどり着きました(例)。sudoraboof:users

User_Alias USER_USER = ALL, !#0, !%#0, !%wheel
Runas_Alias RUNAS_USER_USER = ALL, !#0, !%#0, !%wheel
Runas_Alias RUNAS_USER_GROUP = ALL, !#0, !wheel

Defaults:USER_USER targetpw

USER_USER ALL = (RUNAS_USER_USER:RUNAS_USER_GROUP) ALL

foobar $ sudo -u raboof id
uid=1000(raboof) gid=100(users) groups=100(users)
foobar $ sudo -g users id
uid=1000(foobar) gid=100(users) groups=100(users)
foobar $ sudo -u raboof -g users id
uid=1000(raboof) gid=100(users) groups=100(users)

Runas_Alias以下のように以前に定義された定義をネストして否定することは、何らかの不明な理由で機能しませんでした。

Runas_Alias RUNAS_ADMIN_USER = #0, %#0, %wheel
Runas_Alias RUNAS_ADMIN_GROUP = #0, wheel
Runas_Alias RUNAS_USER_USER = ALL, !RUNAS_ADMIN_USER
Runas_Alias RUNAS_USER_GROUP = ALL, !RUNAS_ADMIN_GROUP

関連情報