sudoers 条件/组合命令可以吗?

sudoers 条件/组合命令可以吗?

我想以这种方式允许 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中允许这样做的方法(而且也没有sudoerssudo 用户邮件列表

相关内容