Перейти на страничку Permissions
Где хранятся группы
# Вывести список всех групп в системе:
cat /etc/group
# или:
getent group
# Узнать основную группу пользователя:
cat /etc/passwd | grep mark
# или:
getent passwd mark
С помощью groups можно посмотреть группы, в которых состоит пользователь:
# Список групп, в которых состоит текущий пользователь:
groups
# Группы, в которых состоит конкретный пользователь:
groups mark
Команда id выводит более подробную информацию: текущего пользователя, его основную группу и группы в которых он состоит, а также показывает id пользователя и групп:
# Группы, в которых состоит текущий пользователь:
id
# uid=1000(mark) gid=1000(mark) groups=1000(mark),998(wheel)
# Группы, в которых состоит конкретный пользователь:
id mark
# uid=1000(mark) gid=1000(mark) groups=1000(mark),998(wheel)
Важный момент!!!
Первые две комманды покажут группы текущей сессии, а вторые две покажут группы из /etc/group:
# группы текущей сессии:
groups
id
# группы из файла /etc/group:
groups mark
id mark
Ниже – пример, иллюстрирующий различие между groups и groups mark, между id и id mark.
Добавить пользователя mark в группу gotosocial:
sudo usermod -aG gotosocial mark
# sudo usermod --append --groups gotosocial mark
# Проверим:
groups
# mark wheel
groups mark
# mark : mark wheel gotosocial
getent group gotosocial
# gotosocial:x:963:mark
cat /etc/group | grep gotosocial
# gotosocial:x:963:mark
То есть в файле /etc/group пользователь mark добавился в группу gotosocial, но в текущей сессии это изменение ещё не применилось.
Что делать!
Нужно перелогиниться.
Либо, если срочно нужно, чтобы прям в текущем shell'е она применилась, можно воспользоваться командой newgrp. Эта команда меняет основную группу пользователя для текущего shell'а. Она не трогает файлы /etc/passwd и /etc/group.
newgrp gotosocial
# здесь мы меняем основную группу для текущей оболочки (текущей сессии shell)
# в текущем терминале группа станет доступна:
groups
Добавление и удаление групп:
# Добавить группу kakashka:
sudo useradd kakashka
# Добавить группу с явным указанием GID:
sudo groupadd -g 1050 bukashka # сокращённый флаг
sudo groupadd --guid 1051 perdashka # то же самое
# Удалить группу:
sudo groupdel perdashka
# Нельзя удалить основную группу пользователя
Добавление в группы и удаление из групп пользователей:
# Добавить пользователя в группу, без удаления остальных групп:
sudo usermod -aG bukashka mark # сокращённая запись
sudo usermod --append --groups bukashka mark # то же самое
# Удалить юзера mark из группы bukashka:
sudo gpasswd -d mark bukashka
sudo gpasswd --delete mark bukashka # то же самое
# Через usermod (передаём весь список без bukashka):
sudo useradd -G wheel,mark,gotosocial mark
sudo useradd --groups wheel,mark,gotosocial mark # то же самое
# то есть, по сути это не удаление группы, ...
# ... а полная замена списка групп, в которых юзер состоит
Поменять основную группу пользователя:
sudo usermod -g gotosocial mark # сокращённая запись
sudo usermod -g 1001 mark # то же самое
sudo usermod --gid gotosocial mark # то же самое
sudo usermod --gid 1001 mark # то же самое
Команды, которые пригодятся для работы с группами и которые мы использовали чуть выше:
groupadd
groupdel
groups
id
getent
usermod
gpasswd