我想以这种方式允许 sudo:
myuser ALL=NOPASSWD:/usr/bin/pkill -fx "/usr/sbin/nethogs -v 3 -s" || /usr/sbin/nethogs -v 3 -s
所以我只得到一个正在运行的 nethogs 实例。
visudo 接受它,但我无法在没有密码的情况下运行这些命令...
失败的尝试:
sudo '/usr/bin/pkill -fx "/usr/sbin/nethogs -v 3 -s" || /usr/sbin/nethogs -v 3 -s'
sudo /usr/bin/pkill -fx "/usr/sbin/nethogs -v 3 -s" || sudo /usr/sbin/nethogs -v 3 -s
PS.:这个版本的nethogs是根据sf.net上的cvs编译的
答案1
您只能在文件中使用程序或脚本的名称或路径(以及它们的可选参数)sudoers
——类似的 shell 构造||
将不起作用。
引用man sudoers
:
command name ::= file name |
file name args |
file name '""'
解决此问题的最简单方法是创建一个执行命令集的脚本,使其只能由 root 写入,并授予通过sudo
.
的联机帮助页实际上给出了一个在子 shell 中执行命令的示例,但我还没有找到在配置sudo
中允许这样做的方法(而且也没有sudoers
sudo 用户邮件列表)。