最终解决方案

最终解决方案

我们的临时服务器位于 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


最终解决方案

需要澄清的是,我的错误是我为错误的用户设置了密码,我试图为而我应该将其设置为Ubuntu和:

~$ sudo passwd ubuntu

然后更新/etc/sudoers所以这样Ubuntu用户在运行命令时必须提供密码sudo。要编辑此文件,您必须运行sudo visudo并添加:

ubuntu        ALL=(ALL)       ALL

答案1

如果你有这样一行

ALL ALL=(ALL) NOPASSWD:ALL

在 /etc/sudoers 中,这将允许所有用户使用 sudo 而无需输入密码。如果您取消注释此行,则必须指定允许使用 sudo 的用户,例如

myuser ALL=(ALL) ALL

答案2

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 命令的密码。

相关内容