这句话出自我的 Ubuntu 14.04
root ALL=(ALL:ALL) ALL
第三个是什么意思ALL
?
上面这一行和 有什么区别root ALL=(ALL) ALL
?
答案1
虽然sudoers
手册页可能会有点令人生畏,下面给出一些例子来帮助澄清事实:
dgb boulder = (operator) /bin/ls, (root) /bin/kill, /usr/bin/lprm
然后用户
dgb
现在被允许以/bin/ls
身份运行operator
,但/bin/kill
以/usr/bin/lprm
身份运行root
。我们可以扩展它以允许以用户或组设置为
dgb
运行:/bin/ls
operator
dgb boulder = (operator : operator) /bin/ls, (root) /bin/kill,\ /usr/bin/lprm
我们可以推断,给定sudoers
如下形式的一行:
A B = (C:D) E
D
指的是可以使用的组。
因此第三条ALL
指定用户可以在任何组下运行该命令。
如果(ALL)
指定了 而不是(ALL:ALL)
,则该用户sudo
不能将 和 用于下列命令:-g
Runas_Spec
A Runas_Spec determines the user and/or the group that a command may
be run as. ... The second defines a list of groups that
can be specified via `sudo`'s `-g` option. If both Runas_Lists are
specified, the command may be run with any combination of users and
groups listed in their respective Runas_Lists. If only the first is
specified, the command may be run as any user in the list but no `-g`
option may be specified.
(以上示例来自同一节。)
答案2
发现了一个有趣的文档
根 ALL=(全部:全部) 全部
第一个字段表示该规则将应用到的用户名
(root)。第一个“ALL”表示该规则适用于所有主机。
第二个“ALL”表示root用户可以以所有
用户的身份运行命令。第三个“ALL”表示root用户可以以所有
组的身份运行命令。第四位“ALL”表示这些规则适用于所有命令。