切勿使用普通文本编辑器编辑此文件!始终使用 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
本文翻译自: 原文链接