Поиск по сайту:

Как использовать команду chgrp в Linux


Команда chgrp в Linux изменяет принадлежность группы к файлу или каталогу. Зачем использовать его вместо chown? Иногда отлично подходит швейцарский армейский нож, но когда вам действительно нужен скальпель, подойдет только скальпель.

Когда следует использовать chgrp

Вы используете команду chgrp, чтобы изменить групповое владение файлом или каталогом. Команда chown позволяет изменить владельца пользователя и владельца группы файла или каталога. Итак, зачем вам нужен или используется chgrp?

Ну, с одной стороны, это легко. Использование chown только для изменения настройки владельца группы немного противоречит здравому смыслу. Вы должны быть очень осторожны с синтаксисом. Это зависит от правильного размещения двоеточия «:». Потеряйте это, и вы не произведете изменений, о которых думали.

Синтаксис chgrp в целом более прост. Он также имеет удобную функцию, которая простыми словами сообщает вам, какие изменения он только что внес.

Это специально созданный и специализированный инструмент для выполнения поставленной задачи. chgrp полностью соответствует принципу разработки Unix, заключающемуся в том, чтобы делать что-то одно и делать это хорошо. Давайте посмотрим, что он может предложить.

Изменение группового владения файлом

Изменить групповое владение файлом очень просто. Вы должны использовать sudo с chgrp. Группы не принадлежат пользователям, поэтому решение о перемещении файла или каталога из одной группы в другую не принимается обычным пользователем. Это работа для тех, у кого есть root-права.

Мы собираемся изменить групповое владение исходным файлом C под названием «gc.c». Мы собираемся изменить его на группу «devteam».

Мы можем проверить текущие значения владения, используя ls с опцией -l (длинный список).

ls -l

Это команда для смены владельца группы. Введите sudo, пробел, chgrp , пробел, имя группы, которую мы собираемся установить в качестве владельца группы, пробел и имя файла. .

sudo chgrp devteam gc.c

Мы проверим, были ли внесены изменения, снова используя ls -l.

ls -l

Мы видим, что владение группой изменилось с «dave» на «devteam».

Чтобы сразу изменить владельца группы для набора файлов, вы можете использовать подстановочные знаки. Давайте изменим владельца группы для всех исходных файлов C в текущем каталоге. Мы будем использовать эту команду:

sudo chgrp devteam *.c

Мы можем проверить, что изменение было сделано, как мы и ожидали, используя ls -l.

ls -l

Все исходные файлы C в этом каталоге были изменены таким образом, что их группа принадлежит «devteam».

При использовании параметра -c (изменения) chgrp выведет список изменений, внесенных в каждый файл. Предположим, мы допустили ошибку, мы хотели, чтобы для исходных файлов C было установлено групповое владение «researchlab». Давайте исправим это сейчас. Мы будем использовать эту команду:

sudo chgrp -c researchlab *.c

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

Изменение группового владения каталогом

Изменить групповое владение каталогом так же просто. Мы можем использовать эту команду, чтобы изменить владельца группы для каталога «backup».

sudo chgrp -c devteam ./backup

Чтобы было ясно, эта команда изменит групповое владение самим каталогом, а не файлами внутри каталога. Мы будем использовать ls -l с опцией -d (каталог), чтобы убедиться, что это так.

ls -l -d

Групповое владение самим каталогом было изменено на «devteam».

Рекурсивный вариант

Если мы хотим изменить групповое владение файлами и каталогами, хранящимися в каталоге, мы можем использовать параметр -R (рекурсивный). Это приведет к тому, что chgrp изменит владельца группы для всех файлов и подкаталогов ниже целевого каталога.

Давайте попробуем это с каталогом «backup». Вот команда:

sudo chgrp -R devteam ./backup

Мы просмотрим файлы в одном из вложенных подкаталогов с помощью команды ls, а также проверим настройки одного из вложенных подкаталогов с помощью ls .

ls -l ./backup/images
ls -l -d ./backup/images

Мы видим, что групповое владение было изменено как для файлов во вложенных подкаталогах, так и для вложенных подкаталогов.

Использование эталонного файла

До сих пор мы явно указывали chgrp имя группы, которую хотим использовать. Мы также можем использовать chgrp таким образом, чтобы он говорил: «Установите групповое владение этим файлом таким же, как у этого файла».

Давайте установим групповое владение «gc.h» таким же, как «gc.c».

Мы можем проверить текущие настройки «gc.c» и «gc.h», используя ls.

ls -l gc.c
ls -l gc.h

Нам нужно использовать опцию --reference. Право собственности на группу копируется из эталонного файла в другой файл. Позаботьтесь о правильном размещении файлов.

sudo chgrp --reference=gc.c gc.h

Мы будем использовать ls для проверки того, что настройки были переданы в «gc.h».

ls -l gc.h

Файл «gc.h» теперь принадлежит той же группе, что и «gc.c».

Использование chgrp с символическими ссылками

Мы можем использовать chgrp, чтобы изменить групповое владение символическими ссылками или файлом, на который указывает символическая ссылка.

Для этого примера мы создали символическую ссылку с именем «button_link». Это указывает на файл с именем «./backup/images/button_about.png». Чтобы изменить групповое владение файлом, мы должны использовать параметр --dereference. Это изменит настройки файла и оставит символическую ссылку без изменений.

Давайте проверим настройки символической ссылки с помощью ls -l.

ls -l button_link

Команда для изменения файла:

sudo chgrp --dereference devteam button_link

Мы проверим, что символическая ссылка не изменилась, используя ls, а также проверим настройки группового владения файлом.

ls -l button_link
ls -l ./backup/images/button_about.png

Символическая ссылка не изменилась, а в файле «button_about.png» было изменено его групповое владение.

Чтобы изменить групповое владение самой символической ссылкой, мы должны использовать параметр --no-dereference.

Команда для использования:

sudo chgrp --no-dereference devteam button_link

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

ls -l button-link

На этот раз затронутым элементом была сама символическая ссылка, а не файл, на который она указывает.

Красиво и просто

Просто хорошо. Это означает, что меньше нужно помнить и меньше путаться. Это должно означать меньше ошибок.

RELATED: Best Linux Laptops for Developers and Enthusiasts