我有一些需要能够以特定用户身份运行的自动化工具。用户名是“ig_root”,它仅由监控工具(检查磁盘空间、数据库、CPU 工作负载等)使用,当某些事情可能需要人工干预时,它会向我们发送警告。
我们需要做的是发出 sudo 命令以 ig_root 用户身份运行。我有我的“invadm”帐户,它是 sudo 组的成员,它可以“sudo su - root”,但它会提示输入密码。我需要设置的是能够为非 root 用户执行类似的操作,但不会提示输入密码。
换句话说,作为“invadm”用户,我们想要这样做:
# sudo -u ig_root check_dbspace
...没有看到这个:
[sudo] password for invadm:
但我也希望连接到 root 仍然需要每个人的密码输入:
# sudo su - root
[sudo] password for invadm:
那可能吗?
我当前的 visudo 条目在我的测试服务器上看起来像这样:
# User privilege specification
root ALL=(ALL:ALL) ALL
invadm ALL=(ig_root) NOPASSWD: ALL
# 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
关于我缺少什么的任何想法?我想也许我必须发出 systemctl 并停止/重新启动某些东西,但我了解到没有 sudo 守护程序可以重新启动。我还尝试注销并重新登录以获取任何新环境……不走运。
现在,sudo 唯一不要求输入密码的帐户是当我是 root 用户时。
# sudo -u ig_root whoami
ig_root
我认为问题在于,当同一用户的多个条目匹配时,使用最后一个匹配项。由于
invadm
在组 sudo 中,该%sudo
条目适用,因此需要密码。只需将您的特定规则移至文件末尾即可。