简介
欢迎来到 LabEx Corporation 的第 4 天,堡垒守护者!昨天,你出色地完成了侦探工作,解决了 Project Phoenix 的关键问题。今天,公司的首席技术官亲自指派你负责整个项目的安全工作。
首席技术官在早上的简报中解释道:「我们承受不起再次发生安全事故。你的调查表明,我们之前的安全配置并不完善。Sarah Chen 和开发团队需要一个坚不可摧的环境,才能按计划完成 Project Phoenix。」
最近的危机凸显了建立可靠安全措施的必要性。一名新合同工即将加入团队,以帮助加快开发进度。你必须确保访问控制配置准确无误。你需要创建安全的文件系统、分配精确的所有权、设置细粒度的权限,并建立能够保护 TechNova 知识产权的协作工作区。
Project Phoenix 的成功以及公司的未来,现在取决于你今天构建的数字堡垒。开始保护这个系统吧!
为新项目创建安全文件
你的第一个任务是创建一个用于存储敏感项目密钥的文件。该文件必须严格保密,只允许其所有者访问。
任务
- 在
~/project/phoenix_project目录中创建一个名为project_keys.txt的新空文件。 - 设置该文件的权限,使其所有者拥有读写权限,其他任何人(包括同组用户)都没有任何访问权限。
要求
- 文件名必须是
project_keys.txt。 - 文件路径必须是
~/project/phoenix_project/project_keys.txt。 - 使用带数字表示法的
chmod命令设置权限。
提示
- 可以使用
touch命令创建空文件。 - 记住权限的数字值:读(4)、写(2)和执行(1)。
- 最终权限应为
600(所有者拥有读写权限,组用户和其他用户没有任何权限)。
示例
完成任务后,你应该看到类似下面的输出:
$ ls -l ~/project/phoenix_project/
-rw------- 1 labex labex 0 Sep 3 16:03 project_keys.txt
文件权限显示为 -rw-------,表示:
- 所有者拥有读写权限
- 组用户没有任何权限
- 其他用户没有任何权限
分配项目资源的所有权
Project Phoenix 由 Sarah Chen 的开发团队负责,技术负责人 dev_lead 管理核心开发工作。该用户属于你本周一直使用的 developers 组。你需要转移所有项目文件和目录的所有权,以确保访问控制正确。
任务
- 将
~/project/phoenix_project目录及其所有内容的所有者更改为用户dev_lead。 - 将
~/project/phoenix_project目录及其所有内容的组所有者更改为developers组。
要求
- 用户所有者必须是
dev_lead。 - 组所有者必须是
developers。 - 所有权更改必须递归应用于
~/project/phoenix_project中的所有文件和子目录。 - 必须使用
chown命令。
提示
chown命令可以使用user:group语法同时更改用户和组。- 查找
chown命令中允许递归处理文件和目录的选项。man chown命令可以帮助你。 - 由于这些文件当前由 root 所有,因此需要使用
sudo更改所有权。
示例
完成任务后,你应该看到类似下面的输出:
$ ls -ld ~/project/phoenix_project/
drwxrwxr-x 4 dev_lead developers 53 Sep 3 16:00 ~/project/phoenix_project/
$ ls -l ~/project/phoenix_project/
total 0
drwxrwxr-x 2 dev_lead developers 27 Sep 3 16:00 docs
-rw------- 1 dev_lead developers 0 Sep 3 16:03 project_keys.txt
drwxrwxr-x 2 dev_lead developers 6 Sep 3 16:00 src
现在,所有文件和目录都应归以下对象所有:
- 用户:
dev_lead - 组:
developers
保护主项目目录
现在所有权已经正确,你需要为主项目目录 ~/project/phoenix_project 设置基本权限。权限策略如下:所有者应拥有完全控制权,组用户应能够列出文件并进入目录,其他用户则完全不能访问。
任务
- 为
~/project/phoenix_project目录设置权限。
要求
- 所有者(
dev_lead)必须拥有读、写和执行权限。 - 组用户(
developers)必须拥有读和执行权限。 - 其他用户必须没有任何权限。
- 使用
chmod命令将这些权限应用于~/project/phoenix_project目录本身,而不是递归应用。 - 由于该目录归
dev_lead所有,你可能需要使用sudo更改权限。
提示
- 目录的「执行」权限允许你使用
cd进入该目录。 - 分别计算所有者、组用户和其他用户的数字权限值。
- 所有者(rwx)= 4+2+1 = 7
- 组用户(r-x)= 4+0+1 = 5
- 其他用户(---)= 0+0+0 = 0
示例
完成任务后,你应该看到类似下面的输出:
$ ls -ld ~/project/phoenix_project/
drwxr-x--- 4 dev_lead developers 53 Sep 3 16:00 ~/project/phoenix_project/
目录权限显示为 drwxr-x---,表示:
- 所有者(
dev_lead)拥有读、写和执行权限 - 组用户(
developers)拥有读和执行权限 - 其他用户没有任何权限
这意味着:
dev_lead可以完全访问该目录developers组成员可以列出目录内容并进入该目录- 其他用户无法访问该目录
为开发团队设置协作权限
注意:请先完成步骤 2。步骤 2 会将所有项目目录(包括
src)的所有权设置为 `dev_lead:developers。本步骤基于这些所有权设置继续操作。设置脚本会将
labex用户添加到developers组,但当前 shell 可能不会自动获取新的组成员身份。在~/project/phoenix_project/src中测试访问权限之前,请先在终端运行newgrp developers。否则,即使所有权和权限设置正确,也可能看到Permission denied错误。
开发团队需要在 ~/project/phoenix_project/src 目录中高效协作。为了确保协作顺利,在 src 中创建的任何新文件或目录都应自动归 developers 组所有。此特殊权限只影响组所有者。用户所有者仍然是创建文件的账户,而文件的读写权限仍取决于该用户的 umask。
任务
- 为
~/project/phoenix_project/src目录设置特殊权限,强制在其中创建的所有新文件和子目录继承src目录本身的组所有权(即developers)。
要求
- 解决方案必须确保在
~/project/phoenix_project/src中创建的新文件自动继承developers组。 - 最终权限必须允许所有者和
developers组读、写并进入src目录,同时禁止其他用户访问。 - 必须使用
chmod命令设置此特殊权限。 - 你可能需要使用
sudo为其他用户所有的目录设置权限。
提示
- 此特殊权限称为「set group ID」或
setgid位。 - 可以使用符号表示法(
g+s)或数字表示法设置setgid位。 - 在数字表示法中,
setgid位的值为2,应放在标准的 3 位权限数字之前(例如2770)。
示例
完成任务后,你应该看到类似下面的输出:
$ ls -ld ~/project/phoenix_project/src/
drwxrws--- 2 dev_lead developers 6 Sep 3 16:00 ~/project/phoenix_project/src/
组执行权限位置中的 s 表示已设置 setgid 位,并且组拥有执行权限。现在创建一个新文件:
$ touch ~/project/phoenix_project/src/new_file.txt
$ ls -l ~/project/phoenix_project/src/new_file.txt
-rw-rw-r-- 1 labex developers 0 Apr 15 18:28 /home/labex/project/phoenix_project/src/new_file.txt
注意,即使你以其他用户身份登录,新文件也会自动归 developers 组所有。文件所有者仍然是创建该文件的用户,而组所有者则继承自 src 目录。这样既能保证开发团队协作,又能维持正确的组所有权。
权限表示如下:
- 所有者(
dev_lead)拥有读、写和执行权限 - 组用户(
developers)拥有读、写和执行权限 - 其他用户没有任何权限
- 组执行权限位置中的小写
s表示已设置 setgid 位,并且组拥有执行权限
总结
出色的工作,堡垒守护者!你已经成功为 Project Phoenix 构建了坚不可摧的安全基础。首席技术官和 Sarah Chen 都对你全面的安全实施工作赞叹不已。现在,项目目录已经成为一座堡垒,既能保护 TechNova 的知识产权,又能支持团队顺畅协作。
在本次挑战中,你掌握了关键的 Linux 安全技能:
- 创建文件和设置基本权限:通过精确的权限控制保护敏感的项目密钥。
- 管理所有权:为 Sarah 的开发团队和技术负责人正确分配所有权。
- 保护目录:在主项目基础设施中平衡访问需求与安全性。
- 高级权限:配置 setgid 权限,使协作团队工作区自动继承组所有权。
- 协作工作区:配置既能维护安全性、又能提高生产力的团队协作空间。
这些高级安全技能证明你已经为承担高级系统管理职责做好了准备。明天,你将以「密钥守护者」的身份迎接最后一个挑战,通过控制用户对系统的访问来管理 Project Phoenix 安全中的人为因素!



