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