Полный цикл в digital

Группы в Linux

Пользователь может принадлежать к двум типам групп:

  • Первичная группа или группа входа в систему это группа, которая назначается файлам, создаваемым пользователем. Обычно имя основной группы совпадает с именем пользователя. Каждый пользователь должен принадлежать ровно к одной основной группе
  • Вторичная или дополнительная группа используется для предоставления определенных привилегий пользователей. Пользователь может быть участником не одной или сразу нескольких вторичных групп

Разберемся с первичными и дополнительными группами. При создании пользователя обычно создается одноименная группа это первичная группа пользователя. Первичная группа используется, например, при создании файла.

Если пользователь Вася имеет первичную группу Вася и какие-то дополнительные группы, и он создал файл, то к файлу будут иметь доступ все пользователи которые входят в группу Вася. Но одна из дополнительных групп у Васи, это группа Разработчики, и у группы Разработчики не будет доступа к файлу, так как файл взял права от первичной группы Вася, а не от дополнительной Разработчики:

Файловый список пользователей и групп

Есть несколько способов узнать, к каким группам принадлежит пользователь, самый простой, посмотреть физические файлы:

  1. /etc/passwd основная группа пользователей
  2. /etc/group дополнительные группы пользователей
  3. /etc/shadow соленые хэши паролей

В passwd хранится информация о пользователях в системе, вот информация о пользователе vadik:

grep vadik /etc/passwd

Строка вывода:

vadik:x:1000:1000:vadik,,,:/home/vadik:/bin/bash

Разберем строку:

пользователь
|        uid
|       |    gid
|       |    |    группа
|       |    |    |        дом.каталог
|       |    |    |        |           оболочка
|       |    |    |        |           |
vadik:x:1000:1000:vadik,,,:/home/vadik:/bin/bash

То что после имени идет буква «x» означает что пароль зашифрован в файле shadow.

В /etc/group хранится информация о группах в системе, вот информация о группе vadik и о дополнительных группах пользователя vadik:

grep vadik /etc/group

Строки вывода:

adm:x:4:syslog,vadik
cdrom:x:24:vadik
sudo:x:27:vadik
dip:x:30:vadik
www-data:x:33:vadik
plugdev:x:46:vadik
lpadmin:x:122:vadik
lxd:x:134:vadik
vadik:x:1000:www-data
sambashare:x:135:vadik
docker:x:999:vadik

Здесь вначале идет имя группы, потом символ x обозначает что пароль зашифрован, затем gid, затем пользователи Linux для которых эта группа является дополнительной. Таким образом группа vadik имеет gid=1000, а пользователь vadik входит в дополнительные группы cdrom, sudo и так далее.

В /etc/shadow хранятся соленые хэши паролей пользователей, вот например строка для vadik:

grep vadik /etc/shadow

Строки вывода:

vadik:$y$j9T$D0ODw5g7Jo89MrJNg0SDE1$a.VC2c6miPYUS3VAKqe9WaTub17uPIgoZPF0lieOb/8:19512:0:99999:7:::

Строка файла содержит поля разделённые двоеточиями, в полях находится следующая информация:

  1. имя пользователя
  2. хеш пароля
  3. дата последней смены пароля в днях начиная с 1 января 1970 года, чем больше число, тем новее пароль
  4. минимальный срок действия пароля, если 0 то неограничен
  5. максимальный срок действия пароля
  6. период предупреждения о необходимости сменить пароль
  7. период неактивности пароля — у меня пустое поле, период неактивности отсутствует
  8. дата истечения срока действия учётной записи — у меня пустое поле, учётная запись никогда не устаревает
  9. зарезервированное поле для использования в будущем

Команда getent список всех групп системы

Чтобы просмотреть все группы присутствующие в системе, откройте файл /etc/group. Каждая строка в этом файле представляет информацию для одной группе:

nano /etc/group

Другой вариант — использовать команду getent которая отображает записи из баз данных настроенных в файле /etc/nsswitch.conf включая базу данных group которую мы можем использовать для запроса списка всех групп. Чтобы получить список всех групп, введите следующую команду:

getent group

Команда groups список всех групп в которых состоит пользователь

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

groups

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

groups имя_пользователя

Более подробный вывод дает команда id, покажет идентификатор пользователя uid, основную группу пользователя gid и вторичные группы groups пользователя:

id имя_пользователя

Чтобы напечатать только имена вместо чисел, используйте параметр -n, -g выведет только основную группу а -G все группы:

id -nG имя_пользователя

Команда gpasswd удаление пользователя из группы

Мы будем использовать gpasswd, опция -d сообщает, что нужно выполнить удаление, далее мы указываем пользователя, с которым будем работать и в конце группу, из которой его надо удалить:

gpasswd -d имя_пользователя группа
Заполните форму уже сегодня!
Для начала сотрудничества необходимо заполнить заявку или заказать обратный звонок. В ответ получите коммерческое предложение, которое будет содержать индивидуальную стратегию с учетом требований и поставленных задач
Работаем по будням с 9:00 до 18:00. Заявки, отправленные в выходные, обрабатываем в первый рабочий день до 12:00.
Спасибо, ваш запрос принят и будет обработан!
Эйч Маркетинг