堡垒守护者

LinuxBeginner
立即练习

简介

欢迎来到 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 安全中的人为因素!

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