OSユーザーのパスワードを変更できるL0チームのためのsudoルールを追加します。
しかし、L0チームはsudoを使ってルートパスワードを変更したくありません。どうすればいいですか?
PS - !/usr/bin/passwd root - 動作しません
答え1
ユーザー認証が既存の/etc/shadowパスワードで行われる場合、唯一の方法は、root以外のユーザーのパスワードのみを変更できるような同様のプログラムを
直接作成することです(例:pass)。 /etc/shadow は実際に構文解析や作成が難しくありません。passwd
sudo yourprogram
より賢明なことに、「チーム」がある場合は一種の集中型ログインメカニズム(LDAP / Kerberos?)があるかもしれませんpasswd
。あります。より細かいアクセス制御を提供します。
答え2
一般的な質問と同様に、sudo
答えは「sudoを介してのみ実行できるラッパースクリプトの作成」です。
つまり、ユーザー名が指定されていて、ルート(および/または他のシステムアカウント)でないことを確認するためにパラメーターを確認するスクリプトを作成します。あるいは、そのユーザー名に対応するUIDが一般ユーザーに割り当てられた範囲内にあることを確認することもできます。通常、ディストリビューションに応じて500+または1000+です。
必要な検証に合格した場合は、passwd
適切なパラメータを使用して実行してください。そうでない場合は、エラーメッセージで中断し、失敗した試みを記録することもできます。
その後、設定sudo
によりユーザーは root でスクリプトを実行できますが、いいえ passwd
それ自体。
スクリプトはrootとして実行されるため、スクリプトで実行されるすべてのプログラム(passwdを含む)もrootとして実行されます。
また、スクリプトはルートとして実行されるため、スクリプトで実行される内容と実行方法に特に注意する必要があります。変数を参照し、ユーザー提供のデータを信頼しないでください(つまり、検証を行わずに他のプログラムに直接引数を渡さないでください。明示的に禁止されていないすべてを許可するよりも明示的に許可されていないすべてを拒否するのが一般的に良いです。入力を検証し、タスクを完了するために必要な最小限のタスクを実行する必要があります。