在sudoers文件中,您可以有以下任一行
modernNeo ALL=(ALL:ALL) ALL
modernNeo ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
我在这里查看了以下答案以了解这一点
如果我从上面的答案中正确理解,则(ALL:ALL)意味着您可以以任何用户和任何组的身份运行该命令,这(ALL)意味着您可以以任何用户的身份运行该命令,但您的组保持不变[它仍然是您自己的组],无论当您使用sudowithALL第三个条目时,您将成为用户?
但是随着 (ALL:ALL)
-g? root当您没有指定您想要成为的用户和/或组的偏好时,它是否只是恢复为用于用户和/或组?如果是这样,为什么要(ALL:ALL)在可以做的时候做(root:root)?此外,在这个 Ubuntu 论坛帖子中,关于以下几行
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
Run Code Online (Sandbox Code Playgroud)
他们说
admin 组中的用户可能会成为 root。sudo 组中的用户只能使用 sudo 命令。
例如,他们不能sudo su
(ALL:ALL)指(user:group)的是sudo将使用。可以使用-u和-g运行时指定它sudo。如果您未指定任何内容,它将作为 运行root:root,这是默认设置。无论如何,这就是大多数人最终使用它的方式。
这让我很困惑;他们说如果您在运行命令时可以接受任何组,那么您就无法成为 root?
ImH*_*ere 13
像这样的一行:
smith ALL=(ALL) ALL
Run Code Online (Sandbox Code Playgroud)
将允许用户 smith 使用 sudo 在任何计算机(第一个 ALL)上运行,就像任何用户(第二个 ALL,括号内的那个)一样运行任何命令(最后一个 ALL)。sudo 将允许此命令:
smith@site ~ $ sudo -u root -g root bash
Run Code Online (Sandbox Code Playgroud)
但这不会:
smith@site ~ $ sudo -u root -g smith bash
Run Code Online (Sandbox Code Playgroud)
由于尚未声明任何组的权限。
然而,这:
smith ALL=(ALL:ALL) ALL
Run Code Online (Sandbox Code Playgroud)
将允许执行此命令(假设用户tom和组sawyer存在):
smith@site ~ $ sudo -u tom -g sawyer bash
tom@site ~ $ id
uid=1023(tom) gid=1087(sawyer) groups=1047(tom),1092(sawyer)
Run Code Online (Sandbox Code Playgroud)
话说回来:
(ALL:ALL) 表示您可以以任何用户和任何组的身份运行该命令
是的
(ALL) 表示您可以以任何用户身份运行该命令
是的
但你的组保持不变[它仍然是你自己的组]
不,唯一允许的组是root。
sudo 如何决定你运行命令的组,就像你没有在命令行上使用 -g 指定它一样?
它默认为 root
它是否首先尝试将它作为您自己的组运行,然后在找到允许您运行命令的组之前查看计算机上所有组的列表?
不。
它从哪里获取组列表以及该列表中组的顺序是什么?
没有要使用的列表,没有要搜索的组,它root在*:ALL使用时简单地归为默认值,如果*:group使用则归为命名组。
简单的规则,简单的动作。
或者,当您没有指定要成为的用户和/或组的偏好时,它是否只是恢复为用户和/或组使用 root 用户?
是的。
如果是这种情况,为什么在可以执行 (root:root) 的情况下执行 (ALL:ALL) ?
因为使用 (ALL:ALL) 你可以:
sudo -u tom -g sawyer id
Run Code Online (Sandbox Code Playgroud)
但是使用 (root:root) 你只能这样做:
sudo -u root -g root id
Run Code Online (Sandbox Code Playgroud)
没有别的(用户和组明智)。
对于这些线路:
%admin ALL=(ALL) ALL
%sudo ALL=(ALL:ALL) ALL
Run Code Online (Sandbox Code Playgroud)
admin 组中的用户可能会成为 root。
是的,组中的用户 (%)admin可以成为任何用户(包括 root)(因为(ALL)),但只能成为root组。
sudo 组中的用户只能使用 sudo 命令。
那是不正确的。sudo 组中的用户可以执行任何命令(最后一个ALL)。
组(%)中的sudo用户可以成为任何用户((ALL:)部分)
和
任何组((:ANY)部分)
并且
可以执行任何命令(最后一个ALL)(不仅是 sudo,这是特别不正确的)。
例如,他们不能 sudo su
不,他们可以做sudo suorsudo ls或sudo anycommand。
(ALL:ALL) 指的是 sudo 将使用的 (user:group)。可以在运行 sudo 时使用 -u 和 -g 指定它。
他们在这里是正确的。该命令sudo -u tom -g sawyer ls正确有效。
如果您不指定任何内容,它将以 root:root 运行,这是默认设置。
并且在这里也是正确的。该命令sudo ls将在root:root权限下执行。
无论如何,这就是大多数人最终使用它的方式。
正确,最常用的 sudo 命令没有指定用户或组。
所以,它是“最常用的,无论如何”(默认root:root)。
这让我很困惑......他们说如果你在运行命令时可以接受任何组,
是的,他们声明(ALL:ALL)sudo 可以接受任何用户或组。
但:
那你就不能成为root了吗?
不,他们不是这么说的。
| 归档时间: |
|
| 查看次数: |
727 次 |
| 最近记录: |