我想了解与分配给特定用户的有效权限有关的规则。我在 Ubuntu 的 sudoers 手册页以及这里的许多帖子中看到了这一段:
该
sudoers
文件是一次性读取的,因此当多个条目与用户匹配时,它们会按顺序应用。如果存在冲突值,则使用最后一个匹配项(不一定是最具体的匹配项)。
不过,让我向您展示我所做的两个实验(在 Ubuntu 22.04.1 LTS 上):
我已经创建了用户test_sudo
、组test1
并test2
添加test_sudo
到这两个组中。我sudoers
每次实验前的文件都是默认的。
第一个实验:我已将以下行插入到我的 sudoers 文件中:
%test1 ALL=(ALL) NOPASSWD: ALL
%test2 ALL=(ALL) /usr/bin/git
添加后,我可以sudo
在不输入密码的情况下执行任何我想要的命令(包括git
)。
第二个实验:我已将以下行插入到我的sudoers
文件中:
%test2 ALL=(ALL) NOPASSWD: ALL
%test2 ALL=(ALL) /usr/bin/git
添加后,我无需密码即可执行sudo
任何命令,除了 git
,这需要密码。
这让我想问,预先确定用户的有效权限的有序逻辑规则集是什么(必须有一个,因为有效权限的计算显然是由代码完成的)?
显然,前面提到的 Ubuntu 文档不足以描述该机制。