Sudo
コマンドにデフォルト時間よりも長い期間許可を与える方法はありますか?
多くのパッケージのインストールが必要な場合、Sudo
パスワードを入力し続けるのは苦痛になる可能性があります。そのため、使用期間に影響を与えるコマンドまたは設定があればいいでしょう。
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.
その設定を変更するには、次の手順を実行します。
Sudo visudo
を実行します。 visudo
は、特に/etc/sudoers
ファイルの編集に使用され、デフォルトではnano
テキストエディターを使用します。Defaults
で始まる行を見つけます。次の行を追加します
Defaults timestamp_timeout=x
ここで、xは再プロンプト間の分数です。
ファイルを保存します Ctrl + O
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を指定すると、常にパスワードが要求されます。負の値を指定すると、タイムアウトは期限切れになりません。
完了したら、保存して終了します。
これを試して 。
ターミナルで次のコマンドを実行します。
Sudo visudo
次のような行までスクロールします。
Defaults env_reset
たとえば次のように変更します。
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
/etc/sudoers
ファイルを編集して(Sudo visudo
:に注意してください)、次のような行を追加できます。
Defaults:myname timestamp_timeout=15
ここで、myname
はユーザーIDです。タイムアウト値は分単位です。 -1の値を使用して期限切れにならないようにし、Sudo -k
と入力して認証を強制終了することができるため、パスワードが再度必要になります。
または、エントリを追加して、特定のコマンドにパスワードがまったく必要ないことを伝えることができます。
最も単純なコマンドは信じられません:
Sudo -s
ここでは言及されていません。 「-s」スイッチを使用すると、root権限を持つコンソールが提供されます。この権限は、終了するまで続きます。デフォルト設定で手間をかける必要はありません。
構成ファイルを変更しないソリューションを探している場合、たとえば、特定のセッションでトークンをより長く持続させたい場合、または明示的なアクションの後にのみ適用する場合、以下を試してください:
# 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サイクル間でスリープする時間を微調整する場合があります。
構成ファイルを変更し、パッケージのアップグレード後にその変更が上書きされる理由について混乱したユーザーからの質問が多すぎる場合、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
の新しいバージョンがリリースされた場合、新しいバージョンをインストールするか変更を保持するかを選択する必要はありません。自動的に両方が使用されます。
これまでの他のすべての回答は、Sudo
を使用してパスワードを再度入力するまでのデフォルトのタイムアウトの変更に集中しているようです。ただし、すべてのコマンドの先頭にSudo
を付けずに、rootとしてコマンドを実行できるようにする場合は、次のコマンドでルートシェルを取得できます。
Sudo -i
または
Sudo bash
または
Sudo <your preferred Shell here>
これらはすべて単一のプロセスをルートとして開始するだけですが、問題の単一のプロセスはシェルであり、Sudo
やパスワードを入力することなく、ルートとして好きなだけ他のプロセスを開始できます。 :)
もちろん、大きな力には大きな責任が伴い、愚かなことなどをしないでください。