为端口命令设置 visudo nopasswd 后权限被拒绝

Permission denied after visudo nopasswd set for port command

我试图阻止 bash 请求 sudo 许可 运行 port command(OSX 数据包管理器)将其添加到 visudo。我基本上试着按照这个 SO thread 但我仍然得到一个错误

manfredo@cave05:~$ port selfupdate
--->  Updating MacPorts base sources using rsync
Error: Error synchronizing MacPorts sources: command execution failed
Please run `port -v selfupdate' for details.
Error: /opt/local/bin/port: port selfupdate failed: Error synchronizing MacPorts sources: command execution failed

如果我sudo它,同样的selfupdate命令运行很顺利。

我的visudo有以下几行

# User privilege specification
  root     ALL=(ALL) ALL
  %admin   ALL=(ALL) ALL
  %admin ALL=(ALL) NOPASSWD: /opt/local/bin/port

我也尝试在最后一行添加

<user_name> ALL=(ALL) NOPASSWD: /opt/local/bin/port

我错过了什么?也有人可以解释 visudo 文件最后一行的语法。

你实际上想实现两件事:

1。无需输入密码即可运行 sudo port

您已经通过将以下行添加到 /etc/sudoers 来解决该问题:

%admin ALL=(ALL) NOPASSWD: /opt/local/bin/port

2。无需显式键入 sudo

即可 运行 sudo port

这可以通过 shell 别名来完成。由于问题被标记为 bash,我假设您的 shell 是 bash。在这种情况下,修改您的 .bashrc 并添加以下行:

alias port='sudo port'

开始一个新的 shell,它应该可以工作。