如果您被告知用户“不在 sudoers 文件中”,您可以使用 usermod 命令授予用户完整的 sudo 权限。要控制用户可以使用 sudo 做什么,请使用 visudo 编辑 sudoers 文件。 可以使用 Linuxsudo命令的人是一个小型精选俱乐部的成员,有时称为“sudoers”列表。每个成员都拥有与 相同的权力root。那你怎么加入那个俱乐部?我们将逐步向 sudoers 添加人员以及编辑 sudoers 文件以限制权限。 如何在Linux中将用户添加到sudoers文件

sudo:你的超能改变自我

在 Linux 安装中,root 用户是最高权限的用户。他们可以执行任何管理任务,访问任何文件(无论其实际拥有者),并且可以创建、操作甚至删除其他用户 这种程度的力量是危险的。如果root犯了错误,结果可能是灾难性的。他们有能力挂载和卸载文件系统,并完全覆盖它们。一种更安全的工作方式是永远不要以root. 指定的用户可以sudo用来临时获得管理权限,执行所需的操作,然后返回到正常的非特权状态。这更安全,因为当你需要它们时,你有意识地调用你的更高权力,而你专注于做任何需要它们的事情。
sudo命令相当于 Linux 中的“ Shazam ”。当可怕的事情结束时,你会放弃你超能力的另一个自我,回到你平常的单调自我。 在大多数现代发行版中,默认情况下以身份登录root是关闭的,但可以恢复它。不建议使用 root 帐户进行日常工作。通常会影响单个用户或由于权限不足而被完全阻止的错误,如果出现这些错误,则可以不受阻碍地运行root
现代 Linux 发行版向sudo在安装或安装后配置步骤期间创建的用户帐户授予权限。如果其他人尝试使用sudo,他们将看到如下警告消息:
Mary 不在 sudoers 文件中。将报告此事件。
这似乎很简单。我们的用户mary不能使用sudo,因为她不在“sudoers 文件中”。那么让我们看看如何添加她。

sudoers 文件和 visudo

在有人可以使用该sudo命令之前,我们需要使用该sudoers文件。这列出了可以使用的用户的用户组sudo。如果我们需要对文件进行修改,我们必须对其进行编辑。 该sudoers文件 必须 使用visudo命令打开。这会锁定sudoers文件并防止两个人同时尝试进行更改。它还在保存您的编辑之前执行一些完整性检查,以确保它们正确解析并且在语法上是正确的。 请注意,visudo它不是编辑器,它会启动您可用的编辑器之一。在 Ubuntu 22.04、Fedora 37 和 Manjaro 21 上,visudo启动了 nano。在您的计算机上可能并非如此。 如果我们想授予某人完全sudo权限,我们只需要从sudoers文件中引用一些信息。如果我们想要更细化并为我们的用户提供一些 的功能root,我们需要编辑文件并保存更改。 无论哪种方式,我们都需要使用visudo.

在 Ubuntu 和其他 Linux 发行版中添加新的 sudo 用户

我们有两个用户需要访问 root 权限才能执行他们的工作角色。他们是汤姆和玛丽。玛丽需要能够访问所有root可以做的事情。汤姆只需要安装应用程序。 让我们先将 Mary 添加到 sudoers 组。我们需要开始visudo
sudo visudo
如何在Linux中将用户添加到sudoers文件 在编辑器中向下滚动,直到看到“用户权限规范”部分。寻找类似于“允许该组的成员执行任何命令”的评论。 如何在Linux中将用户添加到sudoers文件 我们被告知该sudo组的成员可以执行任何命令。在玛丽的案例中,我们需要知道的只是该组的名称。并非总是如此sudo ;它可能是wheel或其他的东西。现在我们知道组的名称,我们可以关闭编辑器并将 Mary 添加到该组。 我们使用usermod带有-a(append) 和-G(group name) 选项的命令。该-G选项允许我们命名我们想要将用户添加到的组,并且该-a选项告诉usermod将新组添加到该用户已经在的现有组列表中。 如果您不使用该-a选项,则您的用户所在的唯一组是新添加的组。仔细检查,并确保您已包含该-a选项。
sudo usermod -aG sudo mary
如何在Linux中将用户添加到sudoers文件 下次 Mary 登录时,她将有权访问sudo. 我们已经让她登录,并且正在尝试编辑文件系统表文件“/etc/fstab”。这是一个除了 root.
sudo nano /etc/fstab
如何在Linux中将用户添加到sudoers文件 nano 编辑器打开并加载了“/etc/fstab”文件。 如何在Linux中将用户添加到sudoers文件 如果没有sudo权限,您只能将其作为只读文件打开。玛丽不再有这些限制。她可以保存所做的任何更改。 关闭编辑器,不要保存您所做的任何更改。

通过编辑 sudoers 文件限制 sudo 权限

我们的另一个用户 Tom 将被授予安装软件的权限,但他不会获得授予 Mary 的所有权限。 我们需要编辑sudoers文件。
sudo visudo
如何在Linux中将用户添加到sudoers文件 在编辑器中向下滚动,直到看到“用户权限规范”部分。寻找类似于“允许该组的成员执行任何命令”的评论。在文件中我们找到需要将 Mary 添加到的组的名称的位置相同。 在该部分下方添加这些行。
# 用户 tom 可以安装软件
tom ALL=(root) /usr/bin/apt
如何在Linux中将用户添加到sudoers文件 第一行是一个简单的注释。请注意,用户名“tom”和单词“All”之间有一个制表符。 这就是线路上的项目的含义。
  • tom:用户 默认组的名称。通常这与其用户帐户的名称相同。
  • ALL=:此规则适用于该网络上的所有主机。
  • (root):“tom”组的成员(即用户 Tom)可以root为列出的命令承担特权。
  • /usr/bin/apt:这是用户 Tom 可以运行的唯一命令root
我们在apt这里指定了包管理器,因为这台计算机使用的是 Ubuntu Linux。如果您使用不同的发行版,则需要用适当的命令替换它。 让我们登录 Tom,看看我们是否得到了预期的行为。我们将尝试编辑“/etc/fstab”文件。
sudo nano /etc/fstab
如何在Linux中将用户添加到sudoers文件 该命令被拒绝,我们被告知“不允许用户 tom 以 root 身份执行 '/usr/bin/nano /etc/fstab' ...” 这就是我们想要的。用户 Tom 应该只能使用apt包管理器。让我们确保他们能做到这一点。
sudo apt install neofetch
如何在Linux中将用户添加到sudoers文件 该命令已为 Tom 成功执行。

持有此命令的人

如果您的所有用户都可以使用sudo,那么您将面临混乱。但是值得推广其他用户,这样他们就可以分担您的管理负担。只要确保他们是有价值的,并密切关注他们 即使您是计算机上的唯一用户,也值得考虑创建另一个用户帐户并为其授予对sudo. 这样,如果您发现自己被锁定在主帐户之外,您可以使用另一个帐户登录以尝试纠正这种情况。