ホームディレクトリからサービスを実行しているユーザーがいるサービスを実行しています。それらはすべてグループserviceusers
に属しており、サービスユーザーファイルのWebサイトから開始された自動タスクを実行するユーザーがいます。彼をtaskrunner
と呼びましょう。
taskrunner
内の任意のユーザーとしてserviceusers
をSudoに許可しようとしています。
今、私はsudoersファイルを介してこれを実行しようとしました:
serviceuser=ALL(serviceusers:serviceusers) NOPASSWD:ALL
(「serviceusers:serviceusers」はserviceuserユーザーとserviceuserグループを意味することを理解しています。しかし、taskrunner
ユーザーがすべてのユーザーとしてSudoを実行できるようにしたくありません。serviceusers
グループのユーザーのみ)
具体的には、Sudo -u serviceuser1 ...
ではなくSudo -g serviceusers...
を実行できるようにしたいと思います。
これを可能にするために、/etc/pam.d/Sudo
を追加しようとしています。しかし、pam.d/Sudoファイルの適切な構文についての非常に優れたリソースを見つけることができません。
Pam.d/suに追加して、ユーザーがグループ内のユーザーにsuできるようにすることができるので、それはオプションかもしれませんが、単純なSudoだけで可能かどうか疑問に思いました。
私はサーバー管理にかなり慣れていないので、これが正しい方法ではない場合は、いくつかの優れたリソースを教えてください。
ジェームズ。
このsudoers
構成行を使用すると、目的の結果を達成できると思います。
taskrunner ALL = (%serviceusers) NOPASSWD: ALL
上記の行は、Sudo
に、taskrunner
グループのメンバーである任意のユーザーとしてコマンドを実行することをserviceusers
ユーザーに許可するように指示しています。 man 5 sudoers
の関連セクションは次のとおりです。
User_Spec ::= User_List Host_List '=' Cmnd_Spec_List \
(':' Host_List '=' Cmnd_Spec_List)*
Cmnd_Spec_List ::= Cmnd_Spec |
Cmnd_Spec ',' Cmnd_Spec_List
Cmnd_Spec ::= Runas_Spec? Option_Spec* Tag_Spec* Cmnd
Runas_Spec ::= '(' Runas_List? (':' Runas_List)? ')'
Runas_List ::= Runas_Member |
Runas_Member ',' Runas_List
Runas_Member ::= '!'* user name |
'!'* #uid |
'!'* %group |
'!'* %#gid |
'!'* %:nonunix_group |
'!'* %:#nonunix_gid |
'!'* +netgroup |
'!'* Runas_Alias
User_Specは、指定されたホストでユーザーが(およびどのユーザーとして)実行できるコマンドを決定します。デフォルトでは、コマンドはrootとして実行されますが、これはコマンドごとに変更できます。ユーザー仕様の基本構造は「whowhere =(as_whom)what」です。
Runas_Specは、コマンドを実行できるユーザーやグループを決定します。完全に指定されたRunas_Specは、2つのRunas_Lists(上記で定義)で構成されますコロン( ':')で区切られ、括弧のセットで囲まれています。最初のRunas_Listは、Sudoの-uオプションを介してコマンドを実行できるユーザーを示します。 2つ目は、Sudoの-gオプションを介して指定できるグループのリストを定義します。両方のRunas_Listsが指定されている場合、コマンドは、それぞれのRunas_Listsにリストされているユーザーとグループの任意の組み合わせで実行できます。最初のものだけが指定されている場合、コマンドはリスト内の任意のユーザーとして実行できますが、-gオプションは指定できません。最初のRunas_Listが空で、2番目が指定されている場合、コマンドは、グループがRunas_List。両方のRunas_Listsが空の場合、コマンドは呼び出し元のユーザーとしてのみ実行できます。 Runas_Specが指定されていない場合、コマンドはrootとして実行され、グループは指定されません。
したがって、提案された構成行の意味は次のとおりです。