ВсёПросто

Работа с пользователями и группами в Linux

Содержание

Управление пользователями в Linux

В своих прошлых постах блога я уже затрагивал тему пользователей в операционной системе Linux.

Например в теме о правах доступа в Linux я затрагивал вопросы принадлежности пользователя к группе, а так же то, что пользователи и группы имеют свои UID и GID. Так же поднималась тема о сбросе пароля пользователя root.

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

Linux — это многопользовательская операционная система. Каждый пользователь в Linux принадлежит одной основной группе и одной или нескольким дополнительным группам.

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

Данные манипуляции производятся с помощью команд: useradd, groupadd, userdel, groupdel, usermod, groupmod, а так же passwd, gpasswd, id. Более подробно: Описание команд управления пользователями Linux.

Существуют так же и графические средства администрирования пользователями, обычно они расположены в оболочке X в разделе Администрирование — Пользователи и группы.

Особенности управления пользователями в Linux

Пример добавления пользователя с помощью шелла:

user-add-server:~# groupadd test user-add-server:~# useradd -c «Test Test» -g test -m test user-add-server:~# passwd test Введите новый пароль UNIX: Повторите ввод нового пароля UNIX: passwd: пароль успешно обновлён user-add-server:~# id test uid=1001(test) gid=1001(test) группы=1001(test) user-add-server:~# ls -ld /home/test/ drwxr-xr-x 2 test test 4096 Дек 16 10:24 /home/test/ user-add-server:~#

В примере мы добавляем группу для нового пользователя (groupadd), далее создаем нового пользователя с полным именем Test Test, имеющего основную группу test и логин test, далее задаем пароль для пользователя test (passwd test) и проверяем параметры созданного пользователя (id и созданный каталог пользователя /home/test/). В листинге видно, что UID и GID — более 1000. Данная особенность является признаком обычного пользователя. Значения ниже (меньше) 1000 (а в некоторых дистрибутивах — меньше 500) указывают на то, что пользователь является системным пользователем.

В соответствии с соглашением, системные пользователи обычно имеют id меньше, чем 100, а пользователь root имеет id, равный 0. Автоматическая нумерация обычных пользователей начинается со значения UID_MIN, установленного в файле /etc/login.defs, это значение обычно установлено в 500 или 1000.

Помимо учетных записей обычных пользователей и учетной записи пользователя root, обычно в системе бывает несколько учетных записей специального назначения для демонов, таких как FTP, SSH, mail, news и т.д.

Такие учетные записи часто управляют файлами, но к ним невозможно получить доступ путем обычной регистрации в системе.

Поэтому обычно они имеют login shell, определенный как /sbin/nologin или /bin/false, чтобы попытки зарегистрироваться в системе терпели неудачу.

В некоторых системах, команда(ы) добавления пользователей имеют расширенный функционал. То есть, для примера, команда useradd в дистрибутивах Fedora и Red Hat по умолчанию, для нового пользователя создает новую группу и для отмены данной функции, необходимо использовать опцию -n. Для уточнения таких вопросов, необходимо обратиться к документации дистрибутива.

При удалении пользователя, его каталог не удаляется. В результате можно получить интересную ситуацию:

