sudo:如何只允许一个参数的命令?

我想添加一个条目到我的suoders,允许一个用户运行一个命令,只有一个非选项参数。

# tail -1 /etc/sudoers ALL ALL = (:tool) NOPASSWD: /bin/echo [az]* $ sudo -g tool /bin/echo abc def abc def $ sudo -g tool /bin/echo -abc def [sudo] password for user: 

我可以使用sudoers sytnax来做到吗? 或者我需要创build一个帮手脚本?

据我所知,如果参数变化,你不能将非命令parameter passing给sudo。

你可以指定这样的东西:

 users ALL=(ALL) NOPASSWD: /usr/bin/tail /some/file 

这将允许用户尾部分文件,而不是其他文件。

如果你需要传递一个variables,我推荐一个包装脚本。

这是一个rsync包装的例子:

https://sites.google.com/site/beingroot/articles/useful-scripts/wrapper-script-to-use-rsync-via-sudo

如果你search谷歌sudo包装,你可以find更多的例子。

如果用户不能被信任,一定要硬编码所有path,并对input进行完整性检查。