在Amazon EC2实例的sudo su上设置密码

我们的登台服务器位于Amazon EC2 instnace上。 当你ssh进入它时,你可以执行一个sudo命令或sudo su而不必input密码

有没有反正我可以要求一个用户的密码,当他们尝试与sudo ? 我有第三方开发者需要访问,我想限制他们的根特权。

我尝试使用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# 

UPDATE

我试图通过运行sudo visudo需要密码,并添加:

 ubuntu ALL=(ALL) ALL 

现在我被要求input密码,但是我设置的密码不起作用! 幸运的是,在我开始之前,我创build了一个AMI。

可能的问题是,我没有为ubuntu用户设置密码,我应该已经运行sudo passwd ubuntu而不是sudo passwd root


最终的解决scheme

只是为了澄清,我的错误是,我设置了错误的用户的密码,我试图设置为root,而我应该已经设置为Ubuntu的:

 ~$ sudo passwd ubuntu 

然后更新/ etc / sudoers,以便ubuntu用户在运行sudo命令时必须input密码。 要编辑这个文件,你必须运行sudo visudo并添加:

 ubuntu ALL=(ALL) ALL 

如果你有一条线

 ALL ALL=(ALL) NOPASSWD:ALL 

在/ etc / sudoers中,这将允许所有用户sudo而不被提示input密码。 如果取消注释这一行,则必须指定哪些用户可以使用sudo

 myuser ALL=(ALL) ALL 

Sudo会caching您的凭证,这样如果您在短时间内多次使用它,它将只会在第一时间询问您的密码。

手册页说:

  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. 

所以,如果你总是想要一个密码,你只需inputsudo visudo来编辑文件。 添加这一行:

 Defaults timestamp_timeout=0 

这将需要为所有sudo命令input一个密码。