user-add-server:~# userdel test user-add-server:~# groupdel test user-add-server:~# ls -ld /home/test/ drwxr-xr-x 2 1001 1001 4096 Дек 16 10:24 /home/test/ user-add-server:~# groupadd test123 user-add-server:~# useradd -c «Test Test» -g test123 -m test123 user-add-server:~# ls -ldn /home/test* drwxr-xr-x 2 1001 1001 4096 Дек 16 14:30 /home/test drwxr-xr-x 2 1001 1001 4096 Дек 16 14:29 /home/test123 user-add-server:~# ls -ld /home/test* user-add-server:~# ls -ld /home/test* drwxr-xr-x 2 test123 test123 4096 Дек 16 10:24 /home/test drwxr-xr-x 2 test123 test123 4096 Дек 16 14:25 /home/test123 user-add-server:~# passwd test123 Введите новый пароль UNIX: Повторите ввод нового пароля UNIX: passwd: пароль успешно обновлён user-add-server:~# su -l test123 test123@user-add-server:~$ pwd /home/test123 test123@user-add-server:/home/mc-sim$ ls /home/ mc-sim  test  test123 test123@user-add-server:~$ cd /home/mc-sim/ test123@user-add-server:/home/mc-sim$ ls -la итого 24 drwxr-xr-x 2 mc-sim mc-sim 4096 Ноя 15 12:31 . drwxr-xr-x 6 root   root   4096 Дек 16 14:25 .. -rw——- 1 mc-sim mc-sim   99 Ноя 15 13:45 .bash_history -rw-r—r— 1 mc-sim mc-sim  220 Окт  1 17:42 .bash_logout -rw-r—r— 1 mc-sim mc-sim 3116 Окт  1 17:42 .bashrc -rw-r—r— 1 mc-sim mc-sim  675 Окт  1 17:42 .profile test123@user-add-server:/home/mc-sim$ rm /home/mc-sim/.bash_logout rm: удалить защищенный от записи обычный файл `/home/mc-sim/.bash_logout'? y rm: невозможно удалить `/home/mc-sim/.bash_logout': Отказано в доступе test123@user-add-server:/home/mc-sim$ rm /home/test/.bashrc test123@user-add-server:/home/mc-sim$

В приведенном примере мы удаляем пользователя и группу test, созданную ранее. При этом каталог данного пользователя остался не тронутым. Как видно из листинга, права у каталога остались для id 1001.

Далее мы создаем нового пользователя и группу, но уже с другим именем — test123. Данному пользователю присваивается UID и GID — ранее существующего пользователя test.

Посмотрев  список каталогов, начинающиеся на /home/test* с ключом -n и без него, видим, что получилось — каталог пользователя test стал принадлежать пользователю test123, о чем нам говорят права доступа -rw-r—r— test123 test123.

Входим в систему под пользователем test123 и для проверки прав доступа, в каталоге /home/test пробуем удалить файл, а так же пробуем удалить файл из каталога третьего пользователя — mc-sim. Данный пример хорошо иллюстрирует, что в Linux все привязано к идентификаторам.

Управление базами данных пользователей и групп в Linux

Основные файлы, содержащие информацию о пользователях и группах, — это четыре файла в каталоге /etc.

/etc/passwd

файл паролей, содержащий основную информацию о пользователях

/etc/shadow

файл теневых шифрованных паролей, содержащий зашифрованные пароли

/etc/group

файл групп, содержащий основную информацию о группах и принадлежащих этим группам пользователях

/etc/gshadow

файл теневых групп, содержащий шифрованные пароли групп

Данные файлы редактировать обычным текстовым редактором крайне не рекомендуется. Они (файлы), обновляются при выполнении вышеуказанных команд, при этом при изменении — блокируются и синхронизируются.

Если все же есть острая необходимость в редактировании указанный файлов, то при помощи команды vipw можно безопасно редактировать файл /etc/passwd, а при помощи команды vigr безопасно редактировать файл /etc/group. Эти команды заблокируют необходимые файлы на то время, пока при помощи редактора vi будут производиться изменения.

Если вы вносите изменения в файл /etc/passwd, команда vipw подскажет, что необходимо проверить, не нужно ли обновить и файл /etc/shadow. Подобным образом, если вы обновляете файл /etc/group при помощи команды vigr, вы получите подсказку, что необходимо обновить и файл /etc/gshadow.

Если необходимо удалить администраторов группы, необходимо использовать команду vigr, поскольку команда gpasswd позволяет только добавлять администраторов.

Обращаю внимание, что в современных системах, файлы passwd и group не хранят пароли в открытом виде. Это сделано из соображений безопасности. Сами файлы passwd и group должны быть доступными для чтения для всех, а зашифрованные пароли — недоступными для чтения для всех.

