允许使用 sudo 为给定命令指定任何参数

允许使用 sudo 为给定命令指定任何参数

我有以下通过以下方式添加的 sudo 配置条目sudo visudo

mark ALL = NOPASSWD: /usr/bin/lxc-ls*

我可以lxc-ls以我的用户身份运行,但如果不要求在命令前加上前缀,我就无法附加任何参数sudo

$ whoami
mark
$ lxc-ls
test-container
$ lxc-ls --fancy
lxc-ls: error: You must be root to access advanced container properties. Try running: sudo /usr/bin/lxc-ls

知道如何编辑 viasudo visudo以允许命令后的任何参数吗?

我不想在命令前加上 sudo,因为我正在使用 python 库来执行该命令,而且 sudo 前缀很有趣。

更新:

我尝试删除*但是也不起作用:

$ sudo grep '\-ls' /etc/sudoers
mark ALL = NOPASSWD: /usr/bin/lxc-ls
$ lxc-ls
test-container
$ lxc-ls --fancy
...
lxc-ls: error: You must be root to access advanced container properties. Try running: sudo /usr/bin/lxc-ls

答案1

来自sudoers 手册

简单的文件名允许用户使用任何他/她想要的参数来运行命令

因此,删除 *。

您仍然需要在 lxc-ls 命令前加上 sudo 或编写一个简单的包装器来为您完成此操作。

答案2

这不是sudo工作原理。 sudoers 文件只是授予用户执行命令的权限当以 sudo 命令为前缀时,因此您无法在不添加 sudo 前缀的情况下运行它。如果您自己的脚本无法执行该命令,则需要编写包装器脚本(如简单的 bash 文件)来执行该命令。

相关内容