sudo:如何仅对命令使用一个参数?


8

我想在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: 

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


是像往常一样-abc的固定论据吗?还是可以改变?
麦克

[a-z]*已经是我想要的参数。所以这是一个可变的参数。(我仅将/ bin / echo用于测试。)
Elrond

Answers:


8

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

您可以指定以下内容:

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

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

如果需要传递变量,建议使用包装器脚本。

这是rsync包装器的示例:

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

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

如果无法信任用户,请确保对所有路径进行硬编码并对输入内容进行完整性检查。


2
无论如何都要进行健康检查。不要相信任何人![/偏执狂]
Nathan C
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.