Поэтому зашифрованные пароли хранятся в теневых файлах, и эти файлы доступны для чтения только пользователю root.

Необходимый доступ для изменения аутентификационных данных обеспечивается при помощи suid-программы, которая имеет полномочия пользователя root, но может быть запущена любым пользователем.

Файл /etc/passwd

user-add-server:~# cat /etc/passwd root:x:0:0:root:/root:/bin/bash lp:x:7:7:lp:/var/spool/lpd:/bin/sh sshd:x:101:65534::/var/run/sshd:/usr/sbin/nologin test123:x:1001:1001:Test Test:/home/test123:/bin/sh

Файл /etc/passwd содержит одну строку для каждого пользователя системы. Каждая строка содержит семь полей, разделенных двоеточиями (:), описание полей на примере пользователя root:

поле значение описание
Имя пользователя root имя, используемое для входа в систему (логин)
Пароль x пароль пользователя (если зашифрован, используется символ — x)
id пользователя (UID) 0 Идентификатор пользователя
id группы (GID) 0 Идентификатор группы

Фундаментальные основы Linux. Часть VII. Управление локальными учетными записями пользователей

Библиотека сайта rus-linux.net

Оригинал: Linux Fundamentals Paul Cobbaut 16 октября 2014 г.Перевод: А.Панин

Дата перевода: 23 декабря 2014 г.

Глава 29. Группы пользователей

Учетные записи пользователей системы могут объединяться в рамках групп. Концепция групп пользователей позволяет устанавливать права доступа на уровне групп пользователей вместо установки аналогичных прав доступа для каждого отдельного пользователя.

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

Более опытные пользователи могут использовать инструменты с интерфейсом командной строки для управления учетными записями пользователей, проявляя при этом осторожность: некоторые дистрибутивы не позволяют работать одновременно с инструментами для управления группами пользователей с графическим интерфейсом и интерфейсом командной строки (примером может служить инструмент YaST из состава дистрибутива Novell Suse). Опытные системные администраторы могут осуществлять непосредственное редактирование соответствующих файлов с помощью текстового редактора vi или утилиты vigr.

Утилита groupadd

Группы пользователей могут создаваться с помощью утилиты groupadd. В примере ниже показана методика создания пяти групп (без добавления в них пользователей).root@laika:~# groupadd tennisroot@laika:~# groupadd footballroot@laika:~# groupadd snookerroot@laika:~# groupadd formula1root@laika:~# groupadd salsa

Файл group

Пользователи могут состоять в нескольких группах. Членство пользователей в группах описывается в файле /etc/group.

root@laika:~# tail -5 /etc/grouptennis:x:1006:football:x:1007:snooker:x:1008:formula1:x:1009:salsa:x:1010:root@laika:~#

Первым полем в строке с описанием группы пользователей является имя группы. Во втором поле размещается (зашифрованный) пароль группы (это поле может быть пустым).

В третьем поле размещается идентификатор группы или значение GID. Четвертое поле является списком членов группы, который в данном случае является пустым, так как в группах нет пользователей.

Команда groups

Пользователь может выполнить команду groups для ознакомления со списком групп, в которых он состоит.[harry@RHEL4b ~]$ groupsharry sports[harry@RHEL4b ~]$

Утилита usermod

Членство пользователя в группах может быть изменено с помощью утилиты useradd или usermod.

root@laika:~# usermod -a -G tennis ingeroot@laika:~# usermod -a -G tennis katrienroot@laika:~# usermod -a -G salsa katrienroot@laika:~# usermod -a -G snooker sandraroot@laika:~# usermod -a -G formula1 anneliesroot@laika:~# tail -5 /etc/grouptennis:x:1006:inge,katrienfootball:x:1007:snooker:x:1008:sandraformula1:x:1009:anneliessalsa:x:1010:katrienroot@laika:~#

