Вернуться назад

Группы

Перейти на страничку Users

Перейти на страничку 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