Linux 用户身份与访问控制管理

CompTIABeginner
立即练习

介绍

欢迎来到“Linux 中用户身份和访问控制管理”实验。恰当的用户和访问管理是系统安全和管理的一块基石。它确保用户仅能访问其角色所需的资源,从而防止未经授权的操作和潜在的安全漏洞。

在本实验中,你将亲手实践用于管理用户、组和权限的基本命令行工具。你将学习如何创建用户账户、管理组的成员关系、使用 chmodchown 控制文件访问,以及使用 sudo 授予特定的管理权限。完成本实验后,你将为保护 Linux 环境打下坚实的基础。

创建和管理用户账户及用户组

在本步骤中,你将学习如何创建和管理用户账户及组,这是任何 Linux 系统管理员的基本任务。我们将创建一个新用户,一个新组,然后将该用户添加到该组中。

首先,让我们创建一个名为 alice 的新用户。我们将使用 useradd 命令并带上 -m 选项,该选项指示系统为用户创建一个家目录。

sudo useradd -m alice

接下来,每个用户账户都应该有一个密码。使用 passwd 命令为 alice 设置密码。系统将提示你输入并确认新密码。

sudo passwd alice

在此实验中,你可以输入一个简单的密码,例如 password。请确保输入两次相同的密码——如果它们不匹配,你将看到一个错误,并且需要重试。

为了验证用户 alice 是否已创建,你可以检查 /etc/passwd 文件,该文件包含所有用户账户的信息。

grep alice /etc/passwd

你应该会看到一行输出,其中包含 alice 用户的详细信息。

alice:x:5001:5001::/home/alice:/bin/sh

现在,让我们创建一个名为 developers 的新组。我们为此使用 groupadd 命令。

sudo groupadd developers

为了验证组的创建,你可以检查 /etc/group 文件。

grep developers /etc/group

输出应该显示新组。

developers:x:5003:

最后,让我们将新用户 alice 添加到 developers 组。我们使用 usermod 命令并带上 -aG 选项。-a 代表 append(追加),-G 指定组。使用 -a 很重要,以避免将用户从他们可能所属的其他组中移除。

sudo usermod -aG developers alice

为了确认 alice 现在是 developers 组的成员,请使用 groups 命令。

groups alice

输出将列出 alice 所属的所有组,现在应该包括 developers

alice : alice developers

配置文件和目录权限 (chmod, chown)

在本步骤中,你将学习如何使用 chmodchown 命令管理文件和目录权限。这些命令对于控制系统中谁可以读取、写入或执行文件至关重要。我们将处理一个位于 ~/project/reports/quarterly.txt 的文件。

首先,让我们使用 ls -l 命令检查文件的当前所有权和权限。

ls -l reports/quarterly.txt

输出将类似如下,显示该文件由 labex 用户和组拥有。

-rw-rw-r-- 1 labex labex 20 Aug  5 10:34 reports/quarterly.txt

现在,让我们更改此文件的所有权。我们将用户 alice 设置为所有者,将 developers 组设置为组所有者。我们为此使用 chown 命令。语法是 chown user:group filename

sudo chown alice:developers reports/quarterly.txt

让我们再次运行 ls -l 来验证更改。

ls -l reports/quarterly.txt

输出现在显示了新的所有者和组。

-rw-rw-r-- 1 alice developers 20 Aug  5 10:34 reports/quarterly.txt

接下来,我们将使用 chmod 命令修改文件的权限。我们希望设置权限如下:

  • 所有者 (alice) 拥有读写权限 (rw-)。
  • 组 (developers) 拥有只读权限 (r--)。
  • 其他用户没有任何权限 (---)。

在八进制(数字)表示法中,读是 4,写是 2,执行是 1。因此,rw-4+2=6r--4---0。这给了我们权限码 640

让我们应用这些权限。

sudo chmod 640 reports/quarterly.txt

最后,再检查一次权限以确认它们已正确设置。

ls -l reports/quarterly.txt

