Хранитель крепости

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

Введение

Добро пожаловать в четвёртый день работы в 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 специальное право, которое заставит все новые файлы и подкаталоги, созданные внутри него, наследовать владельца-группу самого каталога srcdevelopers.

Требования

  • Новые файлы в ~/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, контролируя доступ пользователей к системе!

✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться✨ Проверить решение и практиковаться