管理标准文件权限与所有权

LinuxBeginner
立即练习

介绍

Linux 权限决定了谁可以读取、修改或执行文件。RHCSA 任务通常要求你检查权限字符串、设置数字和符号模式、更改所有权,并配置目录以确保文件可供目标组使用。

在本实验中,你将直接在 /home/labex/project 目录下工作。你将检查准备好的文件,使用 chmod 应用标准文件模式,安全地启用脚本,获取 root 所有权文件的所有权,并配置一个 setgid 共享目录。

检查文件权限字段

在此步骤中,你将在更改权限之前先进行检查。ls -l 输出的第一列显示了文件类型和权限;所有者和所属组字段显示了谁拥有该文件的控制权。

进入标准的 LabEx 项目目录。

cd /home/labex/project

列出准备好的实验目录树。

ls -l permissions-lab

检查准备好的配置文件。在长格式列表中可以看到模式、所有者和所属组。

ls -l permissions-lab/configs

使用 stat 命令以简洁的方式查看单个文件。%a 打印数字模式,%U 打印所有者名称,%G 打印所属组名称。

stat -c '%n %a %U %G' permissions-lab/configs/private.conf

检查由 root 拥有的移交文件。注意,当前的所有者和所属组均为 root。

ls -l permissions-lab/shared/handoff.txt

使用数字 chmod 设置文件模式

在此步骤中,你将使用数字模式配合 chmod 命令。这三位数字分别描述了用户、组和其他人的权限。例如,600 表示仅所有者可读写,644 表示所有者可读写,而组和其他人仅可读取。

从项目目录开始。

cd /home/labex/project

将 private.conf 设置为仅所有者可读写。这对于包含敏感设置的文件非常适用。

chmod 600 permissions-lab/configs/private.conf

将 readme.txt 设置为所有人可读,但仅所有者可写。

chmod 644 permissions-lab/configs/readme.txt

使用 stat 检查模式。

stat -c '%n %a' permissions-lab/configs/private.conf permissions-lab/configs/readme.txt

你应该能看到 private.conf 为 600,readme.txt 为 644。

使用符号 chmod 启用脚本执行

在此步骤中,你将使用符号权限。符号模式允许你添加或删除特定权限,而无需重写整个数字模式。

从项目目录开始。

cd /home/labex/project

在更改脚本之前先进行检查。它应该是可读的,但不可执行。

ls -l permissions-lab/scripts/check-inventory.sh

为所有者和所属组添加执行权限。在 u+x,g+x 中,u 代表用户,g 代表组,+x 代表添加执行权限。

chmod u+x,g+x permissions-lab/scripts/check-inventory.sh

通过路径运行该脚本。

permissions-lab/scripts/check-inventory.sh

预期输出:

inventory check ok

检查最终模式。它现在应该包含用户和组的执行位。

stat -c '%n %a' permissions-lab/scripts/check-inventory.sh

更改移交文件的所有权

在此步骤中,你将使用 sudo chown 获取一个由 root 拥有的文件的所有权。更改所有权通常需要管理权限,因此对于此练习文件,使用 sudo 是合适的。

从项目目录开始。

cd /home/labex/project

检查当前的所有者和所属组。该文件初始状态为 root:root。

stat -c '%n %U:%G %a' permissions-lab/shared/handoff.txt

将所有者和所属组更改为 labex:labex。user:group 格式可以在一条命令中同时设置这两个字段。

sudo chown labex:labex permissions-lab/shared/handoff.txt

将文件限制为所有者可读写,组可读取。

chmod 640 permissions-lab/shared/handoff.txt

既然 labex 现在拥有该文件,追加一行操作记录。

printf 'Handled by labex after ownership update.\n' >> permissions-lab/shared/handoff.txt

检查最终的所有者、所属组、模式和内容。

stat -c '%n %U:%G %a' permissions-lab/shared/handoff.txt
cat permissions-lab/shared/handoff.txt

配置带有 setgid 的共享目录

在此步骤中,你将配置一个共享目录。目录需要执行权限才能进入和搜索。目录上的 setgid 位会使新文件继承目录的所属组,这有助于团队保持共享内容所属组的一致性。

从项目目录开始。

cd /home/labex/project

检查当前目录模式。

stat -c '%n %a %U:%G' permissions-lab/teamdrop

将目录模式设置为 2775。开头的 2 启用 setgid,775 为所有者和所属组提供完全访问权限,并为其他人提供读取/执行权限。

chmod 2775 permissions-lab/teamdrop

在共享目录内创建一个文件。

printf 'team handoff ready\n' > permissions-lab/teamdrop/status.txt

设置文件模式,以便所有者和所属组可以读写它。

chmod 664 permissions-lab/teamdrop/status.txt

检查目录和新文件。

stat -c '%n %a %U:%G' permissions-lab/teamdrop permissions-lab/teamdrop/status.txt
cat permissions-lab/teamdrop/status.txt

总结

你练习了为 RHCSA 准备的标准 Linux 权限和所有权操作。你检查了权限字段,应用了数字文件模式,使用符号 chmod 启用了脚本执行,通过 sudo chown 更改了所有权,设置了安全的文件模式,并配置了 setgid 共享目录,确保新文件能够继承预期的所属组。