sudo
是一个命令行工具,它允许被信任用户以另外一个用户身份运行命令,默认是 root 用户。
这篇文章演示两种方式,给用户提升 sudo 权限。第一件事就是将用户添加到 sudoers 文件。这个文件包含一系列规则,决定哪些用户或者群组可以获得 sudo 授权,和权限级别一样。第二个选项就是将用户添加到sudoers
文件中的 sudo 组。默认情况下,在 Debian 和它的衍生版本中,“sudo”组的成员获得 sudo 访问许可。
将用户添加到 sudo 用户组
给用户授权 sudo 权限的最快捷的方式就是将用户添加到“sudo”用户组。 该组的成员,在输入sudo
后,在系统提示输入密码时输入用户密码,切换到 root 用户,就可以 root 用户身份执行任何命令了。
我们假设你想要加入用户组的用户已经存在。
以 root 或者其他 sudo 用户的身份运行以下命令,可以将用户添加到 sudo 用户组。
usermod -aG sudo username
复制
确认你要已经修改了“username”为你想要授权的用户的用户名。
大部分情况下,通过这种方式授权 sudo 访问权限是有效的。
为了确保用户已经被添加到用户组,输入:
sudo whoami
复制
你将会被系统提示输入密码。如果用户有 sudo 访问权限,这个命令将会打印"root”。 否则,你会得到错误提示“该用户不在 sudoers 文件”。
将用户添加到 sudoers 文件
用户和用户组的 sudo 权限都定义在/etc/sudoers
文件中。这个文件允许你提升访问权限和自定义安全策略。
你可以通过编辑 sudoers 文件或者在/etc/sudoers.d
文件夹下创建一个新的配置文件来进行配置。这个文件夹下的文件会被包含在 sudoers 文件中。
通常使用visudo
命令来编辑/etc/sudoers
文件。当你保存时,这个命令会检查文件的语法错误。如果有任何错误,文件将不会被保存。如果你使用一个正常的文本编辑器编辑这个文件,一个语法错误可能就会让你丧失 sudo 访问权限。
visudo
使用系统环境变量EDITOR
指定的编辑器,默认是 VIM。 如果你想使用 nano 编辑文件,你可以修改这个变量:
EDITOR=nano visudo
复制
如果你希望用户输入 sudo 时,系统不提示输入密码。为了实现这个,打开/etc/sudoers
文件:
visudo
复制
滑动到文件最后面,并且添加下列行:
username ALL=(ALL) NOPASSWD:ALL
复制
保存文件,并且推出编辑器。不要忘记将“username”修改为你想要修改访问权限的用户名。
另外一个典型的例子就是允许用户通过sudo
仅仅只能运行指定命令。 例如,允许用户只能使用mkdir
和rmdir
命令,你可以使用:
username ALL=(ALL) NOPASSWD:/bin/mkdir,/bin/rmdir
复制
除了直接便捷 sudoers 文件,你也可以通过在/etc/sudoers.d
文件夹下创建一个新文件,添加授权规则来实现同样的目标。将同样的规则添加到这个新创建的 sudoers 文件:
echo "username ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/username
复制
这种方式使得 sudo 权限管理变得很好维护。这个文件的名字并不重要,但是在实践中我们通常根据用户名来命名该文件。