如何在 Linux 中将用户添加到 sudoers 文件

已发表: 2022-11-02
显示 bash 提示符的 Linux 笔记本电脑
fatmawati achmad zaenuri/Shutterstock.com
如果您被告知用户“不在 sudoers 文件中”,您可以使用 usermod 命令授予用户完整的 sudo 权限。 要控制用户可以使用 sudo 做什么,请使用 visudo 编辑 sudoers 文件。

可以使用 Linux sudo命令的人是一个小型精选俱乐部的成员,有时称为“sudoers”列表。 每个成员都拥有与root相同的权力。 那你怎么加入那个俱乐部? 我们将逐步向 sudoers 添加人员以及编辑 sudoers 文件以限制权限。

目录

sudo:你的超能改变自我
sudoers 文件和 visudo
在 Ubuntu 和其他 Linux 发行版中添加新的 sudo 用户
通过编辑 sudoers 文件限制 sudo 权限
持有此命令的人

sudo:你的超能改变自我

在 Linux 安装中,root 用户是最高权限的用户。 他们可以执行任何管理任务,访问任何文件,而不管它实际拥有它,他们可以创建、操作甚至删除其他用户。

这种程度的力量是危险的。 如果root犯了错误,结果可能是灾难性的。 他们有能力挂载和卸载文件系统,并完全覆盖它们。 一种更安全的工作方式是永远不要以root身份登录。

在 Ubuntu 上调整和配置 Sudo 的 8 种方法
相关在 Ubuntu 上调整和配置 Sudo 的 8 种方法

指定用户可以使用sudo临时获得管理权限,执行所需的操作,然后返回其正常的非特权状态。 这更安全,因为当你需要它们时,你有意识地调用你的更高权力,而你专注于做任何需要它们的事情。

sudo命令相当于 Linux 中的“Shazam”。 当可怕的事情结束时,你会放弃你超能力的另一个自我,回到你平常的单调自我。

在大多数现代发行版中,默认情况下以root身份登录是关闭的,但它可以恢复。 不建议使用 root 帐户进行日常工作。 通常会影响单个用户或由于权限不足而被完全阻止的错误,如果root发出它们,则可以不受阻碍地运行。

现代 Linux 发行版向在安装或安装后配置步骤期间创建的用户帐户授予sudo权限。 如果其他人尝试使用sudo ,他们将看到如下警告消息:

 Mary 不在 sudoers 文件中。 将报告此事件。

这似乎很简单。 我们的用户mary不能使用sudo ,因为她不在“sudoers 文件中”。 那么让我们看看如何添加她。

相关:如何在 Linux 上控制 sudo 访问

sudoers 文件和 visudo

在有人可以使用sudo命令之前,我们需要使用sudoers文件。 这列出了可以使用sudo的用户的用户组。 如果我们需要对文件进行修改,我们必须对其进行编辑。

sudoers文件必须使用visudo命令打开。 这会锁定sudoers文件并防止两个人同时尝试进行更改。 它还在保存您的编辑之前执行一些完整性检查,以确保它们正确解析并且在语法上是正确的。

请注意, visudo不是编辑器,它会启动您可用的编辑器之一。 在 Ubuntu 22.04、Fedora 37 和 Manjaro 21 上, visudo启动了 nano。 在您的计算机上可能并非如此。

如果我们想授予某人完全sudo权限,我们只需要引用sudoers文件中的一些信息。 如果我们想要更细化并为我们的用户提供一些root的功能,我们需要编辑文件并保存更改。

无论哪种方式,我们都需要使用visudo

相关:如何退出 Vi 或 Vim 编辑器

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

我们有两个用户需要访问 root 权限才能执行他们的工作角色。 他们是汤姆和玛丽。 Mary 需要访问root可以执行的所有操作。 汤姆只需要安装应用程序。

让我们先将 Mary 添加到 sudoers 组。 我们需要启动visudo

 须藤 visudo 

在 Ubuntu Linux 上启动 visudo

