在Ubuntu 16.04上,“sudo”命令不需要密码。

5

我有一个Ubuntu 16.04 Amazon EC2实例。

该实例中唯一的用户是ubuntu

我已成功通过SSH连接到我的新实例并且运行正常。

我可以运行以下sudo命令:

sudo apt-get update

但是我担心的是sudo不要求任何密码。

我认为这是因为我的默认ubuntu帐户没有密码。

所以我输入了以下命令:

$ passwd
(current) UNIX password:

我将第二个字段留空并点击Enter,结果出现以下消息:

passwd: Authentication token manipulation error
passwd: password unchanged

我接着决定进行以下操作:

$ sudo passwd

这使我能够更改我的密码,但是每当我执行任何sudo命令时,似乎都不起作用。

如何设置sudo需要密码?

此外,sudo passwd具体做了什么,我该如何撤销它?


如果我理解你的帖子正确,sudo第一次不需要输入密码--用户没有密码。也许sudo并不聪明到意识到你已经更改了用户的密码--它只是“记住”了在你成功验证sudo权限之前的几秒钟。如果你将用户更改为有密码,然后注销并重新登录,仍然不需要输入密码,那么问题可能出现在sudoers配置中。 - S. Imp
@S.Imp 我已经退出并重新登录了,但仍然不要求输入密码。问题在于 ubuntu 没有设置密码,但我似乎无法更改它,因为它要求我输入当前密码。然而当前并没有密码。 - Yahya Uddin
就像我说的那样,您应该创建一个新用户,例如 yahya,该用户具有密码并授予sudoer特权,然后禁用ubuntu用户 - 并确保sudoer配置要求该用户输入其密码。 - S. Imp
可以直接为Ubuntu用户添加密码吗? - Yahya Uddin
在您的帖子中,您清楚地说明已成功更改了用户ubuntu的密码。我假设这意味着您在登录机器时必须提供该密码(或者您可能正在使用密钥对?)。如果您的机器在运行sudo命令时从未提示ubuntu用户输入密码,那可能是由于sudoers配置文件。我提供了上面应该有用的链接。 - S. Imp
显示剩余2条评论
1个回答

10
回答我自己的问题...
Ubuntu默认用户密码被锁定。 因此,要更改密码,您需要执行以下操作:
$ sudo passwd ubuntu

要撤销更改根密码并重新锁定它(与之前一样),请执行以下操作:

$ sudo passwd root -l

为了确保在ubuntu默认用户上每次使用sudo时都要求输入密码,请运行以下命令(注意:您需要为ubuntu设置密码,否则可能会被锁定):

运行命令后,将提示您输入密码。输入密码后,sudo将不再缓存密码并且需要每次输入密码才能执行操作。

sudo visudo

在打开的文件中,找到下面这行:

%sudo ALL=(ALL:ALL) ALL

将其替换为:

%sudo ALL=(ALL:ALL) NOPASSWD: ALL

保存并关闭文件,现在您可以在不输入密码的情况下使用sudo。

$ sudo visudo -f /etc/sudoers.d/90-cloud-init-users
# ubuntu ALL=(ALL) NOPASSWD:ALL

或更改为:

ubuntu ALL=(ALL) ALL
以下是有帮助的内容:

https://serverfault.com/questions/615034/disable-nopasswd-sudo-access-for-ubuntu-user-on-an-ec2-instance/684504#684504


附注:Ubuntu Server 20.04适用于树莓派(arm64),工作方式非常相似:ubuntu是一个不需要密码的sudoer,但密码未锁定(默认为ubuntu,在第一次登录时设置为强制更改)。 - MestreLion

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接