![对于非 sudo 用户,使用三个无密码命令时 sudoers.d 文件不起作用](https://linux22.com/image/1197175/%E5%AF%B9%E4%BA%8E%E9%9D%9E%20sudo%20%E7%94%A8%E6%88%B7%EF%BC%8C%E4%BD%BF%E7%94%A8%E4%B8%89%E4%B8%AA%E6%97%A0%E5%AF%86%E7%A0%81%E5%91%BD%E4%BB%A4%E6%97%B6%20sudoers.d%20%E6%96%87%E4%BB%B6%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
我想要用户名 steamy(非 sudo 用户)执行三个命令(即 systemctl start|stop|restart factorio)而不输入密码。
我正在使用名为 factorio 的 sudoers.d 文件:
$ sudo ls -l /etc/sudoers.d/
total 8
-r--r----- 1 root root 174 Sep 4 16:49 factorio
-r--r----- 1 root root 958 Jan 17 2018 README
我创建/编辑的factorio文件的内容$ sudo visudo -f /etc/sudoers.d/factorio
:
$ sudo cat /etc/sudoers.d/factorio
steamy ALL=(ALL) NOPASSWD: /usr/bin/systemctl start factorio, /usr/bin/systemctl stop factorio, /usr/bin/systemctl restart factorio
当用户名 steamy 属于 sudo 组时,这三个命令(即 systemctl start|stop|restart factorio)可以正常工作,而不需要密码。
当用户名 steamy 不在 sudo 组内时,这三个命令需要密码,正确输入密码后会失败。
使用 Ubuntu 20.04.6 LTS。
当 steamy 成为 sudo 组的一部分时
$ sudo -l
Matching Defaults entries for steamy on steamnuc00:
env_reset, timestamp_timeout=60, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User steamy may run the following commands on steamnuc00:
(ALL : ALL) ALL
当 steamy 不属于 sudo 组时
$ sudo -l
[sudo] password for steamy:
Sorry, user steamy may not run sudo on steamnuc00.