我有一些自动化工具需要能够以特定用户身份运行。用户名是“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
答案1
我认为问题在于,当多个条目与同一用户匹配时,将使用最后一个匹配项。由于invadm
属于 sudo 组,因此该%sudo
条目适用,因此要求输入密码。
只需将您的特定规则移至文件末尾即可。