如果您被告知用户“不在 sudoers 文件中”,您可以使用 usermod 命令授予用户完整的 sudo 权限。要控制用户可以使用 sudo 做什么,请使用 visudo 编辑 sudoers 文件。
可以使用 Linuxsudo命令的人是一个小型精选俱乐部的成员,有时称为“sudoers”列表。每个成员都拥有与 相同的权力root。那你怎么加入那个俱乐部?我们将逐步向 sudoers 添加人员以及编辑 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
在编辑器中向下滚动,直到看到“用户权限规范”部分。寻找类似于“允许该组的成员执行任何命令”的评论。
我们被告知该sudo
组的成员可以执行任何命令。在玛丽的案例中,我们需要知道的只是该组的名称。并非总是如此sudo
;它可能是wheel
或其他的东西。现在我们知道组的名称,我们可以关闭编辑器并将 Mary 添加到该组。
我们使用usermod
带有-a
(append) 和-G
(group name) 选项的命令。该-G
选项允许我们命名我们想要将用户添加到的组,并且该-a
选项告诉usermod
将新组添加到该用户已经在的现有组列表中。
如果您不使用该-a
选项,则您的用户所在的唯一组是新添加的组。仔细检查,并确保您已包含该-a
选项。
sudo usermod -aG sudo mary
下次 Mary 登录时,她将有权访问sudo
. 我们已经让她登录,并且正在尝试编辑文件系统表文件“/etc/fstab”。这是一个除了 root
.
sudo nano /etc/fstab
nano 编辑器打开并加载了“/etc/fstab”文件。
如果没有sudo
权限,您只能将其作为只读文件打开。玛丽不再有这些限制。她可以保存所做的任何更改。
关闭编辑器,不要保存您所做的任何更改。
通过编辑 sudoers 文件限制 sudo 权限
我们的另一个用户 Tom 将被授予安装软件的权限,但他不会获得授予 Mary 的所有权限。
我们需要编辑sudoers
文件。
sudo visudo
在编辑器中向下滚动,直到看到“用户权限规范”部分。寻找类似于“允许该组的成员执行任何命令”的评论。在文件中我们找到需要将 Mary 添加到的组的名称的位置相同。
在该部分下方添加这些行。
# 用户 tom 可以安装软件 tom ALL=(root) /usr/bin/apt
第一行是一个简单的注释。请注意,用户名“tom”和单词“All”之间有一个制表符。
这就是线路上的项目的含义。
- tom:用户 默认组的名称。通常这与其用户帐户的名称相同。
- ALL=:此规则适用于该网络上的所有主机。
- (root):“tom”组的成员(即用户 Tom)可以
root
为列出的命令承担特权。 - /usr/bin/apt:这是用户 Tom 可以运行的唯一命令
root
。
我们在apt
这里指定了包管理器,因为这台计算机使用的是 Ubuntu Linux。如果您使用不同的发行版,则需要用适当的命令替换它。
让我们登录 Tom,看看我们是否得到了预期的行为。我们将尝试编辑“/etc/fstab”文件。
sudo nano /etc/fstab
该命令被拒绝,我们被告知“不允许用户 tom 以 root 身份执行 '/usr/bin/nano /etc/fstab' ...”
这就是我们想要的。用户 Tom 应该只能使用apt
包管理器。让我们确保他们能做到这一点。
sudo apt install neofetch
该命令已为 Tom 成功执行。
持有此命令的人
如果您的所有用户都可以使用sudo
,那么您将面临混乱。但是值得推广其他用户,这样他们就可以分担您的管理负担。只要确保他们是有价值的,并密切关注他们。
即使您是计算机上的唯一用户,也值得考虑创建另一个用户帐户并为其授予对sudo
. 这样,如果您发现自己被锁定在主帐户之外,您可以使用另一个帐户登录以尝试纠正这种情况。
原创文章,作者:哦八卦,如若转载,请注明出处:https://www.obagua.com/12482.html