При домашнем использовании операционной системы Linux мы редко задумываемся о том, кто является владельцем файла. Если же говорить о запуске сервера, то расклад меняетя. Для того, чтобы повысить безопасность, сервер получает собственного пользователя и группу. Нередко серверы используют одну и ту же группу, вроде www-data.
Мы изучим то, как работает команда chgrp с файлами и каталогами. Особое внимание уделим символическим ссылкам, так как они могут создать проблемы при использовании небезопасных параметров.
Содержание статьи:
Стандарт прав файлов пришёл в Linux из Unix. У каждого файла есть владелец (user) и группа (group), помимо этого описываются права остальных пользователей (other). Права состоят из трёх пунктов: чтение (read), запись (write), выполнение (execute). Для изменения прав используется команда umask, но для изменения непосредственно владельца и группы используются команды chown и chgrp. Для просмотра текущих прав можно использовать команду ls.
Общий вид команды chgrp:
$ chgrp [параметры] новая_группа имя_файла
Список распространённых параметров команды chgrp:
Рассмотрим сразу несколько случаев использования, с реальным файлом и каталогом, а затем с символическими ссылками на них. Простейший пример использования команды chgrp без параметров. Следующая команда меняет группу на www-data для файла file в текущей папке:
sudo chgrp www-data file.txt
А эта меняет группу на www-data для папки folder:
sudo chgrp www-data folder
С реальными файлами и каталогами команда работает весьма предсказуемо, меняя их группу. Файлы в папке остаются неизменными. Если же обрабатывать символические ссылки, то их атрибуты останутся неизменными, а файлы получат новую группу. Такое поведение аналогично работе с параметром –dereference. Например, эти команды, применённые к символическим ссылкам, отработают как показано на снимке:
sudo chgrp www-data sym_file.txt
sudo chgrp www-data sym_folder
Теперь посмотрим на то, как будет работать параметр -h, меняющий атрибуты символической ссылки:
sudo chgrp -h www-data sym_file
С параметром -h изменились только атрибуты ссылок, а не сами файлы. Теперь рассмотрим работу c параметром -R, предназначенным для рекурсивной обработки каталогов:
sudo chgrp -R www-data folder
Новая группа была задана не только каталогу, но и всем файлам внутри. Обратите внимание на то, что поведение изменилось, теперь при обработке символической ссылки атрибуты выставляются для самой ссылки, а не файла.
Чтобы увидеть разницу между параметрами -H и -L, рассмотрим ещё пару примеров. Напомним, что их надо использовать совместно с параметром -R:
sudo chgrp -RH www-data folder
С использованием параметра -H поведение при обработке символических ссылок изменилось, теперь они обрабатываются так, как будто команды выполняются по отдельности. Атрибуты ссылок не меняются, меняются атрибуты самих файлов, при переходе на каталог рекурсивная обработка прекращается.
sudo chgrp -RL www-data folder
С использованием параметра -L при переходе к папке по символической ссылке рекурсивная обработка не прекращается. Обращаем ваше внимание на то, что параметры -H и -L использовать небезопасно, они могут дойти до системных файлов.
Команда chgrp Linux выполняет одну функцию – меняет группу у файлов и каталогов. При обработке символических ссылок надо быть предельно осторожным, чтобы не навредить системе, поэтому параметр -R не рекомендуется дополнять другими. Также вы можете менять пользователя и группу одновременно с помощью команды chown.
Как вы могли заметить, программа chgrp задаёт только одну группу, на деле же списки управления доступом (ACL) позволяют назначать несколько групп. Для работы с ними можно использовать утилиты setfacl и getfacl, также имеется утилита с графическим интерфейсом eiciel (в репозиториях Debian 10 и Ubuntu 20.04 лежит устаревшая версия, последняя (0.9.13) умеет задавать права рекурсивно).
Источник: https://losst.ru/ Материал распространяется под лицензией CC-BY-SA
Продолжая использовать данный сайт вы принимаете политику конфиденциальности и cookies