Введение
Добро пожаловать на 4-й день в LabEx Corporation, Страж крепости! После вашей блестящей детективной работы вчера, когда вы решили критические проблемы проекта «Феникс» (Project Phoenix), технический директор компании лично назначил вас руководителем службы безопасности всего проекта.
«Мы не можем позволить себе еще один инцидент с безопасностью», — объясняет технический директор во время утреннего брифинга. — «Ваше расследование показало, что наша предыдущая система безопасности была неадекватной. Саре Чен и команде разработчиков нужна пуленепробиваемая среда, чтобы завершить проект "Феникс" в срок».
Недавний кризис подчеркнул необходимость принятия надежных мер безопасности. К команде присоединится новый подрядчик, чтобы ускорить разработку, и вы должны убедиться, что контроль доступа настроен идеально. Вам предстоит создать безопасные файловые системы, назначить точных владельцев, установить детальные права доступа и создать рабочие пространства для совместной работы, которые защитят интеллектуальную собственность TechNova.
Успех проекта «Феникс» — и будущее компании — теперь зависит от цифровой крепости, которую вы построите сегодня. Давайте обезопасим эту систему!
Создание защищенного файла для нового проекта
Ваша первая задача — создать файл, в котором будут храниться конфиденциальные ключи проекта. Этот файл должен быть строго конфиденциальным и доступным только его владельцу.
Задачи
- Создайте новый пустой файл с именем
project_keys.txtвнутри каталога~/project/phoenix_project. - Установите права доступа для этого файла так, чтобы только владелец имел права на чтение и запись, а никто другой (даже пользователи из той же группы) не имел никакого доступа.
Требования
- Файл должен называться
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для изменения прав доступа.
Подсказки
- Право «выполнения» (execute) для каталога позволяет переходить в него с помощью
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. Этот шаг основывается на этих настройках владения.Скрипт настройки добавляет пользователя
labexв группуdevelopers, но ваша текущая оболочка может не подхватить это новое членство в группе автоматически. Перед тем как проверять доступ в~/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. - Вы можете применить бит
setgid, используя символьную (g+s) или числовую нотацию. - В числовой нотации бит
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 установлен и группа имеет право на выполнение
Резюме
Выдающаяся работа, Страж крепости! Вы успешно создали непробиваемый фундамент безопасности для проекта «Феникс». Технический директор и Сара Чен поражены вашей комплексной реализацией системы безопасности. Каталог проекта теперь представляет собой крепость, которая защитит интеллектуальную собственность TechNova, обеспечивая при этом беспрепятственную совместную работу.
В ходе этого задания вы освоили критически важные навыки безопасности в Linux:
- Создание файлов и базовые права доступа: Вы защитили конфиденциальные ключи проекта с помощью точного контроля прав доступа.
- Управление владельцами: Вы профессионально назначили владельцев для команды разработчиков Сары и технического руководства.
- Безопасность каталогов: Вы сбалансировали доступ и безопасность для основной инфраструктуры проекта.
- Расширенные права доступа: Вы настроили права setgid для обеспечения рабочих пространств для совместной работы команды с автоматическим наследованием группы-владельца.
- Рабочие пространства для совместной работы: Вы настроили пространства для командной работы, которые поддерживают безопасность, не снижая продуктивность.
Эти продвинутые навыки безопасности доказали вашу готовность к выполнению обязанностей старшего системного администратора. Завтра вы примете свой последний вызов в качестве Хранителя ключей, управляя человеческим фактором безопасности проекта «Феникс» путем контроля доступа пользователей к системе!



