文書

文書

次のように時間がかかるコマンドをsudo実行すると、sudo私が入力したパスワードは前のコマンドの実行中にキャッシュされ、以前のコマンドの実行が完了した後もしばらくキャッシュされたようです。

パスワードキャッシュの時間制限はいつから始まりますかsudo

ありがとうございます。


修正する:

$ sudo sleep 14m ; sudo ls;
[sudo] password for t: 
file  file1  file2  

$ sudo sleep 15m; sudo ls;
[sudo] password for t: 
[sudo] password for t: 

上記のコマンドは、パスワードを入力するとパスワードのキャッシュタイムアウトが開始されることを意味しますか?

ベストアンサー1

ただ一つユーザーごとのタイムアウトです。タイムアウトの開始タイムスタンプがファイルに保存されます。ファイルの場所はオペレーティングシステムによって異なります。 sudoを使用するほとんどの有効な操作はタイムスタンプをリセットします。このような操作はsudo -nタイムスタンプをリセットしません。これを行うsudo -kと、タイムスタンプが削除されます。

ファイルをスキャンするには、いつでもファイルを一覧表示できるように、ルートとして実行されるコンソールと、タイムスタンプファイルを起動、削除、およびテストするための別のコンソールが必要です。

  1. コンソールを開き、rootとしてログインしてタイムスタンプファイルを一覧表示します。

    $ sudo su -
    [sudo] password for thisuser: ******
    # ls -la /var/lib/sudo/ts/thisuser
    -rw------- 1 root thisuser  240 Jul 24 07:20 thisuser
    
  2. 内部に第二コンソール、タイムスタンプのリセット(大文字K):

    $ sudo -K
    
  3. 最初のコンソールを使用してファイルが削除されたことを確認してください。

  4. 新しいsudoセッションを開始

    $ sudo su -
    [sudo] password for thisuser: ******
    # ls -la /var/lib/sudo/ts/thisuser
    -rw------- 1 root thisuser  240 Jul 24 07:25 thisuser
    

このファイルの時間は最後の更新時刻であり、おそらくデフォルトのタイムスタンプタイムアウトが始まる時点です。実際にはファイルに含まれるタイムスタンプですが、ほとんどの場合、2つは同じです。


文書

man sudoersで(デフォルトタイムアウト(分15))。 (強調は私のもの)

timestamp_timeout
sudoがパスワードを再要求するまでに経過できる時間(分)。小さな粒度だけでは十分ではない場合、時間制限には2.5のような小数部が含まれる場合があります。デフォルト値は 15 です。。常にパスワードの入力を求める場合は、0に設定してください。 0未満の値に設定すると、システムが再起動されるまでユーザーのタイムスタンプは期限切れになりません。これは、ユーザーが-vそれぞれsudoとsudoを介して独自のタイムスタンプを作成または削除できるようにするために使用できます。-k

またman sudoers(タイムスタンプディレクトリ(/var/lib/sudo/tsLinuxで/var/run/sudo/tsFreeBSDなど))(強調):

タイムスタンプディレクトリ
sudoがタイムスタンプファイルを保存するディレクトリ。このディレクトリは、システムの再起動時に消去する必要があります。デフォルトは/var/lib/sudo/ts

関連質問
タイムスタンプファイルの読み方

おすすめ記事