管理员组中的用户仍被提示输入 sudo 密码

管理员组中的用户仍被提示输入 sudo 密码

我正在尝试编写脚本来创建可以sudo访问我的 ec2 实例的用户。

我在设置 sudo 访问权限时遇到问题。我以 root 身份运行以下命令...

adduser --disabled-password --gecos "" testuser
usermod -a -G admin,sudo testuser

然后我从 s3 复制 authorized_keys。

此时 ssh 工作正常。

但是如果我尝试使用 sudo,系统会提示我输入密码。

我的 sudoers 文件包括以下内容......

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL

# Allow members of group sudo to execute any command
%sudo   ALL=(ALL:ALL) ALL

除了注销并重新登录之外,我还需要做什么才能使我的更改生效?

我没有更改 sudoers 文件,这是默认设置。

另外还有另一个系统创建的用户ubuntu,可以成功使用 sudo。但是文件中没有明确提及此用户sudoers,因此它一定是通过组成员身份执行此操作。

更新:我尝试将“ubuntu”所属的每个其他组添加到 testuser,但仍然提示我输入密码。

有什么方法可以让我弄清楚“ubuntu”如何获得无密码 sudo 访问权限?

答案1

NOPASSWD除非您在文件中为任何给定条目设置了选项,否则系统将始终提示您输入密码sudoers(忽略记住密码的宽限期,因此不会提示,默认为 15 分钟)。

例如让sudo群组内所有成员都实现无密码sudo实现:

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

这表示该sudo组的任何成员都可以运行以 开头的任何命令,而sudo无需提示输入密码。

同样,用户foobar运行命令reboot

foobar ALL=(ALL:ALL) NOPASSWD: /sbin/reboot

请注意,sudo除非您有非常好的理由,否则对所有命令进行无密码访问并不是一个好主意,您应该考虑将命令限制在必要的最低限度。


规则sudo也可以在目录下的文件中定义/etc/sudoers.d/,默认/etc/sudoers文件包含:

includedir /etc/sudoers.d

最后,这使得任何不包含.或以结尾的文件~都将被读取以查找规则。大概是目录下任何文件中定义的sudo用户定义。ubuntu/etc/sudoes.d/

答案2

我在 AWS EC2 实例上遇到了同样的问题。结果发现 cloud-init 在 /etc/sudoers.d 中添加了一个文件, 90-cloud-init-users内容如下:

# Created by cloud-init v. 19.2-36-g059d049c-0ubuntu2~18.04.1 on Wed, 05 Jan 2022 09:44:40 +0000

# User rules for ubuntu
ubuntu ALL=(ALL) NOPASSWD:ALL

为我的用户添加相同的行解决了该问题。

既然您提到了 S3,我猜这是您的问题,结合 sudoers 配置文件的行为:“当多个条目与用户匹配时,它们将按顺序应用。如果有多个匹配,则使用最后一个匹配(不一定是最具体的匹配)。”,请参阅man sudo

相关内容