web-dev-qa-db-ja.com

スーパーユーザーの許可をsudoを使用するよりも長くする方法は?

Sudoコマンドにデフォルト時間よりも長い期間許可を与える方法はありますか?

多くのパッケージのインストールが必要な場合、Sudoパスワードを入力し続けるのは苦痛になる可能性があります。そのため、使用期間に影響を与えるコマンドまたは設定があればいいでしょう。

25
TellMeWhy

Sudoの動作は/etc/sudoersファイルで設定されます。特定の時間の経過後にユーザーにパスワードの入力を求めるtimestamp_timeoutオプションがあります。

man sudoers から

timestamp_timeout
                       Number of minutes that can elapse before Sudo will ask
                       for a passwd again.  The timeout may include a frac‐
                       tional component if minute granularity is insufficient,
                       for example 2.5.  The default is 15.  Set this to 0 to
                       always Prompt for a password.  If set to a value less
                       than 0 the user's time stamp will never expire.

その設定を変更するには、次の手順を実行します。

  1. ターミナルでSudo visudoを実行します。 visudoは、特に/etc/sudoersファイルの編集に使用され、デフォルトではnanoテキストエディターを使用します。
  2. Defaultsで始まる行を見つけます。次の行を追加します

    Defaults        timestamp_timeout=x
    

    ここで、xは再プロンプト間の分数です。

  3. ファイルを保存します Ctrl + O

27

man sudoersから:

timestamp_timeout
                       Number of minutes that can elapse before Sudo will ask
                       for a passwd again.  The timeout may include a frac‐
                       tional component if minute granularity is insufficient,
                       for example 2.5.  The default is 15.  Set this to 0 to
                       always Prompt for a password.  If set to a value less
                       than 0 the user's time stamp will never expire.  This
                       can be used to allow users to create or delete their
                       own time stamps via “Sudo -v” and “Sudo -k” respec‐
                       tively.

ご覧のとおり、Sudoのデフォルトのタイムアウトは15分です。 /etc/sudoersでこの値を変更できます。

/etc/sudoersを直接編集するのではなく、visudoを使用して編集します。

man visudoから:

     visudo edits the sudoers file in a safe fashion, analogous to vipw(8).
     visudo locks the sudoers file against multiple simultaneous edits, pro‐
     vides basic sanity checks, and checks for parse errors.  If the sudoers
     file is currently being edited you will receive a message to try again
     later.

したがって、ターミナルでSudo visudoと入力すると、nanoテキストエディターで/etc/sudoersファイルが開きます。

この行を探してください:

Defaults    env_reset

timestamp_timeout=Xを追加します。ここで、Xは、分単位で設定する時間です。

例として:

Defaults    env_reset,timestamp_timeout=5

0を指定すると、常にパスワードが要求されます。負の値を指定すると、タイムアウトは期限切れになりません。

完了したら、保存して終了します。

RootSudoTimeoutを参照

12
Ron

これを試して 。

  1. ターミナルで次のコマンドを実行します。

    Sudo visudo
    
  2. 次のような行までスクロールします。

    Defaults        env_reset
    
  3. たとえば次のように変更します。

    Defaults        env_reset,timestamp_timeout=30
    

30を、タイムアウトになるまで待機する時間(分単位)に変更します。また、Sudoを実行するたびにパスワードプロンプトが必要な場合は0に、パスワードを必要としない場合は-1に変更できます。 Ctrl+X 編集を終了するにはY、変更を保存するにはY、終了するにはEnterを押します。

ここにソースがあります: http://lifehacker.com/make-Sudo-sessions-last-longer-in-linux-1221545774

8

/etc/sudoersファイルを編集して(Sudo visudo:に注意してください)、次のような行を追加できます。

Defaults:myname timestamp_timeout=15 

ここで、mynameはユーザーIDです。タイムアウト値は分単位です。 -1の値を使用して期限切れにならないようにし、Sudo -kと入力して認証を強制終了することができるため、パスワードが再度必要になります。

または、エントリを追加して、特定のコマンドにパスワードがまったく必要ないことを伝えることができます。

5
meuh

最も単純なコマンドは信じられません:

Sudo -s

ここでは言及されていません。 「-s」スイッチを使用すると、root権限を持つコンソールが提供されます。この権限は、終了するまで続きます。デフォルト設定で手間をかける必要はありません。

5

構成ファイルを変更しないソリューションを探している場合、たとえば、特定のセッションでトークンをより長く持続させたい場合、または明示的なアクションの後にのみ適用する場合、以下を試してください:

# Work as is with Bash 4.1.2(1)-release and later, this might require some adaptation for other shells
(while [ true ]; do Sudo -v; sleep $((60*4)); done)&

基本的に、前のコード4分ごとにSudoトークンを更新、バックグラウンドで起動されたプロセスを使用します。

確かに、Sudoマニュアルによると: "sudoersセキュリティポリシーのデフォルトパスワードプロンプトタイムアウトは5分です。"そのため、システム固有のポリシーに応じて、ループが2サイクル間でスリープする時間を微調整する場合があります。

1
psychoslave

構成ファイルを変更し、パッケージのアップグレード後にその変更が上書きされる理由について混乱したユーザーからの質問が多すぎる場合、timestamp_timeoutを変更する場合は、作成することをお勧めします/etc/sudoers.dを直接変更するのではなく、/etc/sudoersのファイル。

だからあなたはすべき

Sudo visudo -f /etc/sudoers.d/timeout

(ファイルの名前は、ピリオド(.)が含まれておらず、チルダ(~)で終わっていない限り、任意の名前にすることができます)。選択したエディターで/etc/sudoersを開く代わりに、/etc/sudoers.d/timeoutを開きます。通常は存在しないため、空のファイルとして開きます。あなたの

Defaults timestamp_timeout=X

その中で、いつものように保存します。その後、/etc/sudoersの新しいバージョンがリリースされた場合、新しいバージョンをインストールするか変更を保持するかを選択する必要はありません。自動的に両方が使用されます。

1
fkraiem

これまでの他のすべての回答は、Sudoを使用してパスワードを再度入力するまでのデフォルトのタイムアウトの変更に集中しているようです。ただし、すべてのコマンドの先頭にSudoを付けずに、rootとしてコマンドを実行できるようにする場合は、次のコマンドでルートシェルを取得できます。

Sudo -i

または

Sudo bash

または

Sudo <your preferred Shell here>

これらはすべて単一のプロセスをルートとして開始するだけですが、問題の単一のプロセスはシェルであり、Sudoやパスワードを入力することなく、ルートとして好きなだけ他のプロセスを開始できます。 :)

もちろん、大きな力には大きな責任が伴い、愚かなことなどをしないでください。

1
reirab