Группы для пользователей в Linux - основные и дополнительные

31:10:2013 Рі.

Как добавить пользователя в разные группы в Linux (CentOS, Fedora, Ubuntu, SUSE и пр.) - достаточно частый вопрос. В Windows системах подобные вопросы не возникают - добавление пользователей в группы дело обычнои и всем интуитивно понятное.

И, несмотря на то, что в Linux этот процесс не представляет большой сложности, все же вопрос добавления пользователя во множество групп иногда возникает у начинающих системных администраторов. В этой заметке дается информация об этом процессе и приводятся тесты.

Важно знать, что в Linux - начиная с CentOS и RedHat и заказчивая Ubuntu есть понятие основной и второстепенных групп. При чем количество второстепенных групп, условно, не ограничено.

В чем заключается отличие основных от вспомагательных групп (Secondary или Supplementary) в Linux?
Когда пользователь создает новый файл, его параметры принадлежности к группе берутся исходя из принадлежности к основной группе. Везде, где применяется однозначный ответ на вопрос принадлежности по группе используется основная группа. Вспомогательные группы потому и называются вспомогательные, поскольку несут только дополнительный функционал. К примеру, при применении разделении прав доступа по группам в Linux.

По умолчанию, практически во всех версиях Linux за исключением SUSE (из популярных) при создании нового пользователя он сразу добавляется в группу c одноименным своему имени названием. Это сделано в целях безопасности т.к. так проще ошибиться при разграничении прав доступа. Если мы добавляем пользователя в дополнительную группу Linux, то он будет иметь все те же права на объекты, которые указаны во втором октете прав. Т.е. логика достаточно прозрачна.

Важно! Ниже будут рассмотрены команды для добавления и модификации групп пользователя, к которым он принадлежит. Однако нужно сказать сразу, что если у пользователя не было прав на объект, а мы добавляем ему дополнительную группу, которая даст право ему на этот объект, то фактических прав он не получит до тех пор, пока не перелогинится в системе т.к. в момент логина происходит считывание правв по группам. Есть возможность обхода этого (типа su -l $USER - для текущего пользователя), но надежнее просто перелогиниться.

Как узнать в каких группах находится пользователь?

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

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

В ответ на команду получаем данные типа:

uid=501(test_user) gid=501(test_user) groups=501(test_user)

Как видим, мы получили текущие идентификатора для пользователя и группы. Основная группа пользователя Linux отображается в значении gid. Далее после значения groups идет перечисление всех групп, в которые входит данный пользователь. Все группы кроме той, которая указана в gid являются, соответственно, вспомогательными.

Задаем нужные группы (несколько) при добавлении пользователя

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

  1. -g - маленькая g в параметре означает добавление данному пользователю основной группы, которая указана после этого параметра
  2. -G - большая G, которая указана в параметре добавляет вспомогательные группы для данного пользователя. Можно добавлять сразу несколько групп, но при условии, что они перечислены через запятую, и между ними нет пробелов.


К примеру, мы добавим пользователя в основную и дополнительную группу при добавлении в систему сразу:

useradd test_user2 -g test -G test1

Здесь мы добавили нового пользователя в основную группу test и во вспомогательную test1.

 

Соответственно, если мы зададим после этого команду id с указанием test_user2, то мы получим следующий результат:

uid=503(test_user2) gid=502(test) groups=502(test),503(test1)

Изменение принадлежностей к группам существующих пользователей

Если пользователи и группы у нас в системе существуют и нам нужно внести только изменения в существующие принадлежности - используем команду usermod:

usermod -a -G test2 test_user2

Выше мы добавили пользователя во вспомогательную группу test2. Группа, при этом, должна уже существовать. Теперь если мы просмотрим текущие принадлежности данного пользователя к группам, мы увидим:

uid=503(test_user2) gid=502(test) groups=502(test),503(test1),505(test2)

Как видим, новая группа для данного пользователя была добавлена.

Важно! Флаг -a (или --append) обозначает, что к существующим принадлежностям к группам мы добавляем новую. Если бы мы не указали этого флага - в этом случае из вспомогательных групп осталась бы только одна - test2. И если мы хотим поменять основную группу - мы используем параметр -g (маленькая).

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

 

Добавить комментарий



Обновить

« Как заблокировать учетную запись в Linux или разблокировать   Vsftpd показывать скрытые файлы - решение »
← Раньше

Фотоальбом

fotic.jpg

Облако Тегов