sudoers 文件具有以下行:
root ALL=(ALL) ALL
我读到第一个字段是用户。那么第一个ALL
是所有终端,(ALL)
意味着任何用户,最后一个ALL
意味着任何命令。
当 sudoers 文件中没有这一行时会发生什么?那么 root 就不能做任何事情了吗?
username ALL= /bin/passwd
像这样,是否可以解释为“用户名”可以从所有终端运行 passwd可以给出什么值来代替first
ALL
?
答案1
该
sudoers
文件仅控制sudo
可能的调用。允许root
执行任何操作的行sudo
通常并不有用,因为 root 永远不会需要sudo
为了任何东西。它更方便:这样您就可以编写可以由 root 或其他 sudoers 随意调用的脚本,并且可以调用sudo
来提升权限。username ALL = /bin/passwd
允许用户passwd
在任何机器上运行命令(以及在任何终端上 - sudo 不关心这一点)。 Sudo 允许在文件中使用计算机名称sudoers
,以便您可以在sudoers
不修改的情况下将文件部署到网络中的所有计算机,并且仍然有一些仅适用于某些计算机的规则。在第二个位置,您可以有一个主机列表(
Host_List
在sudoers
手册中)。这是一个以逗号分隔的主机名列表。您可以使用别名(有关详细信息,请参阅手册)、IP 地址或指定子网的各种方式(有关详细信息,请参阅手册)来代替主机名。
该sudoers
手册读起来并不容易,但最后有一个很好的示例列表。我建议您先阅读该部分。
答案2
Nosudo
实际上对 root 用户没有任何权力。如果 root 运行前缀为 的命令,则该行就会出现sudo
。该规则允许 root 执行此操作。
sudo
它实际上更像是一种保护,因此在脚本中可能包含前缀为.的命令的情况下,root 不会被阻止。
顺便说一句,您阅读的规则如下:
root ALL=(ALL) ALL
这意味着:让 root 以任何用户身份在任何主机上运行任何命令。因此,从某种意义上说,如果您要将其从一个系统移动到另一个系统,则该规则是可移植的,因为它没有提及将 root 限制到特定主机,或者通过 sudo 以任何方式限制 root。