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


25

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

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


3
だから、誰ももう使用しsuませんか?今まで?
ミスターリスター

9
@MrLister sudo -iとあなたのような多くの時間として1の間に足で自分自身をshoothingヘルプに誰のための準備ができてrootシェルを、持っている...
Rmano

1
@DevRobot、そのソースはありますか?Canonicalがそのような重要なコマンドを削除すると信じるのは少し難しいと思いますが、Googleでそれについて何も見つけることができません。
DJMcMayhem

9
@DevRobotにsuはパスワードが必要です。デフォルトでは、Ubuntuのrootユーザーにはパスワードがありません。したがって、suルート化することはできません。suここで意図したとおりに動作しています。パスワードを持っているユーザーで試してください。
ムル

3
@muru sudo suは少し繰り返しますが、問題なく動作します。
coteyr

回答:


27

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

男の人から

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


12

から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を開くターミナル/etc/sudoersnano入力します。

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

Defaults    env_reset

そして、追加 どこXはあなたが分単位で設定したい時間です。timestamp_timeout=X

例として:

Defaults    env_reset,timestamp_timeout=5

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

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

RootSudoTimeoutを参照してください


29秒で私を
打つ

1
あなたはいいです-_- b私はラップトップに乗っています。。。多分私はより多くのコーヒーが必要です
セルギーKolodyazhnyy

パスワードプロンプトをトリガーしたくない場合は、たとえば-1をタイムアウトに設定することもできます。
ミチャウシヴィエツキ

8

これを試して 。

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

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

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

    Defaults        env_reset,timestamp_timeout=30
    

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

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


5

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

Defaults:myname timestamp_timeout=15 

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

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


1
sudo -kキャッシュされた認証を手動で無効にすることについて言及する場合は、+ 1 。
バイトコマンダー

5

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

sudo -s

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


1
なぜこれが反対票を投じられるのですか?
coteyr

3
私はダウン投票しませんでしたが、これは使用の1つの利点をsudo無効にします。すべてのコマンドがログに記録されます(したがって、あなたが行ったことを確認できます)。ルートシェルを開くと、そのログは失われます。
ガントベルト

1
@guntbertは確実にすべてのコマンドがログに記録されますが、rootユーザーの履歴に記録されます。
オリバーフリードリッヒ

@BeowulfOFとは限りません-bashの履歴はシステムログとはまったく異なるものです。
ガントベルト

1
実際、@ guntbert、このような認証ログを使用すると、さまざまな問題が発生します。
オリバーフリードリッヒ

1

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

sudo -i

または

sudo bash

または

sudo <your preferred shell here>

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

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


1
これには極度に注意してください。実際には、ルートシェルを実行します。
hmayag

4
なぜこれがダウン投票されたのですか?
coteyr

@hmayagはい、ルートシェルを起動すると、実際にルートシェルが実行されます。したがって、最後の警告の理由。
-reirab

@coteyrおそらくBeoWulfの答えと同じ理由で。
ガントベルト

1

構成ファイルを変更し、パッケージのアップグレード後にその変更が上書きされる理由について混乱したユーザーからの質問が多すぎる場合、変更したい場合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

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

# 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サイクル間でスリープする時間を微調整する場合があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.