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

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

Введение

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

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

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