RHEL允许非特权用户运行某些命令
作为管理员,您可以通过在目录中配置策略来允许非特权用户在特定工作站上输入某些命令。这比向用户授予完全访问权限或向某人提供 root 密码更安全,原因如下:/etc/sudoers.d/
sudo
- 对特权作进行更精细的控制。您可以允许用户在特定主机上执行某些作,而不是授予他们完全管理访问权限。
- 更好的日志记录。当用户通过 执行作时,将使用其用户名记录该作,而不仅仅是 root。
sudo
- 透明控制。您可以为用户每次尝试使用权限时设置电子邮件通知。
sudo
先决条件
- 您拥有系统的 root 访问权限。
程序
-
以 root 身份在 下创建一个新目录:
sudoers.d
/etc/
# mkdir -p /etc/sudoers.d/
-
在目录中创建一个新文件:
/etc/sudoers.d
# visudo -f /etc/sudoers.d/<filename>
文件将自动打开。
-
将以下行添加到文件中:
/etc/sudoers.d/<filename>
<username> <hostname.example.com> = (<run_as_user>:<run_as_group>) <path/to/command>
- 替换为用户的名称。
<username>
- 替换为主机的 URL。
<hostname.example.com>
- 替换为可以执行命令的用户或组。如果省略此部分,可以 root 身份执行命令。
(<run_as_user>:<run_as_group>)
<username>
- 替换为命令的完整绝对路径。您还可以通过在命令路径后添加这些选项,将用户限制为仅执行具有特定选项和参数的命令。如果未指定任何选项,则用户可以将命令与所有选项一起使用。
<path/to/command>
-
要允许同一主机上的两个或多个命令位于一行中,您可以列出它们,用逗号后跟空格分隔。
例如,要允许在 上执行 和 命令,请输入 。
user1
dnf
reboot
host1.example.com
user1 host1.example.com = /bin/dnf, /sbin/reboot
- 替换为用户的名称。
-
可选: 要在用户每次尝试使用权限时都发送电子邮件通知,请将以下行添加到文件中:
sudo
Defaults mail_always Defaults mailto="<email@example.com>"
- 保存更改,然后退出编辑器。
验证
-
要验证用户是否可以使用权限运行命令,请切换帐户:
sudo
# su <username> -
-
作为用户,输入命令和命令:
sudo
$ sudo <command> [sudo] password for
<username>
:输入用户的密码。
sudo
-
如果权限配置正确,系统将显示命令和选项列表。例如,使用该命令,它将显示以下输出:
dnf
... usage: dnf [options] COMMAND ...
如果系统返回错误消息 ,则 in 的文件不存在。
<username> is not in the sudoers file. This incident will be reported
<username>
/etc/sudoers.d/
如果系统返回错误消息 ,则配置未正确完成。确保您以 root 用户身份登录,并且配置已正确执行。
<username> is not allowed to run sudo on <host.example.com>
如果系统返回错误消息 ,则未在用户的规则中正确定义命令。
Sorry, user <username> is not allowed to execute '<path/to/command>' as root on <host.example.com>.