sudo 用户是 Linux 中的普通用户,具有执行管理任务的管理员或 root 权限。但是 Linux 系统默认的普通用户都不是 sudo 用户,root 用户需要手动将该用户添加到 wheel 用户组中,赋予该用户 sudo 权限。
Red Hat Enterprise Linux、Rocky Linux 和 Alma Linux 等 RHEL 发行版中,在安装过程中会创建一个名为 wheel 的组,它已经在系统的 sudoers 文件中定义。
# grep -i "^[%wheel]" /etc/sudoers
%wheel ALL=(ALL) ALL
#
当任何普通用户被添加到这个 wheel 组时,该用户将获得 sudo 权限,并可以通过在命令前使用 sudo 运行所有管理命令。
(1) 以 root 身份登录到系统
以 root 用户登录系统,如果已经以普通用户登录,请使用以下命令切换到 root 用户
$ su - root
(2) 使用 UserAdd 命令创建普通用户
在创建新的普通用户时,指定加入 wheel 用户组
# useradd -G wheel sysadm
使用 passwd 命令为新创建的用户指定密码
# echo "P@##DW0$Ds" | passwd sysadm --stdin
注意: 将密码字符串替换为你想要设置的密码
将现有普通用户添加到 wheel 用户组,使用以下命令
usermod -aG wheel <User_Name>
验证用户是否属于 wheel 用户组
# id sysadm
uid=1000(sysadm) gid=1000(sysadm) groups=1000(sysadm),10(wheel)
#
(3) 测试 sudo 用户
为了确认新创建的用户是否具有 sudo 权限,请运行几个 admin 命令,并且不要忘记在命令前输入 sudo
请先切换到普通用户或使用普通用户登录,然后执行如下命令
# su - sysadm
$ sudo whoami
[sudo] password for sysadm:
root
$
$ sudo dnf install -y net-tools
Above confirms that user has sudo rights and can run admin commands. If you have noticed carefully, we must specify password for executing admin commands via sudo. In case, you want to run sudo commands without password, then edit the sudoer files, comment out the line
上面输出证实用户具有 sudo 权限,可以运行管理命令。您也许已经注意到了,运行 sudo 管理命令的时候,我们必须输入密码。如果您想在没有密码的情况下运行 sudo 命令,需要编辑 sudoer 文件
注释掉这一行:
%wheel ALL=(ALL) ALL
取消注释这一行
%wheel ALL=(ALL) NOPASSWD: ALL
# vi /etc/sudoers
保存并退出文件
Alternate way to run sudo commands without password is that create a separate file with name like ‘sysadm’ under the directory ‘/etc/sudoers.d’ and add the following entry.
还有另外一种方法可以达到同样的目的,在 /etc/sudoers.d 目录下创建一个独立的配置文件,并添加以下内容:
User_Name ALL=(ALL) NOPASSWD: ALL
使用 echo 命令完成上述任务
$ su -
# echo -e "sysadm\tALL=(ALL)\tNOPASSWD: ALL" > /etc/sudoers.d/sysadm
# cat /etc/sudoers.d/sysadm
sysadm ALL=(ALL) NOPASSWD: ALL
#
现在我们通过 sudo 运行管理命令,它将不会提示输入密码。