sudo 是一个命令行实用程序,旨在允许受信任的用户以另一个用户(默认情况下是 root 用户)身份运行命令。
要授予用户 sudo 访问权限,您有两个选项。第一个是将用户添加到 sudoers 文件。此文件包含定义哪些用户和组被授予 sudo 权限以及权限级别的信息。
第二个选项是将用户添加到 sudoers 文件中定义的 sudo 组。默认情况下,在基于 RedHat 的发行版(如 CentOS 和 Fedora) 上, “wheel” 组的成员被授予 sudo 权限。
我们将在下面解释这两个选项。
将用户添加到 wheel 组
在 CentOS 上向用户授予 sudo 权限的最简单方法是将用户添加到 “wheel” 组。该组的成员将能够通过 sudo 运行所有命令,使用时 sudo 会提示用密码验证自己。
我们假设用户已经存在。如果要创建新用户,请查看本指南。
要将用户添加到组,请以 root 或其他 sudo 用户身份运行以下命令。将 “username” 更改为您要授予其权限的用户的名称。
usermod -aG wheel username
对于大多数用例,使用此方法授予 sudo 访问权限已足够。
要测试 sudo 访问权限,请切换到用户:
su - username
运行 whoami 命令:
如果用户有 sudo 访问权限,该命令将打印 “root” :
root
如果您收到错误消息 “user is not in the sudoers file”,则表示该用户没有 sudo 权限。
将用户添加到 sudoers 文件
用户和组 sudo 权限会配置在 /etc/sudoers 文件中。将用户添加到此文件允许您授予对命令的自定义访问权限,并为用户配置自定义安全策略。
您可以通过修改 sudoers 文件或在 /etc/sudoers.d 目录中创建新配置文件来配置用户 sudo 访问权限。此目录中的文件会被包含在 sudoers 文件中。
要编辑 /etc/sudoers 文件,请使用 visudo 命令。保存时,此命令将检查文件是否存在语法错误。如果有任何错误,则不会保存文件。如果使用文本编辑器打开文件,语法错误可能会导致丢失 sudo 访问权限。
通常, visudo 会使用 vim 打开 /etc/sudoers 。如果您没有使用 vim 的经验,并且想要使用 nano 编辑文件,请输入以下命令:
EDITOR=nano visudo
假设您希望允许用户在不要求输入密码的情况下运行 sudo 命令。打开 /etc/sudoers 文件:
visudo
向下滚动到文件末尾并添加以下行:
username ALL=(ALL) NOPASSWD:ALL
保存文件并退出编辑器。不要忘记使用您要授予访问权限的用户名更改上面的 username 。
另一个常见示例是允许用户仅仅能通过 sudo 运行特定的命令。例如,要仅允许使用的 du 和 ping 命令:
请编辑 /etc/sudoers 文件
username ALL=(ALL) NOPASSWD:/usr/bin/du,/usr/bin/ping
您也可以通过在 /etc/sudoers.d 目录中创建具有授权规则的新文件来实现相同的操作,而不是编辑 sudoers 文件。运行以下命令添加与上面相同的规则:
echo "username ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/username
这种方法使得 sudo 权限的管理更易于维护。文件名不重要,通常的做法是将文件名与用户名相同。
结论
在 CentOS 或者其他基于 RedHat 的发行版中,授予用户 sudo 访问权限是一项简单的任务,您只需将用户添加到 “wheel” 组即可。