【问题标题】:Permission denied after visudo nopasswd set for port command为端口命令设置 visudo nopasswd 后权限被拒绝
【发布时间】:2017-03-06 06:27:09
【问题描述】:

我试图阻止 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文件最后一行的语法。

【问题讨论】:

  • 您根本不使用sudo 执行port 命令。你能指望什么?看来你不明白 sudo 在做什么。
  • 这正是我想要做的。运行需要sudo 的命令,而无需在其前面键入sudo。这对我来说似乎很清楚。也冷静一下,你的语气很烦人。
  • 两次投反对票,和往常一样不予置评。阅读 -1 箭头时,我读到“没有显示任何研究努力,不清楚或没有用”我不知道后者,但我研究了我的问题并试图尽可能清楚地写出来。
  • 对不起,我只是说你不明白sudo,或者如何从命令行调用程序——显然是这样。我已经问过你的期望,因为对于阅读你的问题的人来说,这很难得到。如果你想在不明确输入sudo 命令的情况下始终使用sudo 运行port,则可以创建一个bash 别名,例如alias port='sudo port'
  • 不,不难得到,不,显然不是这样。我经常使用sudo 并且经常从命令行运行程序。这是否意味着我完全了解sudo 和命令行,当然不是。这是否意味着我不理解他们?两者都不。但是你的语气还是很烦人吗?肯定是的。如果我将port 别名为sudo port,当我运行port 命令时,我仍然会被要求输入密码。我想要的是能够运行某个命令,该命令通常需要sudo,而命令前面没有sudo

标签: linux bash sudo macports visudo


【解决方案1】:

你实际上想要实现两件事:

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,它应该可以工作。

【讨论】:

    猜你喜欢
    • 2023-01-26
    • 2016-09-26
    • 2021-01-26
    • 2014-05-29
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 1970-01-01
    相关资源
    最近更新 更多