尝试在 Linux 中为某些 cli 命令设置无密码时遇到问题

尝试在 Linux 中为某些 cli 命令设置无密码时遇到问题

计算机环境

操作系统: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

故障排除尝试

我尝试进行以下编辑但没有成功:

  • 改变rootALL
  • 改变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 文件以允许它执行的格式。

相关内容