Введение
Добро пожаловать в четвёртый день работы в LabEx Corporation, Хранитель крепости! Вчера вы блестяще расследовали критические проблемы Project Phoenix, и теперь технический директор компании лично поручил вам возглавить защиту всего проекта.
«Мы не можем допустить ещё одного инцидента безопасности», — объясняет технический директор на утреннем совещании. — «Ваше расследование показало, что прежняя система защиты была недостаточной. Sarah Chen и команда разработки нуждаются в надёжной среде, чтобы завершить Project Phoenix в срок».
Недавний кризис показал необходимость усилить меры безопасности. К команде присоединится новый подрядчик, который поможет ускорить разработку. Вы должны безошибочно настроить контроль доступа. Вам предстоит создать защищённую файловую структуру, назначить точных владельцев, настроить детальные права доступа и организовать совместные рабочие пространства, которые защитят интеллектуальную собственность TechNova.
Теперь успех Project Phoenix и будущее компании зависят от цифровой крепости, которую вы построите сегодня. Защитим эту систему!
Создание защищённого файла для нового проекта
Сначала создайте файл, в котором будут храниться конфиденциальные ключи проекта. Этот файл должен быть строго закрытым и доступным только своему владельцу.
Задачи
- Создайте новый пустой файл с именем
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------- означают:
- Владелец может читать и изменять файл.
- Группа не имеет никаких прав.
- Остальные не имеют никаких прав.
Назначение владельцев ресурсов проекта
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. На этом шаге владельцами всех каталогов проекта, включая
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установлен и группа имеет право на выполнение.
Итоги
Отличная работа, Хранитель крепости! Вы создали надёжную основу защиты Project Phoenix. Технический директор и Sarah Chen впечатлены комплексной настройкой безопасности. Теперь каталог проекта стал крепостью, которая защищает интеллектуальную собственность TechNova и одновременно обеспечивает удобную совместную работу.
В ходе этого испытания вы освоили важные навыки защиты Linux:
- Создание файлов и базовые права: вы защитили конфиденциальные ключи проекта с помощью точной настройки прав.
- Управление владельцами: вы назначили владельцев команде разработки Sarah и техническому руководству.
- Защита каталогов: вы сбалансировали доступ и безопасность основной инфраструктуры проекта.
- Расширенные права: вы настроили права
setgid, чтобы создать совместные рабочие пространства с автоматическим наследованием владельца-группы. - Совместные рабочие пространства: вы настроили пространства для командной работы, которые сохраняют безопасность и поддерживают продуктивность.
Эти продвинутые навыки защиты подтвердили вашу готовность к обязанностям старшего системного администратора. Завтра вас ждёт последнее испытание — роль Хранителя ключей. Вам предстоит управлять человеческим фактором безопасности Project Phoenix, контролируя доступ пользователей к системе!



