Введение
Разграничение прав пользователей в операционных системах семейства Linux во многом опирается на корректное распределение групповой принадлежности данных. Для изменения группы-владельца у файлов и директорий предусмотрена специализированная системная утилита chgrp. Ниже подробно рассмотрена работа с этой командой: от элементарных операций с единичными объектами до рекурсивной обработки файловых деревьев с флагом -R, дублирования параметров через --reference и тонкостей взаимодействия с символическими ссылками.
Основы работы с chgrp и модификация отдельного файла
Для демонстрации процесса создадим в системе новую группу с именем devteam, применив команду sudo groupadd -f devteam (флаг -f предотвратит ошибку, если группа уже зарегистрирована).

Затем подготовим тестовый текстовый документ во временном каталоге с помощью вызова touch /tmp/sample_doc.txt.

Чтобы оценить текущие метаданные созданного файла, включая назначенного пользователя и группу, выведем подробный список атрибутов командой ls -l /tmp/sample_doc.txt.

Служебная утилита chgrp предназначена именно для управления групповым владением элементами файловой структуры.
Переназначим группу документа на devteam, выполнив инструкцию sudo chgrp devteam /tmp/sample_doc.txt.
⚙️ [Ключевые параметры утилиты]
-c : выводит отчет исключительно по тем объектам, у которых атрибуты действительно изменились.-f : подавляет уведомления о большинстве неполадок при выполнении операции.-v : формирует развернутый отчет о каждом обрабатываемом элементе.-R : производит обход каталога вглубь, обновляя права на всех вложенных уровнях.--reference=RFILE : заимствует идентификатор группы у файла-образца (RFILE), исключая необходимость указывать имя группы вручную.

Убедимся в успешной смене группы на devteam, повторно запросив характеристики объекта через ls -l /tmp/sample_doc.txt.

Рекурсивное применение к структуре каталогов (-R)
Когда требуется обновить групповые привилегии для целой иерархии папок, прибегают к каскадной обработке. Сформируем многоуровневую структуру каталогов командной конструкцией mkdir -p /tmp/project_dir/sub.

Наполним созданные уровни тестовыми данными, сгенерировав пару файлов через touch /tmp/project_dir/file1.txt /tmp/project_dir/sub/file2.txt.

Перед вмешательством в атрибуты проверим исходное состояние корневой папки и всех ее вложений вызовом ls -lR /tmp/project_dir.

Флаг -R переводит chgrp в рекурсивный режим, заставляя утилиту последовательно обойти целевой каталог и переназначить группу каждому найденному внутри узлу.
Запустим пакетную модификацию прав в пользу группы devteam с помощью команды sudo chgrp -R devteam /tmp/project_dir.

Финальный аудит структуры через ls -lR /tmp/project_dir наглядно подтверждает: новая группа присвоена как родительской папке, так и файлам на всех глубинах вложенности.

Копирование параметров владения из файла-образца (–reference)
В практических сценариях бывает удобнее не вводить имя группы вручную, а продублировать права с уже существующего настроенного файла. Создадим новый объект для такого эксперимента: touch /tmp/target_file.txt.

Сопоставим исходные свойства файла-эталона и нового целевого документа с помощью ls -l /tmp/sample_doc.txt /tmp/target_file.txt.

Опция --reference позволяет применить группу файла-источника к указанным целевым файлам без явного указания названия роли.
Выполним команду sudo chgrp --reference=/tmp/sample_doc.txt /tmp/target_file.txt, скопировав групповые параметры из /tmp/sample_doc.txt в /tmp/target_file.txt.

Сделаем контрольную проверку файла через ls -l /tmp/target_file.txt — теперь он корректно принадлежит группе devteam.

Детализация вывода (-v, -c) и специфика символических ссылок (-h)
Для дальнейших экспериментов зарегистрируем в ОС еще одну рабочую группу вызовом sudo groupadd -f qateam.

Создадим мягкую ссылку на тестовый документ, воспользовавшись инструкцией ln -sf /tmp/sample_doc.txt /tmp/sample_link.

Оценим базовые атрибуты самого линка с помощью команды ls -l /tmp/sample_link.

Ключ -v полезен при отладке и в автоматических скриптах: он заставляет утилиту подробно комментировать каждый шаг.
Передадим права на документ группе qateam и запросим лог изменений командой sudo chgrp -v qateam /tmp/sample_doc.txt.

По умолчанию операции над символическими ссылками затрагивают файл-источник, а не сам указатель. Ключ -h меняет это поведение, адресуя операцию непосредственно файлу симлинка.
Сменим группу ярлыка на qateam без воздействия на оригинал: sudo chgrp -h qateam /tmp/sample_link.

Убедимся, что группа обновилась именно у ссылки, проверив запись через ls -l /tmp/sample_link.

Рассмотренные приемы работы с chgrp обеспечивают точный контроль над групповыми правами в Ubuntu. Грамотное комбинирование рекурсивных флагов, ссылочных параметров и ключей детального протоколирования помогает безопасно выстраивать совместную работу на Linux-серверах.