Проявляйте осторожность при использовании утилиты usermod для добавления пользователей в группы. По умолчанию утилита usermod будет удалять пользователя из всех групп, в которых он состоял, если имена данных групп не были переданы в составе команды! Использование параметра -a (append — дополнение) позволяет избежать данного поведения.

Утилита groupmod

Вы можете изменить имя группы пользователей с помощью утилиты groupmod.root@laika:~# groupmod -n darts snooker root@laika:~# tail -5 /etc/grouptennis:x:1006:inge,katrienfootball:x:1007:formula1:x:1009:anneliessalsa:x:1010:katriendarts:x:1008:sandra

Утилита groupdel

Вы можете навсегда удалить группу пользователей с помощью утилиты groupdel.root@laika:~# groupdel tennisroot@laika:~#

Утилита gpasswd

Также вы можете делегировать функции контроля над членством в определенной группе пользователей другому пользователю с помощью утилиты gpasswd. В примере ниже мы делегируем права на добавление пользователей в группу sports и удаление их из нее пользователю serena.

После этого мы используем команду su для добавления пользователя harry в группу sports от лица пользователя serena.

[root@RHEL4b ~]# gpasswd -A serena sports[root@RHEL4b ~]# su — serena[serena@RHEL4b ~]$ id harryuid=516(harry) gid=520(harry) группы=520(harry)[serena@RHEL4b ~]$ gpasswd -a harry sportsДобавление пользователя harry в группу sports[serena@RHEL4b ~]$ id harryuid=516(harry) gid=520(harry) группы=520(harry),522(sports)[serena@RHEL4b ~]$ tail -1 /etc/groupsports:x:522:serena,venus,harry[serena@RHEL4b ~]$ Администраторы групп пользователей не обязаны быть членами этих групп. Они могут удалить свои учетные записи из администрируемых ими групп пользователей и это никак не повлияет на их возможности добавления пользователей в эти группы или удаления пользователей из них.[serena@RHEL4b ~]$ gpasswd -d serena sportsУдаление пользователя serena из группы sports[serena@RHEL4b ~]$ exit Информация об администраторах групп пользователей хранится в файле /etc/gshadow.[root@RHEL4b ~]# tail -1 /etc/gshadowsports:!:serena:venus,harry[root@RHEL4b ~]# Для удаления всех учетных записей администраторов из группы пользователей следует использовать утилиту gpasswd с параметрами для задания пустого списка администраторов.[root@RHEL4b ~]# gpasswd -A «» sports

Утилита newgrp

Вы можете запустить дочернюю командную оболочку с новой временной основной группой пользователя, воспользовавшись командой newgrp.root@rhel65:~# mkdir prigrouproot@rhel65:~# cd prigroup/root@rhel65:~/prigroup# touch standard.txtroot@rhel65:~/prigroup# ls -lитого 0-rw-r—r—. 1 root root 0 апр 13 17:49 standard.

txtroot@rhel65:~/prigroup# echo $SHLVL1root@rhel65:~/prigroup# newgrp tennisroot@rhel65:~/prigroup# echo $SHLVL2root@rhel65:~/prigroup# touch newgrp.txtroot@rhel65:~/prigroup# ls -lитого 0-rw-r—r—. 1 root tennis 0 апр 13 17:49 newgrp.txt-rw-r—r—. 1 root root 0 апр 13 17:49 standard.

txtroot@rhel65:~/prigroup# exitexitroot@rhel65:~/prigroup#

Утилита vigr

По аналогии с утилитой vipw, утилита vigr может использоваться для редактирования файла /etc/group в ручном режиме, так как она осуществляет корректную блокировку этого файла в процессе редактирования. Текстовый редактор vi или утилита vigr может использоваться для управления группами пользователей исключительно опытными системными администраторами.

Практическое задание: группы пользователей

1. Создайте группы пользователей tennis, football и sports.

2. С помощью одной команды сделайте пользователя venus членом групп tennis и sports.

