我如何允许用户使用无密码 sudo 运行某些命令——而不破坏所有其他命令?

我如何允许用户使用无密码 sudo 运行某些命令——而不破坏所有其他命令?

我在 AWS EC2 实例上安装了 CIS 强化版 RHEL 8 主机。我的目标是允许我的用户sudo无密码运行某些命令(例如ls,,cat...),而其他命令(例如vi)应保持密码保护。

我已将以下行添加到/etc/sudoers.d/99-foo,并将其包含在 中/etc/sudoers

myuser ALL=(ALL) NOPASSWD: /usr/sbin/visudo,/usr/bin/ls

(我刚刚把自己锁在外面了,因此visudo......)

这对于指定的命令来说非常有效:

[myuser@myhost ~]$ sudo ls -l /var/log/httpd/access_log | wc -l
1

但是,所有其他命令 - 我仍然希望使用密码保护! - 现在失败了:

[myuser@myhost ~]$ sudo echo "hello stackexchange!"
[sudo] password for myuser:
Sorry, user myuser is not allowed to execute '/bin/echo hello stackexchange!' as root on myhost.

答案1

除了允许无密码 sudo 执行特定命令的规则外,你需要一些其他 sudo 规则,允许您的用户使用 sudo 运行所有命令。

默认的 sudo 配置允许wheel组中的用户使用 sudo 运行所有命令(提供密码后),并且应该具有此类访问权限的用户应放在此组中。

# usermod -aG wheel myuser

如果用户在添加到组时已登录,则他们必须注销并重新登录,此更改才能生效。

相关内容