sudo
是一个命令行工具,它被设计为允许用户以其他用户(默认是 root 用户)身份去运行命令。
你有两个选项可以赋予一个用户 sudo 权限。第一个就是将用户添加到 sudoers 文件。这个文件包含了一些信息,这些信息定义了哪个用户和哪个用户组被授予了 sudo 权限,以及权限的级别。
第二个选项就是将用户添加到 sudo 用户组(定义在sudoers
文件中)。默认情况下,在基于 RedHat 的发行版中,例如 CentOS 和 Fedora 中,wheel
用户组成员被授予 sudo 权限。
在 CentOS 系统上授予一个用户 sudo 权限的最容易的方式就是,将该用户添加到wheel
用户组。所有这个用户组的成员,都能够通过sudo
命令,输入自己的用户密码后,运行所有的命令。
我们假定用户已经存在。如果你想创建一个新用户,你可以参考这个指南:https://linuxize.com/post/how-to-add-and-delete-users-on-centos-7/
想要将用户添加到用户组,以 root 或者其他 sudo 用户身份运行下面的命令。修改用户名username
为你想要授权的用户的用户名。
usermod -aG wheel username
通过这种方式提升 sudo 权限,适合大部分用户场景。
想要测试 sudo 访问,运行whoami
命令:
sudo whoami
你将会被提示输入密码。如果这个用户有 sudo 访问权限,命令将会打印root
:
root
如果你看到任何错误提示“user is not in the sudoers file”,它意味着这个用户没有 sudo 权限。
拥有 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
修改为你想要授权的用户名。
另外一个常用的例子,是允许用户仅仅能运行指定命令。例如,仅仅允许用户使用du
和ping
命令,你可以这样用: /etc/sudoers
username ALL=(ALL) NOPASSWD:/usr/bin/du,/usr/bin/ping
你可以不编辑 sudoer 文件,而在/etc/sudoers.d
文件夹下创建新文件来做同样的事情。运行下面的命令:
echo "username ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/username
这种方式使得 sudo 权限的管理更好维护。文件的名称并不重要。通常的做法是,将文件名称命名为用户的名称。
授予一个用户 sudo 权限很简单,你只需要将用户添加到wheel
用户组。