第 4 天:堡垒守护者

LinuxBeginner
立即练习

简介

欢迎来到 LabEx 公司的第 4 天,堡垒守护者!继昨天你出色地解决了「凤凰项目」(Project Phoenix)的关键问题后,公司首席技术官(CTO)亲自指派你负责整个项目的安全工作。

「我们承担不起另一次安全事故了,」CTO 在晨会上解释道,「你的调查显示我们之前的安全设置不够完善。莎拉·陈(Sarah Chen)和开发团队需要一个坚不可摧的环境,以按计划完成凤凰项目。」

最近的危机凸显了建立强大安全措施的必要性。一位新承包商即将加入团队以加快开发进度,你必须确保访问控制配置得当。你需要创建安全的文件系统,分配精确的所有权,设置细粒度的权限,并建立能够保护 TechNova 知识产权的协作工作区。

凤凰项目的成功——以及公司的未来——现在取决于你今天构建的数字堡垒。让我们开始加固系统吧!

为新项目创建安全文件

你的第一个任务是创建一个用于存储敏感项目密钥的文件。该文件必须严格保密,且仅允许其所有者访问。

任务

  • ~/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-------,表示:

  • 所有者拥有读写权限
  • 组没有任何权限
  • 其他人没有任何权限

分配项目资源的所有权

凤凰项目由莎拉·陈的开发团队领导,技术负责人 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,该步骤将所有项目目录(包括 src)的所有权设置为 dev_lead:developers。本步骤建立在这些所有权设置的基础上。

开发团队需要在 ~/project/phoenix_project/src 目录内进行有效协作。为了确保协作顺畅,在 src 内创建的任何新文件或目录都应自动属于 developers 组。此特殊权限仅影响组所有者。用户所有者仍将是创建文件的账户,文件的读/写权限仍取决于该用户的 umask

任务

  • ~/project/phoenix_project/src 目录上设置特殊权限,强制在该目录下创建的所有新文件和子目录自动继承 src 目录本身的组所有权(即 developers)。

要求

  • 解决方案必须确保 ~/project/phoenix_project/src 中的新文件自动继承 developers 组。
  • 你必须使用 chmod 命令来设置此特殊权限。
  • 你可能需要使用 sudo 来设置其他用户拥有的目录的权限。

提示

  • 此特殊权限称为「设置组 ID」(set group ID)或 setgid 位。
  • 你可以使用符号表示法(g+s)或数字表示法来应用 setgid 位。
  • 在数字表示法中,setgid 位的值为 2。它位于标准的三位权限数字之前(例如 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 位,且组拥有执行权限

总结

出色的工作,堡垒守护者!你已经成功为凤凰项目构建了坚不可摧的安全基础。CTO 和莎拉·陈对你全面的安全实施感到惊叹。项目目录现在已成为一座堡垒,既能保护 TechNova 的知识产权,又能实现无缝协作。

在整个挑战中,你掌握了关键的 Linux 安全技能:

  • 创建文件与基础权限:你通过精确的权限控制保护了敏感的项目密钥。
  • 所有权管理:你专业地将所有权分配给了莎拉的开发团队和技术领导层。
  • 目录安全:你平衡了项目主基础设施的访问权限与安全性。
  • 高级权限:你配置了 setgid 权限,以确保协作团队工作区能够自动继承组所有权。
  • 协作工作区:你配置了既能保持安全又能提高生产力的团队协作空间。

这些高级安全技能证明了你已具备胜任高级系统管理员职责的能力。明天,你将作为「密钥守护者」迎接最终挑战,通过控制用户对系统的访问权限,来管理凤凰项目安全中的人为因素!

✨ 查看解决方案并练习✨ 查看解决方案并练习✨ 查看解决方案并练习✨ 查看解决方案并练习