介绍
欢迎来到“Linux 中用户身份和访问控制管理”实验。恰当的用户和访问管理是系统安全和管理的一块基石。它确保用户仅能访问其角色所需的资源,从而防止未经授权的操作和潜在的安全漏洞。
在本实验中,你将亲手实践用于管理用户、组和权限的基本命令行工具。你将学习如何创建用户账户、管理组的成员关系、使用 chmod 和 chown 控制文件访问,以及使用 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)
在本步骤中,你将学习如何使用 chmod 和 chown 命令管理文件和目录权限。这些命令对于控制系统中谁可以读取、写入或执行文件至关重要。我们将处理一个位于 ~/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=6,r-- 是 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
这一行表示:用户 alice 在 ALL 主机上可以作为 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 系统至关重要。
你学会了如何:
- 使用
useradd和groupadd创建新用户和组。 - 使用
chown修改文件所有权,使用chmod修改文件权限。 - 使用
sudo和visudo命令实现精细的特权访问控制。 - 通过审查
/var/log/auth.log中的系统日志来审计sudo活动。
通过掌握这些命令,你现在能够更好地管理用户并在任何 Linux 服务器上保护敏感数据。