3. Переименуйте группу пользователей fotball в foot.

4. Используйте текстовый редактор vi для добавления пользователя serena в группу пользователей tennis.

5. Используйте команду id для того, чтобы убедиться, что пользователь serena состоит в группе пользователей tennis.

6. Сделайте кого-либо из пользователей ответственным за управление членством пользователей в группах foot и sports. Проверьте работоспособность использованного механизма.

Корректная процедура выполнения практического задания: группы пользователей

1. Создайте группы пользователей tennis, football и sports.

groupadd tennis ; groupadd football ; groupadd sports

2. С помощью одной команды сделайте пользователя venus членом групп tennis и sports.

usermod -a -G tennis,sports venus

3. Переименуйте группу пользователей fotball в foot.

groupmod -n foot football

4. Используйте текстовый редактор vi для добавления пользователя serena в группу пользователей tennis.

5. Используйте команду id для того, чтобы убедиться, что пользователь serena состоит в группе пользователей tennis.

id (после выхода из системы и входа в нее пользователь serena должен быть членом группы)

6. Сделайте кого-либо из пользователей ответственным за управление членством пользователей в группах foot и sports. Проверьте работоспособность использованного механизма.

gpasswd -A (для того, чтобы сделать пользователя ответственным за управление членством в группе пользователей)gpasswd -a (для того, чтобы сделать пользователя членом группы пользователей)

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

Группы пользователей Linux

Основа распределения прав доступа в операционной системе Linux лежит на понятии пользователь. Пользователю-владельцу файла выдаются определенные полномочия для работы с ним, а именно на чтение, запись и выполнение.

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

Но еще при создании Linux, разработчики поняли, что этого явно недостаточно.

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

Что такое группы?

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

У каждого человека свой аккаунт на нашем компьютере. Администраторы могут настраивать систему, пользователям же лучше не давать воли, чтобы что-то не сломали.

Поэтому администраторы объединяются в группу admin, и ей дается доступ ко всему оборудованию, реально же ко всем файлам в каталоге dev, а пользователи, объеденные в группу users, и этой группе дается возможность читать и записывать файлы в общий каталог, с помощью которого они могут обмениваться результатами своей работы.

Мы могли бы назначать права для каждого пользователя отдельно разрешая ему доступ к тому или иному файлу, но это слишком неудобно. Поэтому и были придуманы группы. Говорите, да ничего, можно назначить? Ну а теперь представьте что наши пользователи — это процессы.

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

А теперь давайте рассмотрим как посмотреть группы linux.

Группы в Linux

Все группы, созданные в системе, находятся в файле /etc/group. Посмотрев содержимое этого файла, вы можете узнать список групп linux, которые уже есть в вашей системе. И вы будете удивлены.

vi /etc/group

Кроме стандартных root и users, здесь есть еще пару десятков групп. Это группы, созданные программами, для управления доступом этих программ к общим ресурсам.

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

Здесь можно считать, что пользователь — это одно и то же что процесс, потому что у процесса все полномочия пользователя, от которого он запущен.

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

Теперь, когда вы знаете зачем использовать группы в linux и какие они есть по умолчанию, рассмотрим управление группами LInux.

Управление группами Linux

Управлять группами можно и с помощью графического интерфейса. В KDE есть программа Kuser специально предназначенная для этого, в Gnome это выполняется с помощью настроек системы.

Кроме того, в популярных дистрибутивах есть отдельные инструменты, такие как YaST в OpenSUSE или Настройки Ubuntu. Но с графическим интерфейсом я думаю вы разберетесь. А мы рассмотрим управление группами linux через терминал.

Сначала разберемся с файлами, а уже потом с пользователями.

При создании файла ему назначается основная группа пользователя который его создал. Это просто например:

ls -l ~/

Здесь вы можете видеть, что владелец всех папок sergiy и группа тоже sergiy. Правильно, так как эти пользователи были созданы мной. Но давайте пойдем дальше:

