web-dev-qa-db-ja.com

NOPASSWDが設定されているのにSudoタイムスタンプが更新されないのはなぜですか?

Sudoersファイルを編集して、パスワードの入力を求めないようにSudoを設定しました。

myuser ALL=(ALL:ALL) NOPASSWD: ALL

また、パスワードプロンプトなしでSudoを実行すると、正常に動作します。しかし、Sudo -vを入力すると、パスワードの入力を1回だけ求められることに気付きました。マニュアルから、Sudo -vが何をするかを知っています。

-v(検証)オプションを指定すると、Sudoはユーザーのタイムスタンプを更新し、必要に応じてユーザーのパスワードの入力を求めます。これにより、Sudoタイムアウトがさらに15分間(またはsudoersでタイムアウトが設定されているものは何でも)延長されますが、コマンドは実行されません。

そして、私はとにかくそれを使用する必要がないことを知っています(または私は間違っていますか?)。

問題は、Sudoがそのユーザーにパスワードを要求しないように構成されているのに、なぜSudo -vがパスワードを要求するのかということです。特に、後でSudo -vを実行すると、別のSudoコマンドが実行されます。Sudo -vを明示的に実行しない限り、タイムスタンプが更新されないのはなぜですか。

それが問題なら、私のマシンはUbuntu Server11.10を実行しています。

編集:Sudo sudo -vを実行するとパスワードは必要ありませんが、直後にSudo -vが続くと、パスワードの入力を再度求められるため、タイムスタンプは更新されないようです。

Sudoタイムスタンプの更新に使用されるメカニズムは何ですか? Sudoコマンドを実行してからSudo -vを実行すると、タイムスタンプが更新されないのはなぜですか?

2
amyassin

デフォルトオプションauthenticateonに設定されているため、ほぼ確実です。 sudoersのmanページから:

authenticate設定されている場合、ユーザーはコマンドを実行する前にパスワードを使用して自分自身を認証する必要があります。このデフォルトは、PASSWDタグとNOPASSWDタグによって上書きされる場合があります。このフラグはデフォルトでオンになっています。

つまり、NOPASSWDフラグは、指定されたコマンドに対してのみパスワード要件butをオーバーライドします。その他の状況では、パスワードが必要です。このデフォルトは、Sudo -lコマンドによって引き起こされたセキュリティの抜け穴を閉じるために追加されました。

1
itsbruce

Sudoersファイルは変更可能なものであることを考えると、ユーザーからNOPASSWORDパラメーターを削除することは、-v呼び出し後15分以内に発生する可能性があるオプションであるため、タイムスタンプファイルを作成するために(存在しない/存在しない)パスワードを入力しない限り関連します)、パスワードの入力を求められます。

何かを実行できるかどうかを確認したい場合は、id、testなど、ユースケースに合ったものを確認するプログラムを実行することをお勧めします。

編集:SudoでSudo -vを実行するか、Sudoで他のコマンドを実行した場合、Sudoコマンドを正常に実行したという事実は、パスワードを入力したか、別の方法(指紋、スマートカード、秘密鍵など)。
最近のUbuntuバージョン(おそらく他のディストリビューション)では、rootはデフォルトでパスワードなしでSudoを実行できます。

1
Didi Kohen