sudo設定にPASSWDエントリがないユーザーが毎回認証する必要があるのはなぜですか?

sudo設定にPASSWDエントリがないユーザーが毎回認証する必要があるのはなぜですか?

sudo2人のユーザーの設定を検討してください。

mary ALL = (ALL) NOPASSWD: /bin/ls, /bin/cat
bob ALL = (ALL) PASSWD: /bin/sort

これで、ユーザーがmaryリストにないコマンドを実行するたびに認証を受ける必要があります。

$ sudo sort
[sudo] password for mary: 
Sorry, user mary is not allowed to execute '/bin/sort' as root on eagle.

mary許可されていない他のコマンドを試みると、パスワードを入力するように求められます。ただし、この場合はそうではなく、タイムアウトbobするまで一度だけ要求されます。mary最近パスワードを正確に提供できるようになりましたが、なぜ引き続き認証する必要がありますか?

私は少なくとも1つを見つけましたエマルジョンしかし、答え/コメントが十分にはっきりしていないようです。パスワードの入力に関する質問で、sudo -vここでは質問は許可されていないコマンドの設定に関するものです。はい、PASSWDルールとタグの相互作用はNOPASSWD似ています。

答え1

簡単に言えば、これはセキュリティの問題です。 Maryはパスワードを提供しなくても特定のコマンドを実行できると言いました。失敗すると、「基本操作」が実行されます。行ってパスワードを尋ねて、失敗した試みを記録してください。

恐ろしい技術的な内容を扱うことなく、認証と承認を分離します。

  1. Maryはコマンドを実行しようとしていますか? lsまたはcatであることを確認し、他のコマンドの場合はデフォルト値を確認してください。
  2. Maryを承認する方法が見つかりません。であるふりをする。 - 認証に失敗しました。 fooを実行しようとするとMaryを認証できません。

相対的な

  1. この男はボブですか?パスワードがあることを確認してください。
  2. 私はボブです。 Bobはfooを実行できますか?
  3. いいえ、bobはfooを実行できません。パスワードによる認証は大丈夫です。キャッシュしてください。ただし、コマンドを受け入れることはできません。

基本的にあなたが言ったことは

  • ソートを実行するには、パスワードbobを使用してください。
  • パスワードなしでMaryはlsを実行できます。
  • Maryがfooを実行しようとすると認証できません(方法なし)。
  • bobがfooを実行しようとすると認証できますが、許可されません。

Maryは、ユーザーバーにメッセージが表示されるのと同じ理由でパスワードを入力するように求められます。したがって、ユーザはsudoに対して一般的なコマンド辞書を実行してコマンド出力を調べることで、許可されていないコマンドを確認することはできません。

またはそれを見る別の方法。 Maryの場合、「パスワードで認証するときに実行する項目」変数が空であるため、パスワードで認証することはできません。 bobに対して「パスワードで認証するときに実行できる項目」変数が空ではないため、Bobはパスワードで認証できますが、何かを実行する権限がありません。

答え2

sudoSRPMを以下からダウンロードしました。ここ、内部でコンパイルし、実行してgdbより深い理解を得る。これヒントsetuid ルートプログラムをデバッグするのに非常に便利です。

問題は、ユーザーがコマンドを実行する権限があり、認証された場合にのみタイムsudoスタンプファイル(内部)が生成/更新されることです。/var/db/sudo/<user>認証にはパスワード入力および/または電話が含まれます。ポリアクリルアミド基準寸法。許可は、ユーザーが特定のコマンドを実行できるかどうかを確認することを意味します。これには2つの条件があります。

このフラグの意味は、NOPASSWDリストされたコマンドに対する認証を防ぐことです。したがって、ユーザー(たとえばmary)に構成にエントリがない場合、PASSWDコマンドを正常に実行するために認証する必要はありません。ユーザーが認証されていないため、タイムスタンプファイルは生成されません。そうでなく、そのユーザーが権限のないコマンドを実行すると、認証が発生します。ただし、再認証に失敗したため、ファイルは生成されません。

したがって、エントリを持つユーザーの場合、リストからPASSWD1つ以上のコマンドが正常に実行された場合にのみタイムスタンプファイルが生成されます。他の承認されていないコマンドを実行しようとすると、ファイルは生成されず、sudo毎回認証を試みます。

関連情報