ls -l /dev/

Здесь мы видим что дисковым устройствам sd* назначена группа disk, а это все значит, что пользователь, состоящий в этой группе, может получить к ним доступ. Или еще пример:

ls -l /var/log/

Все как мы рассматривали в предыдущем пункте. Но эти группы могут быть не только установлены системой, но и вы сами вручную можете менять группы файлов для этого есть команда chgrp:

chgrp имя_группы имя_файла

Например создадим файл test:

touch test

И изменим для него группу:

chgrp adm test

Теперь этот файл смогут прочитать все пользователи из группы adm.

Если вы хотите создать группу linux, это можно сделать командой newgrp:

sudo groupadd test

С пользователями ситуация немного сложнее. Пользователь имеет основную группу, она указывается при создании, а также несколько дополнительных.

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

Дополнительные группы нужны, чтобы мы могли разрешить пользователям доступ к разным ресурсам добавив его в эти группы в linux.

Управление группами Linux для пользователя выполняется с помощью команды usermod. Рассмотрим ее синтаксис и опции:

$ usermod опции имя_пользователя

Добавить пользователя в группу можно командой usermod:

sudo usermod -G -a имя_группы имя_пользователя

Можно добавить пользователя в группу linux временно, командой newgrp. Откроется новая оболочка, и в ней пользователь будет иметь нужные полномочия, но после закрытия все вернется как было:

sudo newgrp имя_группы

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

sudo usermod -G -a disk sergiy

Теперь вы можете монтировать диски без команды sudo:

mount /dev/sda1 /mnt

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

groups

Также можно использовать команду id. В первом случае мы просто видим список групп linux, во втором дополнительно указанны id группы и пользователя. Чтобы включить пользователя в группу Linux, для основной группы используется опция -g:

sudo usermod -g test sergiy

Теперь все каталоги в домашней папке пользователя имеют группу test. Удалить пользователя из группы в linux можно той же командой с опцией R:

sudo usermod -R группа пользователь

Ну и наконец, удалить группу Linux можно командой:

sudo delgroup имя_группы

Выводы

Как в Linux добавить пользователя в группу (или вторичную группу)

Учетные записи пользователей могут быть назначены одной или нескольким группам в Linux. Вы можете настроить права доступа к файлам и другие привилегии по группам. Например, на Ubuntu только пользователи из группы sudo могут использовать команду sudo для получения повышенных разрешений.

Как создать новую группу в Linux

Если вы хотите создать новую группу в своей системе, используйте команду groupadd, заменив new_group на имя группы, которую вы хотите создать.

Вам также нужно будет использовать sudo с этой командой (или в дистрибутивах Linux, которые не используют sudo, вам нужно будет запустить команду su, чтобы получить повышенные разрешения перед запуском команды).

sudo groupadd new_group

Добавление существующей учетной записи пользователя в группу

Чтобы добавить существующую учетную запись пользователя в группу в вашей системе, используйте команду usermod, заменив group_name на имя группы, в которую вы хотите добавить пользователя, в user_name на имя пользователя, которого хотите добавить.

usermod -a -G group_name user_name

Например, для добавления пользователя mial в группу sudo, используйте следующую команду:

usermod -a -G sudo mial

Изменение первичной группы пользователя

Хотя учетная запись пользователя может входить в нескольких групп, одна из групп всегда является «основной группой», а остальные являются «вторичными группами». Процесс входа пользователя, файлы и папки, созданные пользователем, будут назначены первичной группе.

Чтобы изменить основную группу, которой назначен пользователь, запустите команду usermod, заменив group_name на имя группы, а user_name на имя учетной записи пользователя.

usermod -g group_name user_name

Обратите внимание здесь на -g. Когда вы используете маленькую g, вы назначаете главную группу. Когда вы используете заглавную -G , как в примерах выше, вы назначаете вторичную группу.

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

