Управление стандартными правами доступа и владельцами файлов

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

Введение

Права доступа в 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, чтобы новые файлы наследовали нужную группу.