输出现在应该反映出新的权限 -rw-r-----

-rw-r----- 1 alice developers 20 Aug  5 10:34 reports/quarterly.txt

实施 Sudo 以进行特权访问管理

在本步骤中,你将学习如何使用 sudo 为用户授予特权访问。sudo 不是给予完全的 root 访问权限,而是允许对用户可以运行的具有提升权限的命令进行精细控制。这是一种更安全的操作实践。

sudo 的配置存储在 /etc/sudoers 文件中。编辑此文件的最安全方法是使用 visudo 命令,该命令会锁定文件并在保存前检查语法错误。

让我们授予用户 alice 在不输入密码的情况下运行 apt update 命令的权限。

打开 sudoers 文件进行编辑:

sudo EDITOR=nano visudo

这将会在文本编辑器(如 nano)中打开该文件。滚动到文件底部并添加以下行:

alice ALL=(ALL) NOPASSWD: /usr/bin/apt update

这一行表示:用户 aliceALL 主机上可以作为 ALL 用户 ((ALL)) 运行指定的命令 /usr/bin/apt update,而无需密码 (NOPASSWD:)。

添加完该行后,保存并退出编辑器。在 nano 中,你可以通过按 Ctrl+O,然后按 Enter 确认文件名,最后按 Ctrl+X 退出。

现在,让我们测试新规则。我们需要切换到 alice 用户账户。

sudo su - alice

你的命令提示符会改变,表明你现在已作为 alice 登录。现在,尝试运行允许的命令。

sudo /usr/bin/apt update

该命令应该会成功执行,而不会要求输入密码。你将看到包列表正在更新。

接下来,让我们尝试运行一个 alice 不允许 使用 sudo 运行的命令,例如 apt upgrade

sudo /usr/bin/apt upgrade

此命令将失败,你将看到 [sudo] password for alice: 消息,表明用户 alice 不允许执行此命令。

[sudo] password for alice:

Ctrl+C 退出命令。

这证实了我们的 sudo 规则按预期工作。现在,切换回你原来的 labex 用户。

exit

审查 Sudo 日志以了解特权访问活动

在本步骤中,你将学习如何查看系统日志以监控特权访问。审计 sudo 使用情况是跟踪谁在何时以 root 身份运行命令的关键安全实践。

在基于 Debian 的系统(如 Ubuntu)上,sudo 命令会记录到 /var/log/auth.log 文件中。此文件受到保护,因此你需要使用 sudo 来读取它。

我们可以使用 grep 命令过滤日志,查找与上一步中用户 alice 执行的 sudo 命令相关的条目。

运行以下命令来搜索授权日志:

sudo grep 'sudo.*alice' /var/log/auth.log

输出将显示多行。你应该能够识别出成功和失败的 sudo 尝试的日志。

成功的尝试看起来会类似这样,显示已执行的命令:

... labex-vm sudo:    alice : TTY=pts/0 ; PWD=/home/alice ; USER=root ; COMMAND=/usr/bin/apt update

失败的尝试也会被记录下来,清楚地表明该命令是不允许的:

... labex-vm sudo:    alice : user NOT allowed to execute /usr/bin/apt upgrade on labex-vm ; TTY=pts/0 ; PWD=/home/alice ; USER=root ; COMMAND=/usr/bin/apt upgrade

审查这些日志使管理员能够监控可疑活动,并确保特权命令被恰当地使用。

总结

恭喜你完成本次实验!

在本实验中,你获得了 Linux 用户和访问管理基本任务的实践经验。这些技能对于维护安全且组织良好的 Linux 系统至关重要。

你学会了如何:

  • 使用 useraddgroupadd 创建新用户和组。
  • 使用 chown 修改文件所有权,使用 chmod 修改文件权限。
  • 使用 sudovisudo 命令实现精细的特权访问控制。
  • 通过审查 /var/log/auth.log 中的系统日志来审计 sudo 活动。

通过掌握这些命令,你现在能够更好地管理用户并在任何 Linux 服务器上保护敏感数据。