私はそれがsudo commandX
ユーザーのパスワードを要求することを知っており、パスワードが有効な場合はcommandX
rootとして実行され、ここまですべてがうまく機能します。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(またはtimestampdir
sudoersが指すエントリ)に書き込み、次回実行するときに確認しますsudo
。
ファイルにアクセスできる(つまり、rootとして実行する必要がある)他のすべてのプログラムは、で指定されたファイル形式と同じ内容を読み取ることができますman sudoers_timestamp
。
残念ながら、setsuid
ユーザーがsudoの内部からファイルを読み取ることができるようにするプログラムを作成すると、本当に悪い考えのように聞こえます。なぜなら、このプログラムが提供する利点はほとんどありませんが、厳しいコーナーケースチェックをたくさん行う必要があるからです。はい、ユーザーはそれを確認します。ファイル項目は、他のユーザーのsudo使用属性に関する情報を提供します。
だからあなたが望むものが存在しないようです。 C ++コードのいくつかの行を直接作成し、上記のマンページに記載されている構造をファイルから抽出し、結果の実行可能ファイルsetuidを表示して常にrootとして実行できるようにすることができますが、これは実際には危険なことになります。そして、あなたが望むものは何でも達成するためのより良い方法があります。
答え2
次のようにしてケース3を取得できますsudo -n true 2>/dev/null
。ステータスがゼロでない場合、キャッシュされた認証は期限切れです(または削除されたものです)。
答え3
これはsudo -n true
認証が期限切れになったかどうかを伝えますが、返品タイムアウトは毎回リセットされます。