切勿使用普通文本编辑器编辑此文件!始终使用 visudo 命令!

由于 /etc/sudoers 文件中的语法不正确会导致系统无法获得提升的权限,因此使用 visudo 命令编辑文件非常重要。

visudo 命令会打开一个文本编辑器,并在保存时验证文件的语法。这可以防止 sudo 操作的配置错误,这是获取 root 权限的唯一方法。

我已经从 Ubuntu 16.04 复制并粘贴了该文件,并删除了注释。CentOS /etc/sudoers 文件有更多行,其中一些我们将不在本指南中讨论。

Defaults        env_reset
Defaults        mail_badpass
Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

root    ALL=(ALL:ALL) ALL

%admin  ALL=(ALL) ALL
%sudo   ALL=(ALL:ALL) ALL

#includedir /etc/sudoers.d

我们来看看这些行的作用。

默认行

第一行 Defaults env_reset 重置终端环境以删除任何用户变量。这是一种安全措施,用于清除sudo会话中可能有害的环境变量。

第二行 Defaults mail_badpass 告诉系统将错误 sudo 密码尝试的通知邮寄给配置的 mailto 用户。默认情况下,这是 root 帐户。

第三行以 Defaults secure_path = ... 开头,指定PATH将用于操作的(文件系统中操作系统将查找应用程序的位置)sudo。这可以防止使用可能有害的用户路径。

用户权限行

第四行决定了 root 用户的 sudo 权限,与前面的行不同。我们来看看不同字段的含义:

root ALL=(ALL:ALL) ALL
第一个字段指示规则将应用于 root 的用户名。

demo ALL=(ALL:ALL) ALL
第一个 ALL 表示此规则适用于所有主机。

demo ALL=(ALL:ALL) ALL
此 ALL 表示root用户可以作为所有用户运行命令。

demo ALL=(ALL:ALL) ALL
此 ALL 表示root用户可以作为所有组运行命令。

demo ALL=(ALL:ALL) ALL
最后一个 ALL 表示这些规则适用于所有命令。

这意味着我们的root用户可以使用任何命令运行sudo,只要他们提供密码即可。

组权限行

接下来的两行与用户权限行类似,但它们指定sudo了组的规则。

以“%”开头的名称表示组名。

在这里,我们看到“admin”组可以像任何主机上的任何用户一样执行任何命令。同样,该 sudo 组可以具有相同的权限,但也可以作为任何组执行。

包含 /etc/sudoers.d 行

乍一看,最后一行看起来像是注释:

#includedir /etc/sudoers.d

它虽然以 # 开头,但是这是起作用的。该行实际上表明 /etc/sudoers.d 目录中的文件也将被应用。

/etc/sudoers 文件本身一样,您应始终使用 visudo 来编辑 /etc/sudoers.d 目录中的文件。编辑这些文件的语法是:

$ sudo visudo -f /etc/sudoers.d/file_to_edit

本文翻译自: 原文链接

发表评论