计算机环境
操作系统:Arch linux - Manjaro
外壳:zsh
目的
我正在尝试启用以下命令不需要输入密码对于我的主用户帐户:ab
sudo systemctl stop NetworkManager
sudo systemctl start NetworkManager
尝试失败
我已阅读并尝试遵循一些在线帮助,并通过使用以下代码sudo -i
创建文件来达到此目的:/etc/sudoers.d/ab
ab ALL=(root) NOPASSWD: sudo systemctl stop NetworkManager
ALL=(root) NOPASSWD: sudo systemctl start NetworkManager
故障排除尝试
我尝试进行以下编辑但没有成功:
- 改变
root
为ALL
- 改变
systemctl
为/bin/systemctl
- 删除
sudo
每次进行编辑和保存时,我cat /etc/sudoers.d/ab
都会检查是否进行了更改,并且总是打开一个新终端来尝试该命令,每次尝试以下组合,同时仍然要求输入密码:
sudo systemctl start NetworkManager
sudo /bin/systemctl start NetworkManager
systemctl start NetworkManager
/bin/systemctl start NetworkManager
问题
启动一个新终端是否足够,或者我是否需要重新启动整个系统才能启动更改?
或者也许我忘记了另一个步骤?
答案1
中的行/etc/sudoers.d/ab
可能应该是这样的:
ab ALL=(root) NOPASSWD: /bin/systemctl stop NetworkManager
ab ALL=(root) NOPASSWD: /bin/systemctl start NetworkManager
使用sudo
正常的本地存储的 sudoers.d 文件(没有像 LDAP 服务器中存储的 sudoers 信息那样先进的内容),对 sudoers 文件的任何更改都应立即生效,无需注销/登录、启动新终端或类似的操作那。
通常sudo
会记录成功和失败的使用尝试,因此您应该查看相应的日志文件(通常是/var/log/secure
或/var/log/auth.log
,具体取决于发行版)以获取来自 的消息sudo
。这些消息将包括用户尝试通过 执行的命令sudo
,其确切格式是您需要将其写入 sudoers 文件以允许它执行的格式。