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

Elr*_*ond 8 unix sudo

我想在我的 suoders 中添加一个条目,以允许一个用户仅使用一个非选项参数来运行命令。

# tail -1 /etc/sudoers
ALL     ALL = (:tool) NOPASSWD: /bin/echo [a-z]*
$ sudo -g tool /bin/echo abc def
abc def
$ sudo -g tool /bin/echo -abc def
[sudo] password for user: 
Run Code Online (Sandbox Code Playgroud)

我可以使用 sudoers sytnax 来做到这一点吗?还是我需要创建一个帮助脚本?

jef*_*aid 10

据我所知,如果该参数发生变化,您不能将非命令参数传递给 sudo。

您可以指定如下内容:

users ALL=(ALL) NOPASSWD: /usr/bin/tail /some/file
Run Code Online (Sandbox Code Playgroud)

这将允许用户拖尾某个文件而不是其他文件。

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

这是 rsync 包装器的示例:

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

如果您在 google 上搜索 sudo 包装器,您可以找到更多示例。

如果用户不可信,请确保对所有路径进行硬编码并对输入运行健全性检查。

  • 无论如何都应该进行健全性检查。没有人相信![/偏执] (2认同)