私たちのステージングサーバーは、Amazon EC2インスタンス上にあります。 sshでログインすると、パスワードを入力せずにSudo
コマンドまたはSudo su
を実行できます。
とにかく、ユーザーがSudo
を使用してコマンドを試行するときにパスワードを要求できますか?アクセスを必要とするサードパーティの開発者がいて、それらのroot権限を制限したい。
Sudo passwd
でパスワードを設定してみましたが、パスワードは必要ありません。
~$ Sudo passwd root
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
~$ Sudo su
/home/ubuntu# exit
~$ Sudo passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
~$ Sudo su
/home/ubuntu#
[〜#〜]更新[〜#〜]
Sudo visudo
を実行して次のように追加することで、パスワードを要求してみました。
ubuntu ALL=(ALL) ALL
パスワードを要求されましたが、設定したパスワードが機能しません。幸いにも、これを始める前にAMIを作成しました。
ubuntu
ユーザーのパスワードが設定されていないことが問題である可能性があります。Sudo passwd ubuntu
ではなくSudo passwd root
を実行する必要があります。
明確にするために、私の間違いは私が間違ったユーザーのパスワードを設定したことでした、rootに設定しようとしましたが、ubuntuwith:
~$ Sudo passwd ubuntu
次に、/ etc/sudoersを更新して、ubuntuユーザーがSudo
コマンドを実行するときのパスワード。このファイルを編集するには、Sudo visudo
を実行して以下を追加する必要があります。
ubuntu ALL=(ALL) ALL
次のような行がある場合
ALL ALL=(ALL) NOPASSWD:ALL
/ etc/sudoersでは、これにより、すべてのユーザーがパスワードの入力を求められることなくSudoを実行できるようになります。この行をコメント解除する場合は、たとえば、Sudoの使用を許可するユーザーを指定する必要があります。
myuser ALL=(ALL) ALL
Sudoは資格情報をキャッシュするため、短期間に複数回使用した場合、初回のみパスワードの入力を求められます。
マンページは言う:
timestamp_timeout
Number of minutes that can elapse before Sudo will
ask for a passwd again. The timeout may include a
fractional component if minute granularity is
insufficient, for example 2.5. The default is 5.
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" respectively.
したがって、常にパスワードを要求する場合は、単にSudo visudo
と入力してファイルを編集します。この行を追加します。
Defaults timestamp_timeout=0
これには、すべてのSudoコマンドにパスワードを入力する必要があります。