web-dev-qa-db-ja.com

Sudoにパスワードの入力を要求する

次の場合:

Sudo su -
//enter password
exit
exit
//login again straight away
Sudo su -

Sudoの2回目の呼び出しではパスワードは要求されません。これは、再度ログアウトしても、まだ制限時間内であるため、パスワードの入力を再度要求される必要がないためです。

私はそれらが機能することを確認するためにいくつかの新しい特権を試しているので、タイムアウトが発生するのを待つ間、これは本当に私を遅くしています。

タイムアウトをリセットするために実行できるコマンドはありますか?

ちなみに、タイムアウトを変更したり、他のユーザーに影響を与えたりしたくありません!

26
Rich

Sudo -kタイムアウトのタイムスタンプを強制終了します。 Sudo -k test_my_privileges.shのように、後でコマンドを置くこともできます

man Sudoから:

-K -K(シュアキル)オプションは、ユーザーのタイムスタンプを完全に削除し、コマンドや他のオプションと一緒に使用できないことを除いて、-kに似ています。このオプションはパスワードを必要としません。

-k単独で使用される場合、Sudoの-k(kill)オプションは、ユーザーのタイムスタンプをエポックに設定することにより、ユーザーのタイムスタンプを無効にします。次回Sudoを実行するときには、パスワードが必要になります。このオプションはパスワードを必要とせず、ユーザーが.logoutファイルからSudo権限を取り消すことができるように追加されました。

永久に変更することもできます。 man sudoersから:

timestamp_timeout

Sudoが再度パスワードを要求するまでの経過時間(分)。細かい粒度では不十分な場合、タイムアウトには小数のコンポーネントが含まれる場合があります(例:2.5)。デフォルトは5です。これを0に設定すると、常にパスワードのプロンプトが表示されます。 0未満の値に設定すると、ユーザーのタイムスタンプが期限切れになることはありません。これを使用して、ユーザーがSudo -vおよびSudo -kを介して独自のタイムスタンプを作成または削除できるようにすることができます。

42
Shawn J. Goff

Shawnの答えは素晴らしいですが、この状況で役立つかもしれない追加の構成オプションがあります。

man sudoersから:

tty_tickets

設定されている場合、ユーザーはttyごとに認証する必要があります。このフラグを有効にすると、Sudoは、ユーザーがログオンしているttyの名前が付いたファイルをユーザーのタイムスタンプディレクトリに使用します。無効にすると、代わりにディレクトリのタイムスタンプが使用されます。

このフラグはデフォルトでオンになっています。

man Sudoから:

Tty_ticketsオプションがsudoersで有効になっている場合、タイムスタンプはttyごとの細分性を持っていますが、それでもユーザーのセッションより長く存続する可能性があります。 devptsファイルシステムが使用されているLinuxシステム、デバイスファイルシステムを備えたSolarisシステム、およびデバイスのiノード数を単調に増加させるdevfsファイルシステムを使用する他のシステム(Mac OS Xなど)では、Sudoを使用できます。 ttyベースのタイムスタンプファイルが古くなっていることを判断し、それを無視します。 この機能は世界中で利用できないため、管理者はこの機能に依存しないでください。

比較的新しいと思います。システムがサポートしている場合、ログアウトしてからログインすると、Sudoはパスワードを再度要求します。 (シェルのログアウトスクリプトにもSudo -Kがあります。)

5
Arrowmaster