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

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

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

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

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

Синтаксис chgrp: в целом более простой. В нем также есть изящная функция, которая простым языком сообщает вам, какие изменения были внесены.

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

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

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

  Как сделать резервную копию настроек рабочего стола Gnome Shell в Linux

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

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

ls -l

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

sudo chgrp devteam gc.c

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

ls -l

sudo chgrp devteam gc.c в окне терминала

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

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

sudo chgrp devteam *.c

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

ls -l

sudo chgrp devteam * .c в окне терминала

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

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

sudo chgrp -c researchlab *.c

sudo chgrp -c researchlab * .c в окне терминала

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

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

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

sudo chgrp -c devteam ./backup

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

ls -l -d

sudo chgrp -c devteam ./backup в окне терминала

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

  Как добавить каталоги в путь в Linux

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

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

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

sudo chgrp -R devteam ./backup

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

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

sudo chgrp -R devteam ./backup в окне терминала

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

Использование справочного файла

До сих пор мы явно указывали 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

sudo chgrp --reference = gc.c gc.h в окне терминала

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

  Как записывать голосовые вызовы Discord в Linux

Использование 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

sudo chgrp --dereference devteam button_link в окне терминала

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

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

Используемая команда:

sudo chgrp --no-dereference devteam button_link

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

ls -l button-link

sudo chgrp --no-dereference devteam button_link в окне терминала

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

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

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