サスペンドから復帰した後、sudoに常にパスワードを要求させるにはどうすればよいですか?


15

でコマンドを実行するとしますsudo。その後、15分から5分sudo以内に使用すると(覚えている期間がわからない場合)、パスワードの入力を求められません。少なくともその間使用しなかった場合にのみ、再度プロンプトが表示されます。

ただし、その期間が終了する前にマシンをサスペンドし、ウェイクアップし、ログインした場合、sudoコマンドを再度実行するだけで、特定の量を許可していないため、パスワードを要求されません時間の。

それで、どのくらいの期間使用sudoしていなくても、その時間枠内にいる場合でも、再度ログインすると、サスペンド後にパスワードの入力を求められます。使用しsudoていない15/5分がまだ過ぎていませんか?

動作する可能性が最も高いのsudoは、ウェイクアップ時に実行される特定のコマンドの実行時に、すべてのIDキャッシュを削除するコマンドを実行させることです。

Ubuntu GNOME 15.10とGNOME 3.18を実行しています。


1
いい質問ですが、なぜあなたは妄想的ですか?あなた以外の人があなたのログインパスワードを知っている場合、使用を止められないためsudo
エドワード・トーバルズ

そのターミナルウィンドウを終了するだけの場合は、新しいターミナルウィンドウを開くときにパスワードを再入力する必要があります。端末ウィンドウで何かを実行している場合は、 `;を追加します。exit`になり、コマンドが完了するとウィンドウが閉じます。
マーク

@Marc:知っていますが、終了したり、sudo次回手動で確認するのは必ずしも便利ではありません。自動ソリューションが推奨されます。

@edwardtorvalds:まあ、私は再度ログインした後、(私は非常に頻繁にそれをしないことを)離れて行く、と誰かが来るとき、彼らはただ使うことができれば、それは悪いだろう可能性がsudo。自分のコンピューターでは少し奇妙に聞こえるかもしれませんが、別のUbuntuコンピューターでメンテナンス作業を行っていた可能性があります。ユーザーを再度ログインすると、Terminalを閉じるのは不便かもしれませんが、彼らにsudo権利を持たせたい。

1
`を追加 exit`(7回のキーストローク)は非常に簡単に思えます。どのようなメンテナンスから離れますか。途中で中断する機会はあまりないので。
マーク

回答:


19

からman sudo

     -K, --remove-timestamp
                 Similar to the -k option, except that it removes the user's
                 cached credentials entirely and may not be used in conjunc‐
                 tion with a command or other option.  This option does not
                 require a password.  Not all security policies support cre‐
                 dential caching.

そのsudo -Kため、システムがサスペンドするたびにユーザーが実行することが望まれます。

Ubuntu 15.04+(systemd)

これは、スクリプトをに配置することでUbuntu 15.04以降で実行できます/lib/systemd/system-sleep/

  1. 実行sudo nano /lib/systemd/system-sleep/disable_sudo_useruser便宜上、ユーザーのユーザー名に置き換えます);
  2. 次のスクリプトを貼り付けます(userユーザーのユーザー名に置き換えます)。
#!/bin/sh
case $1/$2 in
    pre/suspend)
        su user -c 'sudo -K'
        ;;
esac
  1. ヒットCTRL+ OENTERおよびCTRL+ X;

  2. 実行sudo chmod o+x /lib/systemd/system-sleep/disable_sudo_user;


休止状態/ハイブリッドスリープでもこれを有効にするには、代わりに次のスクリプトを使用します。

#!/bin/sh
case $1 in
    pre)
        su user -c 'sudo -K'
        ;;
esac

以前のUbuntuバージョン(Upstart)

これは、スクリプトをに配置することにより、以前のUbuntuバージョンで実行できます/etc/pm/sleep.d/

  1. 実行sudo nano /etc/pm/sleep.d/disable_sudo_useruser便宜上、ユーザーのユーザー名に置き換えます);
  2. 次のスクリプトを貼り付けます(userユーザーのユーザー名に置き換えます)。
#!/bin/sh
case $1 in
    suspend)
        su user -c 'sudo -K'
        ;;
esac
  1. ヒットCTRL+ OENTERおよびCTRL+ X;

  2. 実行sudo chmod o+x /etc/pm/sleep.d/disable_sudo_user;


休止状態でもこれを有効にするには、代わりに次のスクリプトを使用します。

#!/bin/sh
case $1 in
    suspend|hybernate)
        su user -c 'sudo -K'
        ;;
esac

2
あなたが使用しsudo -u user sudo -kた場合、それは面白かったでしょう。:D
ムル

@muru同じと思ったが、何らかの理由でそれは少し愚かに見えた:D
コス

申し訳ありませんが、しばらくの間シェルコードを記述していませんが、これpre/*)は正確に何をしますか :)

@ParanoidPandaなくなった、更新を参照してください。ここを参照(説明、2番目の段落):2つの引数を渡すsystemd-suspend.serviceときにスクリプトを呼び出し/lib/systemd/system-sleep/ます。$1それはどちらかだpre、睡眠前のイベントのためにまたはpost後スリープイベントのために、そして$2それはどちらかだsuspendhybernateまたはhybrid-sleep; pre/*すべての組み合わせをキャッチするためのものだったpre/とのいずれかをsuspendhybernateまたはhybrid-sleep、しかし、あなたはサスペンションのために明示的に尋ねたので、私はそれを変更pre/suspend
コス

1
古いubuntuでも同様に実行できることに注意してください/etc/pm/sleep.d。スクリプトを使用するなど、異なるメカニズムにすぎません。
ホッブズ

3

あなたがその妄想である場合にのみ!-Kオプションを使用できますsudo

-K, --reset-timestamp
       When used without a command, invalidates the user's cached credentials.  
       In other words, the next time sudo is run a password will be required.  
       This option does not require a password and was added to allow a user to revoke
       sudo permissions from a .logout file.

       When used in conjunction with a command or an option that may require a 
       password, this option will cause sudo to ignore the user's cached credentials.  
       As a result, sudo will prompt for a password (if one is required by the 
       security policy) and will not update the user's cached credentials.

       Not all security policies support credential caching.

例えば、

sudo -K <command>

または、ロボットで保護された金属製の箱にコンピュータを置いたままにすることもできます:)


うーん...しかし、私が望むほど正確ではありませんが、これを自動化する方法はありませんか?これは、コマンドを実行しsudoていてどこかに移動する必要がある場合、サスペンドしようとしていることを明確に知っていることを示唆しているため、マシンをサスペンドし、戻ってマシンのサスペンドを解除するとき、私は待つ必要がありますコマンドまたは次回パスワードを要求する前に完了する時間についてはどうですか?自動化されるためには、さまざまな理由(異なるランレベルでGUIを使用して実行している場合、サスペンド後にパスワードを要求しないという事実を含む)ではるかに便利です。

また、あなたが意味するの-Kではなく、と思います-k

とにかく、もっと便利かもしれません。

1

さらに別の方法

「sudo visudo」と入力します

「Defaults env_reset」という行に移動します

に変更します。

'デフォルトenv_reset、timestamp_timeout = 0

次に、ファイルを保存します。

タイムアウトを0に設定すると、システムは毎回パスワードの入力を求めます。


これ(技術的に言えば)OPが要求していることを達成しますが、ほとんどの状況ではやり過ぎです。それは、あなたが本当に妄想的である場合(または、潜在的に危険なことをするたびに一時停止と熟考のための余分なステップが必要な場合)、これは実行可能な代替案かもしれません。
CVn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.