sudo:タイムアウト、残り時間、タイムアウトが期限切れであることを確認するには、どのコマンドを使用する必要がありますか?

sudo:タイムアウト、残り時間、タイムアウトが期限切れであることを確認するには、どのコマンドを使用する必要がありますか?

私はそれがsudo commandXユーザーのパスワードを要求することを知っており、パスワードが有効な場合はcommandXrootとして実行され、ここまですべてがうまく機能します。aptなどの一部のコマンドには必須です。セキュリティ上の理由でchown意味chmodがあります。

次に、次のシナリオ/状況を検討してください。

sudo commandA
... sometime
sudo commandB

root権限が必要なため、タイムアウトがcommandB期限切れになっていない場合はパスワードを要求せずに実行されます。そうでない場合はパスワードを再作成する必要があります。sudo

目的に応じてShell Scripting-できれば- 次の状況ごとに要求されたデータを検索/表示するコマンドはありますか?

  • タイムアウトsudo- 例:N分/秒、次に発生する必要があります。/etc/sudoers
  • 残り時間sudo(有効期限前)。たとえば、タイムアウトが5分の場合は4または3.5を返します。
  • 制限時間がsudoあります

したがって、シナリオの目的を達成するために、合計3つのコマンドまたは特別なパラメータを持つ1つのコマンドがあるとします。

答え1

それはsudo何ですか?隠れ家ユーザーごと、端末セッションごとに5分間の資格情報を入力します。

これを行うには、そのデータを含むエントリを/ run / sudo / ts / username(またはtimestampdirsudoersが指すエントリ)に書き込み、次回実行するときに確認しますsudo

ファイルにアクセスできる(つまり、rootとして実行する必要がある)他のすべてのプログラムは、で指定されたファイル形式と同じ内容を読み取ることができますman sudoers_timestamp

残念ながら、setsuidユーザーがsudoの内部からファイルを読み取ることができるようにするプログラムを作成すると、本当に悪い考えのように聞こえます。なぜなら、このプログラムが提供する利点はほとんどありませんが、厳しいコーナーケースチェックをたくさん行う必要があるからです。はい、ユーザーはそれを確認します。ファイル項目は、他のユーザーのsudo使用属性に関する情報を提供します。

だからあなたが望むものが存在しないようです。 C ++コードのいくつかの行を直接作成し、上記のマンページに記載されている構造をファイルから抽出し、結果の実行可能ファイルsetuidを表示して常にrootとして実行できるようにすることができますが、これは実際には危険なことになります。そして、あなたが望むものは何でも達成するためのより良い方法があります。

答え2

次のようにしてケース3を取得できますsudo -n true 2>/dev/null。ステータスがゼロでない場合、キャッシュされた認証は期限切れです(または削除されたものです)。

答え3

これはsudo -n true認証が期限切れになったかどうかを伝えますが、返品タイムアウトは毎回リセットされます。

関連情報