コマンドライン(理想的にはプロンプト)でSudoモードがオンになっているかどうかを示すことができるかどうかを知りたい。
Sudoモードこのシェルセッションでパスワードを一度正しく入力しましたが、まだ有効期限は切れていませんが、まだキャッシュされています。
言い換えれば、実行するSudo
コマンドがパスワードを要求するのか、キャッシュされた資格情報を使用するのかをなんとか伝えることができますか?
長い間、私は使用しています
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
が期限切れであってもアクティブであることを示す場合があります。
キャッシュされた資格情報の残り時間を直接表示するコマンドはありません。スクリプトを作成する必要があります。
https://unix.stackexchange.com/questions/115506/Sudo-testing-for-credentials から
Sudo -nv 2> /dev/null
パスワードがキャッシュされている場合、終了値0が返されます。そのリンクのスクリプトを変更するか、独自のスクリプトを作成できます。
または、タイムスタンプは/var/lib/Sudo
に格納されるため、タイムスタンプを表示または確認するスクリプトを記述することもできます。