Page tree
Skip to end of metadata
Go to start of metadata

sudo是一个命令行程序,它允许被信任的用户以 root 或者其他用户身份去运行命令。

我们将会展示两种方式给用户进行 sudo 提权。第一种方式就是将用户添加到 sudoers 文件。这个文件包含了以下信息:

  • 控制哪些用户和用户组被授予 sudo 权限
  • sudo 权限级别

第二个选项就是将用户添加到在sudoers文件中的 sudo 用户组。默认情况下,基于 Debian 的发行版,例如 Ubuntu,Linux Mint,sudo 用户组的成员都拥有 sudo 权限。

将用户添加到 sudo 用户组

在 Ubuntu 上,最简单的授予一个用户 sudo 权限的方式就是将用户添加到“sudo”用户组。该组成员可以以 root 身份执行任何命令,并且在使用sudo命令,被提示时,使用他们自己的密码进行认证。

我们假定用户已经存在,如果你想要创建一个新用户,检查这篇指南

想要将用户添加到用户组,以 root 或者其他 sudo 用户身份运行下面的命令。确认你将“username”替换成你想要授权的用户名:

usermod -aG sudo username

通过这种方式授权 sudo 权限对大部分用户场景都很有效。

想要确保用户拥有 sudo 权限,运行whoami命令:

sudo whoami

你会被提示输入密码。如果用户有 sudo 权限,这个命令将会打印“root”:

root

如果你得到任何错误提示:“user is not in the sudoers file”,它代表这个用户没有 sudo 权限。

将用户添加到 sudoers 文件

用户和用户组的 sudo 权限被定义在文件/etc/sudoers文件。将一个用户添加到这个文件,允许你自定义访问命令以及配置自定义安全策略。

你可以通过修改 sudoers 文件或者在/etc/sudoers.d目录下创建配置文件来配置用户的 sudo 访问权限。目录下的所有文件都会被包含在 sudoers 文件中。

永远使用visudo来编辑/etc/sudoers文件。这个命令在保存文件时会检测文件的语法错误。如果有任何错误,文件就不会被保存。如果你使用一个文本编辑器编辑这个文件,一个语法错误,就可能导致你丢失 sudo 访问权限。

通常,visudo使用 vim 来打开/etc/sudoers文件。如果你没有用过 Vim,并且你想使用nano作为默认编辑器来编辑这个文件,运行:

EDITOR=nano visudo

比方说,你想允许用户在运行 sudo 命令时,不提示输入密码。想要这么做,你可以打开/etc/sudoers文件:

visudo

滚动到文件最后,并且添加下面的内容:

username  ALL=(ALL) NOPASSWD:ALL

保存文件,并且推出编辑器。不要忘记,将“username”修改成你想要授权的用户名。

还有一个典型的例子就是只允许用户通过 sudo 运行指定的命令。例如,想要只允许运行mkdirrmdir,你可以这样: /etc/sudoers

username ALL=(ALL) NOPASSWD:/bin/mkdir,/bin/rmdir

与其直接编辑 sudo 文件,你还可以通过在/etc/sudoers.d文件夹下创建同样的文件来完成这个需求。像添加到 sudoer 文件一样,添加同样的规则:

echo "username  ALL=(ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/username

这种方式会使得 sudo 权限管理更好维护。文件的名称并不重要。通常的做法就是,文件名和用户名一样。

总结

在 Ubuntu 上授权用户 sudo 权限很简单,你只需要将用户添加到“sudo”用户组。


Write a comment...