Группы пользователя хранятся в двух местах, и меняют их разные ключи usermod.
Основная группа одна — её GID записан в строке пользователя в /etc/passwd. Её получают новые файлы пользователя. Дополнительные группы перечислены в файле /etc/group: у каждой группы последнее поле — список её дополнительных участников.
sudo:x:27:student — student состоит в sudo дополнительно. Своей основной группы student в этом поле нет: она записана в его строке /etc/passwd.
Ключ usermod |
Что меняет |
|---|---|
-g группа |
основную группу |
-G группа1,группа2 |
весь список дополнительных групп — заменяет его целиком |
Поэтому -G lab-writers оставила у labmember из дополнительных одну lab-writers, а основная группа labmember не изменилась.
У ann в /etc/passwd GID 1005. Состоит ли она в группе devs?
$ getent group devs
devs:x:1005:
-
Членство уже записано в учётной записи: GID 1005 в строке ann делает devs её основной группой. Вход для этого не нужен.
-
Последнее поле — дополнительные участники. Основную группу задаёт GID в
/etc/passwd, а у ann он 1005 — номер devs. -
Пустое последнее поле значит только, что дополнительных участников нет. Основных ищут по GID в
/etc/passwd: у ann он 1005.
Основная группа записана в строке пользователя в /etc/passwd, а /etc/group перечисляет дополнительных участников. Поэтому ann в devs, хотя в строке группы её нет; id ann покажет gid=1005(devs).
Главное в шаге
-
Основная группа — GID в строке
/etc/passwd, дополнительные — в последнем поле строк/etc/group. -
usermod -Gзадаёт весь список дополнительных групп заново,-gменяет основную.