第 8 章 管理 sudo 访问
			系统管理员可以授予 sudo 访问权限,以允许非 root 用户执行通常为 root 用户保留的管理命令。因此,非 root 用户可以执行此类命令,而无需登录到 root 用户帐户。
		
8.1. sudoers 中的用户授权 复制链接链接已复制到粘贴板!
				/etc/sudoers 文件指定哪些用户可以使用 sudo 命令来执行其他命令。规则可应用到单个用户和用户组。您还可以使用别名轻松地为主机组、命令,甚至用户定义规则。默认别名定义在 /etc/sudoers 文件的第一部分中。
			
				当用户为没有授权的用户输入带有 sudo 的命令时,系统会将包含字符串 <username> : user NOT in sudoers 的消息记录到日志中。
			
				默认的 /etc/sudoers 文件提供授权信息和示例。您可以通过取消相应行的注释来激活特定的示例规则。带有用户授权的部分标有以下介绍:
			
## Next comes the main part: which users can run what software on ## which machines (the sudoers file can be shared between multiple ## systems).
## Next comes the main part: which users can run what software on
## which machines  (the sudoers file can be shared between multiple
## systems).
				您可以使用以下格式创建新的 sudoers 授权并修改现有授权:
			
<username> <hostname.example.com>=(<run_as_user>:<run_as_group>) <path/to/command>
<username> <hostname.example.com>=(<run_as_user>:<run_as_group>) <path/to/command>
其中:
- 
						
<username>是输入命令的用户,如user1。如果该值以%开头,它定义一个组,例如%group1。 - 
						
<hostname.example.com>是应用规则的主机的名称。 - 
						
(<run_as_user>:<run_as_group>)部分 定义以其身份执行命令的用户或组。如果省略这个部分,<username>可以以 root 身份执行命令。 - 
						
<path/to/command>是命令的完整的绝对路径。您还可以通过在命令路径后面添加这些选项,将用户限制为仅使用特定的选项和参数执行命令。如果没有指定任何选项,用户可以使用带有所有选项的命令。 
				您可以通过将任何这些变量替换为 ALL,来将规则应用到所有用户、主机或命令。
			
					使用过于宽松的规则(如 ALL=(ALL) ALL ),所有用户都可以在所有主机上以所有用户的身份运行所有命令。这带来了严重的安全风险。
				
				您可以使用 ! 操作符来指定参数的反。例如,!root 指定除 root 以外的所有用户。请注意,允许特定的用户、组和命令比禁止特定的用户、组和命令更安全。这是因为允许规则还阻止新的未授权的用户或组。
			
					避免对命令使用负规则,因为用户可以通过使用 alias 命令重命名命令来克服此类规则。
				
				系统会从头到尾读取 /etc/sudoers 文件。因此,如果文件中包含用户的多个条目,则按顺序应用条目。如果值冲突,系统将使用最后匹配的项,即使它不是最具体的匹配。
			
				要在系统更新期间保留规则,并更轻松地修复错误,请在 /etc/sudoers.d/ 目录中创建新文件来输入新规则,而不是直接在 /etc/sudoers 文件中输入规则。当系统在 /etc/sudoers 文件中达到以下行时,会读取 /etc/sudoers.d 目录中的文件:
			
#includedir /etc/sudoers.d
#includedir /etc/sudoers.d
				请注意,此行开头的数字符号(#)是语法的一部分,并不意味着该行是一个注释行。该目录中文件的名称不能包含句点,也不能以波形符(~)结尾。