ДЕНЬ 04: Страж крепости

LinuxBeginner
Практиковаться сейчас

Введение

Добро пожаловать в четвертый день работы в корпорации LabEx, Страж крепости! После вашего блестящего детективного расследования вчера, когда вы устранили критические проблемы проекта «Феникс», технический директор компании лично поручил вам возглавить обеспечение безопасности всего проекта.

«Мы не можем позволить себе еще один инцидент в сфере безопасности», — объясняет технический директор во время утреннего брифинга. «Ваше расследование показало, что наша предыдущая настройка защиты была недостаточной. Саре Чен и команде разработчиков нужна пуленепробиваемая среда, чтобы завершить проект «Феникс» в срок».

Недавний кризис подчеркнул необходимость внедрения надежных мер защиты. К команде присоединится новый подрядчик, чтобы ускорить разработку, и вы должны гарантировать, что контроль доступа настроен идеально. Вам предстоит создать защищенные файловые системы, назначить точных владельцев, установить детализированные права доступа и организовать рабочие пространства для совместной работы, которые защитят интеллектуальную собственность 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 для изменения прав.

Подсказки

  • Право на «выполнение» для директории позволяет войти в нее с помощью команды 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, а не основной группе пользователя, который их создал.

Задачи

  • Установите специальное право доступа для директории ~/project/phoenix_project/src, которое заставляет все новые файлы и поддиректории, созданные в ней, наследовать группу-владельца от самой директории src (то есть developers).

Требования

  • Решение должно гарантировать, что новые файлы в ~/project/phoenix_project/src автоматически принадлежат группе developers.
  • Для установки этого специального права необходимо использовать команду 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---- 1 dev_lead developers 0 Sep 3 16:05 new_file.txt

Обратите внимание, что новый файл автоматически принадлежит группе developers, даже если вы вошли в систему под другим пользователем. Это обеспечивает совместную работу команды разработчиков при сохранении правильного владения группой.

Права доступа показывают:

  • Владелец (dev_lead) имеет права на чтение и запись.
  • Группа (developers) имеет права на чтение и запись.
  • Остальные не имеют никаких прав.
  • Строчная s в позиции выполнения для группы указывает на установленный бит setgid и наличие прав на выполнение у группы.
✨ Проверить решение и практиковаться

Резюме

Выдающаяся работа, Страж крепости! Вы успешно заложили неприступный фундамент безопасности для проекта «Феникс». Технический директор и Сара Чен поражены вашим комплексным подходом к защите. Директория проекта теперь превратилась в крепость, которая защитит интеллектуальную собственность TechNova, обеспечивая при этом беспрепятственное сотрудничество.

В ходе этого испытания вы освоили критически важные навыки безопасности в Linux:

  • Создание файлов и базовые права доступа: Вы защитили конфиденциальные ключи проекта с помощью точного контроля разрешений.
  • Управление владением: Вы профессионально распределили права владения между командой разработчиков Сары и техническим руководством.
  • Безопасность директорий: Вы нашли баланс между доступом и безопасностью для основной инфраструктуры проекта.
  • Расширенные права доступа: Вы настроили права setgid для создания рабочих пространств совместной работы с автоматическим наследованием группы.
  • Пространства для совместной работы: Вы сконфигурировали зоны командной работы, которые сохраняют безопасность без ущерба для продуктивности.

Эти продвинутые навыки в области безопасности доказали вашу готовность к обязанностям старшего системного администратора. Завтра вас ждет финальное испытание в роли Хранителя ключей: вы будете управлять человеческим фактором безопасности проекта «Феникс», контролируя доступ пользователей к системе!