在编辑器中向下滚动,直到看到“用户权限规范”部分。 寻找类似于“允许该组的成员执行任何命令”的评论。

sudoers 文件在 nano 编辑器中打开

我们被告知sudo组的成员可以执行任何命令。 在玛丽的案例中,我们需要知道的只是该组的名称。 它并不总是sudo ; 它可能是wheel或其他东西。 现在我们知道组的名称,我们可以关闭编辑器并将 Mary 添加到该组。

如何在 Linux 上使用 chfn 和 usermod 更改用户数据
相关如何在 Linux 上使用 chfn 和 usermod 更改用户数据

我们使用带有-a (追加)和-G (组名)选项的usermod命令。 -G选项允许我们命名我们想要添加用户的组,并且-a选项告诉usermod将新组添加到该用户已经在的现有组列表中。

如果您不使用-a选项,则您的用户所在的唯一组是新添加的组。 仔细检查,并确保您已包含-a选项。

 sudo usermod -aG sudo mary 

使用 usermod 将用户 mary 添加到 sudo 组

下次 Mary 登录时,她将可以访问sudo 。 我们已经让她登录,并且正在尝试编辑文件系统表文件“/etc/fstab”。 这是一个除了root之外的所有人都无法访问的文件。

 须藤纳米 /etc/fstab 

使用 usermod 将用户 mary 添加到 sudo 组

nano 编辑器打开并加载了“/etc/fstab”文件。

用户 mary 使用 sudo 编辑 /etc/fstab 文件

如果没有sudo权限,您只能将其作为只读文件打开。 玛丽不再有这些限制。 她可以保存所做的任何更改。

关闭编辑器,不要保存您所做的任何更改。

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

我们的另一个用户 Tom 将被授予安装软件的权限,但他不会获得授予 Mary 的所有权限。

我们需要编辑sudoers文件。

 须藤 visudo 

在 Ubuntu Linux 上启动 visudo

在编辑器中向下滚动,直到看到“用户权限规范”部分。 寻找类似于“允许该组的成员执行任何命令”的评论。 在文件中我们找到需要将 Mary 添加到的组的名称的位置相同。

在该部分下方添加这些行。

 # 用户tom可以安装软件
汤姆所有=(根)/usr/bin/apt 

向 sudoers 文件添加新条目

第一行是一个简单的注释。 请注意,用户名“tom”和单词“All”之间有一个制表符。

这就是线路上的项目的含义。

  • tom :用户默认组的名称。 通常这与其用户帐户的名称相同。
  • ALL= :此规则适用于该网络上的所有主机。
  • (root) :“tom”组的成员(即用户 Tom)可以为列出的命令承担root权限。
  • /usr/bin/apt :这是用户 Tom 可以以root身份运行的唯一命令。

我们在这里指定了apt包管理器,因为这台计算机使用的是 Ubuntu Linux。 如果您使用不同的发行版,则需要用适当的命令替换它。

让我们登录 Tom,看看我们是否得到了预期的行为。 我们将尝试编辑“/etc/fstab”文件。

 须藤纳米 /etc/fstab 

试图在没有 sudo 权限的情况下编辑 /etc/fstab 文件

该命令被拒绝,我们被告知“不允许用户 tom 以 root 身份执行 '/usr/bin/nano /etc/fstab' ...”

这就是我们想要的。 用户 Tom 应该只能使用apt包管理器。 让我们确保他们能做到这一点。

 sudo apt install neofetch 

用户 Tom 使用 apt 命令和 sudo

该命令已为 Tom 成功执行。

持有此命令的人

如果您的所有用户都可以使用sudo ,那么您将手头上的混乱。 但是值得推广其他用户,这样他们就可以分担您的管理负担。 只要确保他们是有价值的,并密切关注他们。

即使您是计算机上的唯一用户,也值得考虑创建另一个用户帐户并为其提供对sudo的完全访问权限。 这样,如果您发现自己被锁定在主帐户之外,您可以使用另一个帐户登录以尝试纠正这种情况。

相关:如何在 Linux 上查看 sudo 命令用法