`root ALL=(ALL:ALL) ALL` 和 `root ALL=(ALL) ALL` 之间有什么区别?

`root ALL=(ALL:ALL) ALL` 和 `root ALL=(ALL) ALL` 之间有什么区别?

这句话出自我的 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/lsoperator

 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”表示这些规则适用于所有命令。

相关内容