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

Yah*_*din 3 ubuntu ubuntu-16.04

我有一个 Ubuntu 16.04 Amazon EC2 实例。

实例中唯一的用户是 ubuntu

我已经在我的新实例中成功 SSH 并且工作正常。

我可以sudo像这样运行命令:

sudo apt-get update

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

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

所以我输入了以下命令:

$ passwd
(current) UNIX password:
Run Code Online (Sandbox Code Playgroud)

我将第二个字段留空并单击 Enter,它给了我以下消息:

passwd: Authentication token manipulation error
passwd: password unchanged
Run Code Online (Sandbox Code Playgroud)

然后我决定这样做:

$须藤密码

这允许我更改密码,但是每当我执行任何 sudo 命令时,它似乎都不起作用。

如何设置它sudo需要密码?

另外究竟sudo passwd做了什么,我该如何撤消它?

Yah*_*din 7

回答我自己的问题...

默认的 ubuntu 用户密码是锁定的。因此,要更改它,您需要执行以下操作:

$ sudo passwd ubuntu
Run Code Online (Sandbox Code Playgroud)

要撤消更改 root 密码并重新锁定它(就像以前一样),请执行以下操作:

$ sudo passwd root -l
Run Code Online (Sandbox Code Playgroud)

要确保每次在ubuntu默认用户上使用 sudo 时 sudo 都会询问您的密码,请运行以下命令(注意:您需要为 ubuntu 设置密码,否则您可能无法使用 sudo):

$ sudo visudo -f /etc/sudoers.d/90-cloud-init-users
Run Code Online (Sandbox Code Playgroud)

并像这样用 ubuntu 注释掉这一行:

# ubuntu ALL=(ALL) NOPASSWD:ALL
Run Code Online (Sandbox Code Playgroud)

或更改为:

ubuntu ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)

以下帮助:

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