Способы оплаты Abuse

Команда CHGRP LINUX

14.12.2021, 10:30

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

Что означает

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

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

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

$ chgrp [options] new_group file_name

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

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

Посмотрим на то, как будет работать параметр -h, меняющий атрибуты символической ссылки:

$ sudo chgrp -h www-data sym_file

Группа была задана не только каталогу, но и всем файлам внутри. Обратите внимание на то, что поведение изменилось, теперь при обработке символической ссылки атрибуты выставляются для самой ссылки, а не объект.

Чтобы увидеть разницу между параметрами -H и -L, рассмотрим ещё пару примеров. Напомним, что их надо использовать совместно с -R:

$ sudo chgrp -RH www-data folder

Использование -H поведение при обработке символических ссылок изменилось, теперь они обрабатываются так, как будто функции выполняются по отдельности. Атрибуты ссылок не меняются, меняются атрибуты самих объектов, при переходе на каталог рекурсивная обработка прекращается.

$ sudo chgrp -RL www-data folder

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

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