Введение
Права доступа в Linux определяют, кто может читать, изменять или исполнять файлы. Задачи RHCSA обычно требуют умения анализировать строки прав доступа, устанавливать числовые и символьные режимы, изменять владельцев и настраивать каталоги так, чтобы файлы были доступны нужной группе пользователей.
В этой лабораторной работе вы будете работать непосредственно в каталоге /home/labex/project. Вы изучите подготовленные файлы, примените стандартные режимы доступа с помощью chmod, безопасно активируете скрипт, примете права владения на файл, принадлежащий root, и настроите общий каталог с битом setgid.
Анализ полей прав доступа к файлам
На этом этапе вы изучите права доступа перед их изменением. Первое поле в выводе команды ls -l показывает тип файла и права доступа; поля владельца и группы показывают, кто управляет файлом.
Перейдите в стандартный каталог проекта LabEx.
cd /home/labex/project
Выведите список содержимого подготовленного дерева лабораторной работы.
ls -l permissions-lab
Изучите подготовленные конфигурационные файлы. Режим, владелец и группа видны в подробном списке.
ls -l permissions-lab/configs
Используйте stat для компактного просмотра информации об одном файле. %a выводит числовой режим, %U — имя владельца, а %G — имя группы.
stat -c '%n %a %U %G' permissions-lab/configs/private.conf
Изучите файл, принадлежащий root. Обратите внимание, что владельцем и группой в данный момент является root.
ls -l permissions-lab/shared/handoff.txt
Установка режимов файлов с помощью числового chmod
На этом этапе вы будете использовать числовые режимы с командой chmod. Три цифры описывают права доступа для владельца, группы и остальных пользователей. Например, 600 означает, что только владелец может читать и записывать файл, а 644 означает, что владелец может читать и записывать, а группа и остальные пользователи — только читать.
Начните из каталога проекта.
cd /home/labex/project
Сделайте private.conf доступным для чтения и записи только его владельцу. Это подходит для файла, содержащего конфиденциальные настройки.
chmod 600 permissions-lab/configs/private.conf
Сделайте readme.txt доступным для чтения всем, но для записи — только владельцу.
chmod 644 permissions-lab/configs/readme.txt
Проверьте режимы с помощью stat.
stat -c '%n %a' permissions-lab/configs/private.conf permissions-lab/configs/readme.txt
Вы должны увидеть 600 для private.conf и 644 для readme.txt.
Активация исполнения скрипта с помощью символьного chmod
На этом этапе вы будете использовать символьные права доступа. Символьный режим позволяет добавлять или удалять конкретное право доступа без переписывания всего числового режима.
Начните из каталога проекта.
cd /home/labex/project
Изучите скрипт перед его изменением. Он должен быть доступен для чтения, но не для исполнения.
ls -l permissions-lab/scripts/check-inventory.sh
Добавьте право на исполнение для владельца и группы. В выражении u+x,g+x символ u означает владельца (user), g — группу (group), а +x — добавление права на исполнение.
chmod u+x,g+x permissions-lab/scripts/check-inventory.sh
Запустите скрипт, указав путь к нему.
permissions-lab/scripts/check-inventory.sh
Ожидаемый вывод:
inventory check ok
Проверьте итоговый режим. Теперь он должен включать биты исполнения для владельца и группы.
stat -c '%n %a' permissions-lab/scripts/check-inventory.sh
Изменение владельца файла
На этом этапе вы примете права владения на файл, принадлежащий root, используя sudo chown. Изменение владельца обычно требует административных привилегий, поэтому sudo уместно для этого учебного файла.
Начните из каталога проекта.
cd /home/labex/project
Изучите текущего владельца и группу. Изначально файл принадлежит root:root.
stat -c '%n %U:%G %a' permissions-lab/shared/handoff.txt
Измените владельца и группу на labex:labex. Формат user:group позволяет установить оба параметра одной командой.
sudo chown labex:labex permissions-lab/shared/handoff.txt
Ограничьте права доступа к файлу: чтение/запись для владельца и чтение для группы.
chmod 640 permissions-lab/shared/handoff.txt
Добавьте строку в файл, теперь, когда labex является его владельцем.
printf 'Handled by labex after ownership update.\n' >> permissions-lab/shared/handoff.txt
Проверьте итогового владельца, группу, режим и содержимое файла.
stat -c '%n %U:%G %a' permissions-lab/shared/handoff.txt
cat permissions-lab/shared/handoff.txt
Настройка общего каталога с использованием setgid
На этом этапе вы настроите общий каталог. Каталогам требуется право на исполнение, чтобы входить в них и просматривать содержимое. Бит setgid на каталоге заставляет новые файлы наследовать группу каталога, что помогает командам поддерживать единообразие прав доступа к общему контенту.
Начните из каталога проекта.
cd /home/labex/project
Изучите текущий режим каталога.
stat -c '%n %a %U:%G' permissions-lab/teamdrop
Установите режим каталога 2775. Первая цифра 2 включает setgid, 775 дает полные права владельцу и группе, а также права на чтение и исполнение остальным пользователям.
chmod 2775 permissions-lab/teamdrop
Создайте файл внутри общего каталога.
printf 'team handoff ready\n' > permissions-lab/teamdrop/status.txt
Установите режим файла так, чтобы владелец и группа могли читать и записывать его.
chmod 664 permissions-lab/teamdrop/status.txt
Изучите каталог и новый файл.
stat -c '%n %a %U:%G' permissions-lab/teamdrop permissions-lab/teamdrop/status.txt
cat permissions-lab/teamdrop/status.txt
Резюме
Вы попрактиковались в работе со стандартными правами доступа и владением файлами в Linux для подготовки к RHCSA. Вы изучили поля прав доступа, применили числовые режимы файлов, использовали символьный chmod для активации исполнения скриптов, изменили владельца с помощью sudo chown, установили безопасные режимы доступа и настроили общий каталог с setgid, чтобы новые файлы наследовали нужную группу.



