细粒度的 sudoers 配置(允许的命令行参数)

细粒度的 sudoers 配置(允许的命令行参数)

有没有一种直接的方法可以让用户运行(例如)

/usr/bin/pacman -S -u

以 root 身份运行,但不允许他运行

/usr/bin/pacman -S -u some_package

线路

user ALL=(root) NOPASSWD: /usr/bin/pacman -S -u

允许两者,并且

user ALL=(root) NOPASSWD: /usr/bin/pacman -S -u ""

从语义上看似乎是等价的。

答案1

对于你的情况,请尝试以下方法:

Cmnd_Alias PACMAN = /usr/bin/pacman -S -u, ! /usr/bin/pacman -S -u some_package
user ALL=(root) NOPASSWD: PACMAN

您可以在 sudoers 文件中使用 shell glob 模式(例如 [az]、[0-9]、* 等)来排除与特定模式匹配的包。

答案2

编写一个执行您需要的操作的脚本并授予其 sudo 访问权限。

另外,还要确保无论在什么环境中运行,都无法访问网络,否则他们只能使用自己的 DNS 来欺骗镜像,然后在 pacman 安装时以 root 身份运行任意代码。

相关内容