Команда groupmod

Команда groupmod предназначена для задействования одноименной утилиты, осуществляющей модификацию параметров групп пользователей. Данная команда требует привилегий сперпользователя (или пользователя root) и значительно упрощает процесс модификации параметров групп пользователей по сравнению с командой vigr, которая позволяет редактировать файл базы данных групп пользователей с помощью текстового редактора vi.

Базовый синтаксис команды выглядит следующим образом:

# groupmod [параметры] имя-группы

Обязательным параметром утилиты является имя модифицируемой группы пользователей. Для указания модифицируемого параметра группы пользователей и его значения должен использоваться соотвествующий параметр, а именно, параметр -g для изменения идентификатора группы или параметр -n для изменения имени группы. Кроме того, утилита принимает несколько дополнительных параметров, а именно, параметр -o, позволяющий использовать неуникальный идентификатор группы и параметр -R, позволяющий использовать директорию из окружения chroot.

На работу утилиты оказывают влияние некоторые переменные из файла конфигурации /etc/login.defs. В частности, максимальное количество имен пользователей в записи, соотвествующей группе устанавливается с помощью переменной MAX_MEMBERS_PER_GROUP (используется крайне редко). При этом значения переменных GID_MIN, GID_MAX, SYS_GID_MIN и SYS_GID_MAX в случае смены идентификатора группы не принимаются во внимание.

Примеры использования

Изменение имени группы

Для изменения имени группы достаточно использовать утилиту groupmod с параметром -n. Это параметры группы regularusers:

$ grep regularusers /etc/group
regularusers:x:1001:

Сменим имя группы regularusers на regusers:

# groupmod -n regusers regularusers

Теперь следует убедиться в корректности смены имени группы:

$ grep regusers /etc/group
regusers:x:1001:

Несложно заметить, что хотя имя группы и изменилось, ее идентификатор остался прежним (1001).

Изменение идентификатора группы

Для изменения идентификатора группы достаточно использовать утилиту groupmod с параметром -g. При этом следует помнить о том, что в файловых системах хранятся идентификаторы владеющих файлами групп пользователей, поэтому вам придется найти все файлы, которыми владеет модифицируемая группа пользователей и сменить их владельцев с помощью команды chgroup. Для этой цели может использоваться утилита find:

# find /home -type f -group regularusers
/home/alexf/linux_faq.sql

Был найден один файл. Для начала убедимся в том, что файлом владеет интересующая нас группа пользователей regularusers:

$ stat /home/alexf/linux_faq.sql
Файл: /home/alexf/linux_faq.sql
Размер: 27398951 Блоков: 53520 Блок В/В: 4096 обычный файл
Устройство: 800h/2048d Inode: 7014718 Ссылки: 1
Доступ: (0664/-rw-rw-r--) Uid: ( 1000/ alexf) Gid: ( 1001/regularusers)
Контекст: unconfined_u:object_r:user_home_t:s0
Доступ: 2018-04-23 16:11:32.512652000 +0300
Модифицирован: 2018-04-03 00:48:17.506255000 +0300
Изменён: 2018-04-23 16:51:43.830882642 +0300
Создан: -

Теперь можно сменить идентификатор группы пользователей regularusers и снова проверить параметры файла:

# groupmod -g 1010 regularusers
$ stat /home/alexf/linux_faq.sql
Файл: /home/alexf/linux_faq.sql
Размер: 27398951 Блоков: 53520 Блок В/В: 4096 обычный файл
Устройство: 800h/2048d Inode: 7014718 Ссылки: 1
Доступ: (0664/-rw-rw-r--) Uid: ( 1000/ alexf) Gid: ( 1001/ UNKNOWN)
Контекст: unconfined_u:object_r:user_home_t:s0
Доступ: 2018-04-23 16:11:32.512652000 +0300
Модифицирован: 2018-04-03 00:48:17.506255000 +0300
Изменён: 2018-04-23 16:51:43.830882642 +0300
Создан: -

Теперь файлом владеет неизвестная группа пользователей с идентификатором 1001. Для исправления ситуации достаточно изменить группу владельцев файла с помощью команды chgrp:

# chgrp regularusers linux_faq.sql
$ stat /home/alexf/linux_faq.sql
Файл: /home/alexf/linux_faq.sql
Размер: 27398951 Блоков: 53520 Блок В/В: 4096 обычный файл
Устройство: 800h/2048d Inode: 7014718 Ссылки: 1
Доступ: (0664/-rw-rw-r--) Uid: ( 1000/ alexf) Gid: ( 1010/regularusers)
Контекст: unconfined_u:object_r:user_home_t:s0
Доступ: 2018-04-23 16:11:32.512652000 +0300
Модифицирован: 2018-04-03 00:48:17.506255000 +0300
Изменён: 2018-04-23 17:03:17.980826024 +0300
Создан: -

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