如何在 Linux 中将用户添加到 sudoers 文件
已发表: 2022-11-02 可以使用 Linux sudo
命令的人是一个小型精选俱乐部的成员,有时称为“sudoers”列表。 每个成员都拥有与root
相同的权力。 那你怎么加入那个俱乐部? 我们将逐步向 sudoers 添加人员以及编辑 sudoers 文件以限制权限。
sudo:你的超能改变自我
sudoers 文件和 visudo
在 Ubuntu 和其他 Linux 发行版中添加新的 sudo 用户
通过编辑 sudoers 文件限制 sudo 权限
持有此命令的人
sudo:你的超能改变自我
在 Linux 安装中,root 用户是最高权限的用户。 他们可以执行任何管理任务,访问任何文件,而不管它实际拥有它,他们可以创建、操作甚至删除其他用户。
这种程度的力量是危险的。 如果root
犯了错误,结果可能是灾难性的。 他们有能力挂载和卸载文件系统,并完全覆盖它们。 一种更安全的工作方式是永远不要以root
身份登录。
指定用户可以使用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
在编辑器中向下滚动,直到看到“用户权限规范”部分。 寻找类似于“允许该组的成员执行任何命令”的评论。
我们被告知sudo
组的成员可以执行任何命令。 在玛丽的案例中,我们需要知道的只是该组的名称。 它并不总是sudo
; 它可能是wheel
或其他东西。 现在我们知道组的名称,我们可以关闭编辑器并将 Mary 添加到该组。
我们使用带有-a
(追加)和-G
(组名)选项的usermod
命令。 -G
选项允许我们命名我们想要添加用户的组,并且-a
选项告诉usermod
将新组添加到该用户已经在的现有组列表中。
如果您不使用-a
选项,则您的用户所在的唯一组是新添加的组。 仔细检查,并确保您已包含-a
选项。
sudo usermod -aG sudo mary
下次 Mary 登录时,她将可以访问sudo
。 我们已经让她登录,并且正在尝试编辑文件系统表文件“/etc/fstab”。 这是一个除了root
之外的所有人都无法访问的文件。
须藤纳米 /etc/fstab
nano 编辑器打开并加载了“/etc/fstab”文件。
如果没有sudo
权限,您只能将其作为只读文件打开。 玛丽不再有这些限制。 她可以保存所做的任何更改。
关闭编辑器,不要保存您所做的任何更改。
通过编辑 sudoers 文件限制 sudo 权限
我们的另一个用户 Tom 将被授予安装软件的权限,但他不会获得授予 Mary 的所有权限。
我们需要编辑sudoers
文件。
须藤 visudo
在编辑器中向下滚动,直到看到“用户权限规范”部分。 寻找类似于“允许该组的成员执行任何命令”的评论。 在文件中我们找到需要将 Mary 添加到的组的名称的位置相同。
在该部分下方添加这些行。
# 用户tom可以安装软件 汤姆所有=(根)/usr/bin/apt
第一行是一个简单的注释。 请注意,用户名“tom”和单词“All”之间有一个制表符。
这就是线路上的项目的含义。
- tom :用户默认组的名称。 通常这与其用户帐户的名称相同。
- ALL= :此规则适用于该网络上的所有主机。
- (root) :“tom”组的成员(即用户 Tom)可以为列出的命令承担
root
权限。 - /usr/bin/apt :这是用户 Tom 可以以
root
身份运行的唯一命令。
我们在这里指定了apt
包管理器,因为这台计算机使用的是 Ubuntu Linux。 如果您使用不同的发行版,则需要用适当的命令替换它。
让我们登录 Tom,看看我们是否得到了预期的行为。 我们将尝试编辑“/etc/fstab”文件。
须藤纳米 /etc/fstab
该命令被拒绝,我们被告知“不允许用户 tom 以 root 身份执行 '/usr/bin/nano /etc/fstab' ...”
这就是我们想要的。 用户 Tom 应该只能使用apt
包管理器。 让我们确保他们能做到这一点。
sudo apt install neofetch
该命令已为 Tom 成功执行。
持有此命令的人
如果您的所有用户都可以使用sudo
,那么您将手头上的混乱。 但是值得推广其他用户,这样他们就可以分担您的管理负担。 只要确保他们是有价值的,并密切关注他们。
即使您是计算机上的唯一用户,也值得考虑创建另一个用户帐户并为其提供对sudo
的完全访问权限。 这样,如果您发现自己被锁定在主帐户之外,您可以使用另一个帐户登录以尝试纠正这种情况。
相关:如何在 Linux 上查看 sudo 命令用法