Чтобы просмотреть группы, которым назначена текущая учетная запись пользователя, выполните команду groups. Вы увидите список групп.

groups

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

id

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

groups user_nameВы также можете просмотреть числовые идентификаторы, связанные с каждой группой, запустив команду id и указав имя пользователя.
id user_name

Первой группой в списке групп или группой, показанной после «gid=» в списке идентификаторов, является первичная группа учетной записи пользователя. Другие группы – это вторичные группы. Итак, на скриншоте ниже основной группой учетной записи пользователя является mial.

Создание нового пользователя и назначение группы в одной команде

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

useradd -G group_name user_name

Например, чтобы создать новую учетную запись пользователя с именем jsmith и назначить эту учетную запись группе ftp, вы должны запустить:

useradd -G ftp jsmith

Конечно, вы захотите назначить пароль для этого пользователя:

passwd jsmith

Добавление пользователя в несколько групп

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

usermod -a -G group1,group2,group3 user_name

Например, чтобы добавить пользователя с именем mial в группы ftp, sudo и example, вы должны запустить:

usermod -a -G ftp,sudo,example mial

Вы можете указать столько групп, сколько хотите – просто разделите их все запятой.

Как просмотреть все группы в системе

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

getent group

Этот вывод также покажет вам, какие учетные записи пользователей являются членами групп. Итак, на скриншоте ниже мы видим, что учетные записи пользователей syslog и mial являются членами группы adm.

Это должно охватывать все, что вам нужно знать о добавлении пользователей в группы в командной строке Linux.

Пользователи и группы в linux. Добавление удаление редактирование

