Зачастую во время работы в Linux пользователи редко задумываемся о том, кто является владельцем файла. Если же говорить о запуске сервера, то расклад меняется. Для повышения безопасности сервер получает собственного пользователя. Нередко серверы используют одну и ту же группу, вроде www-data. Дальше рассмотрим, как работает данная функция с файлами и каталогами. Особое внимание уделим символическим линкам, так как они могут создать проблемы при использовании небезопасных параметров.
Стандарт прав файлов появился в Linux из Unix. Так каждый объект имеет user, group помимо этого описываются права остальных пользователей (other). Права состоят из трёх пунктов: read, write, execute. Для изменения прав используется команда umask, но для изменения непосредственно владельца и группы используются команды chown. Для просмотра текущих прав можно использовать команду 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 и -L, рассмотрим ещё пару примеров. Напомним, что их надо использовать совместно с -R:
$ sudo chgrp -RH www-data folder
Использование -H поведение при обработке символических ссылок изменилось, теперь они обрабатываются так, как будто функции выполняются по отдельности. Атрибуты ссылок не меняются, меняются атрибуты самих объектов, при переходе на каталог рекурсивная обработка прекращается.
$ sudo chgrp -RL www-data folder
Она выполняет одну функцию – меняет группу у файлов и каталогов.
При обработке символических ссылок надо быть предельно осторожным, чтобы не навредить систем.
Примените скидку, вставив промокод в специальное поле при оформлении заказа: