我想在我的 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 语法来执行此操作吗?还是我需要创建一个辅助脚本?
答案1
据我所知,如果参数变化,您就不能将非命令参数传递给 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 wrappers,您会发现更多示例。
如果用户不可信,请务必对所有路径进行硬编码,并对输入运行健全性检查。