考虑到犯这个错误是极其危险的,我认为它值得一个明确的答案。关于 sudoers 中 ALL 的使用还有很多其他答案,但它们并没有直接回答这个问题:
ALL 是否指组中的用户; ALL 是否指对 Cmnd_Alias[es] 的访问;或者它可以根据它在行中的位置来指代其中一个或两个吗?
例如:像这样的组REGULARUSER ALL=(ALL) NOPASSWD: SHUTDOWN
意味着ALL
组中的用户REGULARUSER
有权访问Cmnd_Alias
SHUTDOWN
.
换句话说,语法是:Group \ Users \ Command Permission Specifications.
这是正确的吗?
因此,这意味着我可以ALL
在像 root 这样的实例中使用向组中的所有用户授予所有权限,因此用户组的 ALL=(ALL:ALL) ALLroot
关于使用的其他一些问题ALL
试图理解 sudoers 文件中“modernNeo ALL=(ALL:ALL) ALL”和“modernNeo ALL=(ALL) ALL”之间的区别
“ALL ALL=(ALL) NOPASSWD:ALL”已自动添加到我的 /etc/sudoers 文件中。这是安全漏洞吗?
答案1
从联机帮助页:
保留字全部是一个内置的别名这总是导致匹配成功。它可以用在任何可能使用
Cmnd_Alias
、User_Alias
、Runas_Alias
或 的地方Host_Alias
。
因此,根据上下文,它可以是所有命令、所有用户或组、所有用户或组或所有主机。
例如:像这样的组
REGULARUSER ALL=(ALL) NOPASSWD: SHUTDOWN
意味着ALL
组中的用户REGULARUSER
有权访问Cmnd_Alias SHUTDOWN
.
是的,但“所有用户”并不是因为ALL
规则中存在任何内容。第一个ALL
是针对 的Host_Alias
,第二个ALL
是针对 的Runas_Alias
。这是因为User_List
并且Runas_List
可以包括组:
A
User_List
由一个或多个用户名、用户 ID(以 '#
' 为前缀)、系统组名称和 ID(分别以 '%
' 和 '%#
' 为前缀)、网络组(以 '+
' 为前缀)、非 Unix 组名和ID(分别以“%:
”和“%:#
”为前缀)和User_Aliases
.
和:
A
Runas_List
与 a 类似User_List
,只是User_Aliases
它可以包含Runas_Aliases
。
当User_list
包括一个组时,它意味着该组的所有成员,除非您通过否定排除特定成员。
换句话说,语法是:
Group \ Users \ Command Permission Specifications
。
一点也不。看EBNF 语法描述的联机帮助页,但大致是:
<user_list> <host_list> = (<runas_list>) <tags> <commands>
或者,从联机帮助页:
用户规范的基本结构是“who where=(as_whom)what”。