Системы, обеспечивающие многопользовательский доступ, будь то операционная система ОС, программное обеспечение (ПО), система управления контентом (CMS), очень важно иметь инструментарий для надёжного управления пользователями (их аккаунтами или учётными записями, пользовательскими конфигурациями, домашними каталогами и т. д.

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

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

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

Файл /etc/passwd – описание локальных учётных записей

Если в системе не используется какая-либо автоматизированная служба управления каталогами (например LDAP, NIS), то файл /etc/passwd – это именно тот файл, в котором хранится информация об учётных записях пользователей, известных системе.

К этому файлу система обращается всякий раз при попытке авторизации пользователя в поисках требуемого идентификатора пользователя и определения его домашнего каталога.

Формат этого файла заключается в том, что каждая строка в нём соответствует одному конкретному пользователю (учётной записи), в которой (в строке) перечислены атрибуты (поля) учётной записи, разделяемые символом двоеточия:

  1. Имя пользователя.
  2. Пароль пользователя (в шифрованном виде) или «заполнитель» пароля.
  3. Идентификатор пользователя.
  4. Идентификатор группы пользователя (по умолчанию).
  5. Информация GECOS — полное имя, офис, телефоны и т. д.
  6. Домашний каталог.
  7. Регистрационная оболочка.

Содержимое файла /etc/passwd может выглядеть следующим образом: Как можно видеть, второе поле для всех записей содержит символ «x» — заполнитель пароля. В Linux-системах зашифрованные пароли хранятся отдельно, в файле /etc/shadow.

В случае, если совместно с файлом /etc/passwd используется служба автоматизированного управления каталогами, то в этом же файле имеются записи, начинающиеся с символа «+». Такие записи содержат инструкции по интеграции службы управления каталогами в системе.

Стоит вкратце рассмотреть поля учётных записей:

Файл /etc/group – описание групп пользователей

Формат этого файла такой же как и у /etc/passwd. Пример содержимого файла /etc/group: Как видно, каждая строка включает в себя четыре поля:

  1. Имя группы.
  2. Зашифрованный пароль или заполнитель пароля.
  3. Уникальный идентификатор группы.
  4. Список пользователей, входящих в данную группу, содержащий имена пользователей, разделённых запятыми без пробелов.

Интересным здесь является поле пароля. Пароль группы предназначен для того, чтобы пользователи могли вступить в группу с помощью команды newgrp. Сам же пароль для группы задаётся командой gpasswd, после чего он в зашифрованном виде будет храниться в файле /etc/gshadow. Однако, следует заметить, что пароли для групп используются крайне редко.

Системным администраторам следует следить за содержимым файлов /etc/passwd и /etc/group и согласовывать их между собой, поскольку иногда возникают ситуации, когда пользователь указывается членом группы в файле /etc/passwd и в то же время в файле /etc/group такого объявления нет.

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

По умолчанию в дистрибутивах Linux (кроме SUSE), при создании пользователя (утилита useradd) создаётся и его одноимённая группа, в которую он сразу же включается.

Это предусмотрено для того, чтобы максимально исключить вероятность доступа разных пользователей к файлам друг друга.

Также существуют команды groupadd, groupmod, groupdel для добавления, редактирования и удаления групп соответственно.

Файл /etc/shadow – хранение паролей

Для хранения скрытых или теневых паролей используется отдельный файл /etc/shadow. Доступ к которому доступен только суперпользователю. Нужно также заметить, что файлы /etc/shadow и /etc/passwd хоть и связаны концептуально, однако на уровне системы между ними практически нет никакого взаимодействия.

За исключением того, что поле, содержащее регистрационное имя в shadow берётся из passwd. Т.е. при модификации shadow, изменения не отражаются автоматически в passwd – эти файлы хранятся отдельно и обрабатываются системой независимо друг от друга.

Формат /etc/shadow аналогичен /etc/passwd и каждая строка включает в себя следующие поля:

  1. Регистрационное имя.
  2. Пароль в зашифрованном виде.
  3. Дата последнего изменения пароля.
  4. Минимальное количество дней между изменениями пароля.
  5. Максимальное количество дней между изменениями пароля.
  6. Количество дней до выдачи сообщения об окончании срока действия пароля.
  7. Количество дней (по истечению срока действия пароля) до автоматического аннулирования учётной записи.
  8. Период действия учётной записи.
  9. Зарезервированное поле.

Запись из файла /etc/shadow выглядит следующим образом:

john:$md5$em5JhGE$a$iQhgS70sakdRaRFyy7Ppj. :14469:0:180:14: : :

Следует отметить, что обязательными являются первые два поля. Формат полей дат соответствует количеству дней, прошедших с первого января 1970 года. Поле с регистрационным именем, как уже отмечалось, заполняется соответствующим значением из файла /etc/passwd.

В Linux седьмое поле содержит значение, которое определяет по истечении какого времени (в днях) после устаревания пароля учётная запись будет автоматически отключена. Эта интерпретация отличается от той, которая используется в системах Solaris и HP-UX.

В восьмом поле, для установки даты истечения срока действия учётной записи можно использовать команду usermod в формате гггг-мм-чч.

Добавление пользователей

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

$ sudo useradd john

В результате будет создана следующая запись в файле /etc/passwd:

john:х:535:20: :/home/john:/bin/sh

Однако, команда useradd располагает куда большими возможностями, например:

$ sudo useradd -с «John Silver» -d /home/pirates/john -g pirates -G john -m -s /bin/bash john

Эта команда добавит в систему пользователя с полным именем «John Silver», регистрационным именем «john». Включив его в основную группу «pirates», а также добавит его в ещё одну дополнительную группу «john» и назначит ему домашний каталог по адресу /home/pirates/john. В результате, соответствующая запись в файле /etc/passwd будет примерно такой:

john:х:535:30:John Silver:/home/pirates/john:/bin/bash

Команда useradd автоматически создаёт домашний каталог пользователя, если он ещё не создан. A также копирует в него файлы из /etc/skel/.

Полный список параметров useradd

Использование: useradd [параметры] ПОЛЬЗОВАТЕЛЬuseradd -D

useradd -D [параметры]

Параметры:
-b, —base-dir БАЗ_КАТ базовый каталог для домашнего каталога новойучётной записи