Команда CHGRP LINUX

14.12.2021, 10:30

Зачастую во время работы в Linux пользователи редко задумываемся о том, кто является владельцем файла. Если же говорить о запуске сервера, то расклад меняется. Для повышения безопасности сервер получает собственного пользователя. Нередко серверы используют одну и ту же группу, вроде www-data. Дальше рассмотрим, как работает данная функция с файлами и каталогами. Особое внимание уделим символическим линкам, так как они могут создать проблемы при использовании небезопасных параметров.

Что означает

Стандарт прав файлов появился в Linux из Unix. Так каждый объект имеет user, group помимо этого описываются права остальных пользователей (other). Права состоят из трёх пунктов: read, write, execute. Для изменения прав используется команда umask, но для изменения непосредственно владельца и группы используются команды chown. Для просмотра текущих прав можно использовать команду ls.

Синтаксис и опции

Общий вид команды chgrp:

$ chgrp [параметры] новая_группа имя_файла

 Список распространённых параметров команды chgrp:

  1. -h – работать непосредственно с самими символьными ссылками;
  2. --dereference – работать с файлами, а не самими символьными ссылками. Используется по умолчанию;
  3. -R – рекурсивная обработка каталога со всем его содержимым;
  4. -H – перейти по символическому линку и изменить атрибуты файла/каталога. Используется вместе с параметром -R;
  5. -L - перейти по символическому линку и продолжить рекурсивную обработку. Используется вместе с параметром -R;
  6. -P – при встрече с символьным линком обрабатывать только её. Используется вместе с параметром -R, является значением по умолчанию;
  7. --reference=имя_образца – использовать пу образца;
  8. -c – при обработке выводить только изменения;
  9. -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

$ 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

Она выполняет одну функцию – меняет группу у файлов и каталогов.

При обработке символических ссылок надо быть предельно осторожным, чтобы не навредить систем.