RHEL9 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).
您可以使用以下格式创建新授权和修改现有授权:sudoers
<username> <hostname.example.com>=(<run_as_user>:<run_as_group>) <path/to/command>
哪里:
<username>
是输入命令的用户,例如 。如果值以 开头,则它定义一个组,例如 .user1
%
%group1
<hostname.example.com>
是应用规则的主机的名称。- 该部分定义执行命令的用户或组。如果省略此部分,可以 root 身份执行命令。
(<run_as_user>:<run_as_group>)
<username>
<path/to/command>
是命令的完整绝对路径。您还可以通过在命令路径后添加这些选项,将用户限制为仅执行具有特定选项和参数的命令。如果未指定任何选项,则用户可以将命令与所有选项一起使用。
您可以将规则应用于所有用户、主机或命令,方法是将这些变量中的任何一个替换为 。ALL
使用过于宽松的规则(如 ),所有用户都可以在所有主机上以所有用户的身份运行所有命令。这会带来严重的安全风险。ALL ALL=(ALL) ALL
您可以使用 运算符 否定地指定参数。例如,指定除 root 之外的所有用户。请注意,允许特定用户、组和命令比禁止特定用户、组和命令更安全。这是因为允许规则还会阻止新的未经授权的用户或组。!
!root
避免对命令使用否定规则,因为用户可以通过使用命令重命名命令来克服此类规则。alias
系统从头到尾读取文件。因此,如果文件包含用户的多个条目,则按顺序应用这些条目。如果值发生冲突,系统将使用最后一个匹配项,即使它不是最具体的匹配项。/etc/sudoers
要在系统更新期间保留规则并更轻松地修复错误,请通过在目录中创建新文件来输入新规则,而不是直接向文件输入规则。当系统到达文件中的以下行时,系统会读取目录中的文件:/etc/sudoers.d/
/etc/sudoers
/etc/sudoers.d
/etc/sudoers
#includedir /etc/sudoers.d
请注意,此行开头的数字符号 () 是语法的一部分,并不意味着该行是注释。该目录中的文件名不能包含句点,也不能以波浪号 () 结尾。