sudo 主机字段:它有什么用?

sudo 主机字段:它有什么用?

的语法sudo

user ALL=(ALL) ALL由此:

第一个字段是可以执行的用户sudo

sudo第三个字段是可以进入的用户

第四个字段是可以执行的命令sudo

第二名sudo字段用于放置可以运行的主机。

===================================

我不明白使用第二名场地。我们如何sudo在主机 A 上启用以便在另一台主机 B 上使用?

答案1

第二名全部= 在所有主机上(如果您将同一sudoers文件分发到多台计算机)

答案2

sudoers 语法的完整规范比你列出的更复杂。主机规范只是告诉 sudo 用户可以在哪些主机上运行这些命令。如果主机规范是“ALL”,正如手册页所述:

保留字 ALL 是一个内置别名,始终会导致匹配成功。它可以用在任何可能使用 Cmnd_Alias、User_Alias、Runas_Alias 或 Host_Alias 的地方。

sudo 只关心本地主机上的 sudo 规则;如果您运行连接到另一台主机的命令,则处理会从那里重新开始。

您可能会感到困惑的是看到多个主机的 sudoers 配置;适用于特定主机的唯一规则集是具有该主机名和“ALL”的规则。

答案3

所以第二个字段实际上仍然只适用于本地系统,对吗?它不允许主机 A 上的用户在另一个权限上执行 sudo 吗? - 小白

是的。该文件并不是所有主机都使用的单个副本,它的复制次数与主机的数量相同。制作单个 sudoers 文件然后将其副本提供给多个主机会更容易。

举一个实际的例子,假设您有几十台服务器,它们共享 80% 的 sudoers 配置,但每台服务器都有一些特殊的配置。通过使用主机列表,您可以为每个主机提供相同的 sudoers 文件(例如,使用 Ansible 为所有这些主机提供该文件的副本),同时仍然具有适当的每主机配置。

您应该搜索单词host_listin man sudoers,您会在那里看到 EBNF。根据 sudoers 手册页,它们是“逗号分隔的”,可以使用主机名、IP 地址、具有可选网络掩码的网络、网络组或主机别名。

Host_List ::= Host |
        Host ',' Host_List

Host ::= '!'* host name |
   '!'* ip_addr |
   '!'* network(/netmask)? |
   '!'* +netgroup |
   '!'* Host_Alias

相关内容