web-dev-qa-db-ja.com

コマンドラインプロンプトでSudoモードがオンになっている(パスワードがキャッシュされている)かどうかを確認する

コマンドライン(理想的にはプロンプト)でSudoモードがオンになっているかどうかを示すことができるかどうかを知りたい。

Sudoモードこのシェルセッションでパスワードを一度正しく入力しましたが、まだ有効期限は切れていませんが、まだキャッシュされています。

言い換えれば、実行するSudoコマンドがパスワードを要求するのか、キャッシュされた資格情報を使用するのかをなんとか伝えることができますか?

3
Byte Commander

長い間、私は使用しています

Sudo -S true < /dev/null 2> /dev/null

あなたはそれを試してみるかもしれませんが、最近の更新は、私が今セグメンテーションフォールトを取得して以来、それを壊したようです。

Sudo -n true 2> /dev/null-vなし)を試すことができます。それはタイムアウトを更新せずに私のために働いているようです。

次のようなさまざまな方法で、プロンプトでこれを実行できます。

PS1='\u:\w$(Sudo -n true 2> /dev/null && echo " : Sudo :") \$ '

これは、デフォルトで有効になっているpromptvarsオプションに依存します。

プロンプトが発行されると、インジケーターは再び更新されないことに注意してください。そのため、タイムアウトが期限切れになるまでプロンプトがそこにある場合、Sudoが期限切れであってもアクティブであることを示す場合があります。

2

キャッシュされた資格情報の残り時間を直接表示するコマンドはありません。スクリプトを作成する必要があります。

https://unix.stackexchange.com/questions/115506/Sudo-testing-for-credentials から

Sudo -nv 2> /dev/null

パスワードがキャッシュされている場合、終了値0が返されます。そのリンクのスクリプトを変更するか、独自のスクリプトを作成できます。

または、タイムスタンプは/var/lib/Sudoに格納されるため、タイムスタンプを表示または確認するスクリプトを記述することもできます。

1
Panther