linux sudoers 用户权限配置

file

Linux是多用户多任务的操作系统, 同时使用该系统的用户往往不只一个。出于安全性考虑, 有必要通过useradd创建一些非root用户, 只让它们拥有不完全的权限,就可以做不同的事情。这里我们演示将用户添加到 Ubuntu 和其他 Linux 发行版中的 sudoers 以及编辑 sudoers 文件。

为什么要添加到 sudoers 文件中?

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

但是经常使用root操作,如果“root”犯了一个错误,结果可能是灾难性的。它们能够挂载和卸载文件系统,挂载和卸载存储设备-从linux终端,并完全覆盖它们。更安全的工作方式是永远不要以’root’身份登录

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

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

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

jack is not in the sudoers file. This incident will be reported.

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

如何打开 sudoers 文件

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

“sudoers”文件必须使用“visudo”命令打开。这将锁定“sudoers”文件,并防止两个人同时尝试进行更改。它还会在保存编辑之前执行一些健全性检查,确保它们正确解析且语法合理。

请注意,“visudo”不是编辑器,它会启动一个可用的编辑器。在 Ubuntu 22.04、Fedora 37 和 Manjaro 21 上,’visudo’ 启动了 nano

如果我们想让某人访问完整的“sudo”权限,我们只需要引用“sudoers”文件中的一些信息。如果我们想更精细并为用户提供一些“root”的功能,我们需要编辑文件并保存更改。

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

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

我们有两个用户需要访问 root 权限才能执行其工作角色,因此我们将他们添加到 sudoers。他们是Tom和Jack。Tom需要能够访问“根”可以做的一切, Jack只需要安装应用程序。

让我们先将Jack加入sudo组。我们可以在 Ubuntu 和大多数其他 Linux 发行版上以相同的方式做到这一点,方法是启动“visudo”。

sudo visudo
file

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

file

我们使用带有“-a”(追加)和“-G”(组名)选项的“usermod”命令将用户添加到 sudoers。“-G”选项允许我们命名要添加用户的组,“-a”选项告诉“usermod”将新组添加到该用户已所在的现有组中。

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

sudo usermod -aG sudo mary

file

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

sudo nano /etc/fstab

file

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

file

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

关闭编辑器并_don t_保存您可能所做的任何更改。

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

我们的另一个用户Tom将被授予安装软件的权限,但他不会获得授予Mary的所有特权。我们可以让Tom成为sudo用户,而无需给他所有特权。

我们需要编辑“sudoers”文件。

sudo visudo

file

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

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

file

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

这就是行上的项目的含义。

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

我们在这里指定了“apt”包管理器,因为这台计算机使用 Ubuntu Linux。如果您使用的是其他发行版,则需要将其替换为相应的命令。

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

sudo nano /etc/fstab

file

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

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

sudo apt install neofetch
file

最后

如果机器所有用户都可以使用“sudo”,那将是很危险的。只有特定的用户才被允许加入sudoers 列表,以便他们可以分担您的管理负担。

如何在Ubuntu 22.04上安装Python?
如何对API进行版本化?

发表我的评论

电子邮件地址不会被公开。 必填项已用*标注

2 + 20 =

ajax-loader