
В Linux каждый файл связан с владельцем и группой и имеет разрешения, которые определяют, какие пользователи могут читать, писать или выполнять файл.
В этой статье объясняется, как использовать команду chgrp для изменения группы владельцев заданных файлов.
Синтаксис команды chgrp
Команда chgrp имеет следующий вид:
chgrp [ OPTIONS ] GROUP FILE..
-
GROUP— имя новой группы или идентификатор группы (GID). Числовой GID должен начинаться с символа+. -
FILE.., имя одного или нескольких файлов.
В отличие от команды chown , которая позволяет изменить владельца пользователя и группы, chgrp изменяет только владельца группы.
Чтобы узнать, к какой группе принадлежит файл, используйте команду ls -l .
Обычные пользователи могут изменить группу владельца файла, только если они являются его владельцем и только на группу, членом которой они являются. Административные пользователи могут изменить группу владельца всех файлов.
Как изменить владельца группы файлов
Чтобы изменить группу-владельца файла или каталога, вызовите команду chgrp , указав в качестве аргументов имя новой группы и целевой файл.
Например, чтобы изменить группу файла filename на www-data выполните:
chgrp www-data filename
Если вы запустите команду от имени непривилегированного пользователя, возникнет ошибка «Операция не разрешена». Чтобы скрыть сообщение об ошибке, вызовите команду с опцией -f . По умолчанию в случае успешного выполнения chgrp не выводит никаких данных и возвращает ноль.
Вы также можете передать несколько файлов в качестве аргументов команды chgrp :
chgrp www-data file1 file2 dir1
Используйте опцию -v для получения информации об обрабатываемых файлах:
chgrp www-data file1 file2
changed group of 'file1' from nginx to www-data group of 'file2' retained as www-data
Чтобы вывести информацию только о тех файлах, которые группа действительно изменяет, используйте -c вместо -v .
Вместо имени пользователя можно использовать числовой идентификатор группы (GID). В следующем примере группа владельца файла изменяется на новую группу с GID 1000:
chgrp +1000 filename
Как изменить владельца группы символических ссылок
Если команда chgrp не работает рекурсивно, ее поведение по умолчанию заключается в изменении группы-владельца целей символических ссылок, а не самих символических ссылок .
Например, если вы попытаетесь изменить группу символической ссылки symlink1 , которая указывает на /opt/file1 , chgrp изменит владельца файла или каталога, на который указывает символическая ссылка:
chgrp www-data symlink1
Скорее всего, вместо изменения целевой группы вы получите ошибку «невозможно разыменовать 'symlink1': отказано в доступе».
Ошибка возникает из-за того, что в большинстве дистрибутивов Linux по умолчанию символические ссылки защищены, и вы не можете выполнять операции с целевыми файлами. Эта опция задаётся в файле /proc/sys/fs/protected_symlinks . Значение 1 означает включение, а 0 отключение. Мы рекомендуем не отключать защиту символических ссылок.
Чтобы изменить группу-владельца самой символической ссылки, используйте опцию -h :
chgrp -h www-data symlink1
Как рекурсивно изменить владельца группы
Чтобы рекурсивно изменить группу владельцев всех файлов и каталогов в заданном каталоге, используйте опцию -R .
Например, следующая команда изменит владельца всех файлов и каталогов в каталоге /var/www на группу www-data :
chgrp -R www-data /var/www
При указании параметра recursive chgrp не будет переходить по символическим ссылкам и не будет вносить в них никаких изменений. Чтобы изменить группу-владельца символических ссылок, используйте параметр -h :
chgrp -hR www-data /var/www
Другие параметры, которые можно использовать при рекурсивном изменении владельца группы, — это -H и -L .
Если аргумент, переданный команде chgrp является символической ссылкой, опция -H заставит команду пройти по ней. Опция -L заставляет chgrp пройти по каждой обнаруженной символической ссылке на каталог. В большинстве случаев не следует использовать эти опции, так как это может привести к сбою системы или создать угрозу безопасности.
Заключение
chgrp изменяет группу владельцев файлов, каталогов и символических ссылок.
Хотя для изменения группы можно использовать более популярную команду chown , chgrp имеет простой и легко запоминающийся синтаксис.
Для получения дополнительной информации о команде chgrp посетите страницу руководства chgrp или введите man chgrp в терминале.
Если у вас есть вопросы или пожелания, не стесняйтесь оставлять комментарии.
Связанные руководства