Разжевал всё максимально доходчиво и добавил огромное количество скринов с пояснениями, чтобы дошло даже до полных "чайников" в Linux.
Утилита adduser расположена по пути /usr/sbin/adduser и доступна для выполнения только от имени root.
Описание
Утилита используется для простого и быстрого создания пользователя в Linux. Для общего случая достаточно ввести 'adduser <username>', при этом автоматически будут выполнены следующие действия:
- поиск и выбор доступного UID;
- установка оболочки по умолчанию;
- создание собственной группы для пользователя и добавление в неё;
- создание домашнего каталога;
- копирование в домашний каталог содержимого /etc/skel/;
- запрос дополнительной информации (полное имя, телефон и т.п.);
- запрос пароля.
Как происходит автоматическое определение перечисленных выше параметров?
Процедура создания пользователя
Попробуем создать пользователя test:
sudo adduser test
Утилита выведет некоторую информацию, запросит пароль и доп. данные для нового пользователя:
Чтобы нам не пришлось вводить кучу информации помимо имени пользователя, утилита обращается к своему конфигурационному файлу, который по умолчанию расположен в:
/etc/adduser.conf
Выбор доступного UID
Каждый пользователь Linux имеет свой уникальный идентификатор пользователя (англ. User identifier, UID). Выбор идентификатора обычно начинается с 1000. Если этот UID занят, утилита проверяет следующий (1001) и так, пока не найдёт свободный.
Для ограничения диапазона в конфигурационном файле используются параметры FIRST_UID и LAST_UID:
Если мы захотим переопределить одну или обе границы этого диапазона, достаточно добавить в команду параметры --firstuid и --lastuid
Где это можно использовать?
Чтобы разделить администраторов и обычных пользователей по UID, можно определить диапазон от 1000 до 1999 для администраторов и от 2000 для обычных пользователей. Сделать это можно, создав разные файлы конфигураций и указав к ним путь в параметре '--conf'. Пример создания своего конфигурационного файла рассмотрен ниже.
Т.к. для системных пользователей принято оставлять диапазон 100-999, я не рекомендую устанавливать для обычных юзеров FIRST_UID < 1000.
Системные пользователи служат для запуска фоновых служб, например, пользователь www-data часто указан в NGINX и Apache2.
Создание одноимённой группы пользователя
По умолчанию для каждого пользователя создаётся группа с таким же названием:
За создание одноимённых групп отвечает параметр USERGROUPS:
Каждая группа имеет свой уникальный идентификатор (GID, англ. Group identifier), который по умолчанию задаётся из того же диапазона, что UID:
Задать диапазон с помощью параметров команды (по аналогии с --firstuid и --lastuid из предыдущего примера) не получится.
Если установить USERGROUPS=no (чтобы не создавалась одноимённая группа), пользователь будет добавлен в группу, которая задана параметром USERS_GID:
Если вы не хотите менять конфиг, но вам не нужна группа пользователя, добавьте в команду параметр '--ingroup users' или '--gid 100'. В этом случае пользователь будет добавлен в группу users:
Назначение нового пользователя в группу существующего не предоставит такие же права доступа
Добавление пользователя в другие группы
Можно сразу указать в какие ещё группы необходимо добавить пользователя (например, в sudo) с помощью параметров ADD_EXTRA_GROUPS и EXTRA_GROUPS:
Для добавления в другие группы можно использовать параметр '--add_extra_groups', но список групп всё равно должен быть задан в конфигурационном файле
Установка оболочки
По умолчанию для пользователя устанавливается bash, за это отвечает параметр DSHELL:
Задать другую оболочку для нового пользователя можно также через параметр --shell при вводе команды:
Создание домашнего каталога
В конфиге за создание домашнего каталога отвечает параметр DHOME:
Чтобы переопределить домашний каталог при вводе команды в терминале, используйте параметр --home:
Обратите внимание, что в конфиге нужно указывать директорию, в которой будет автоматически создан домашний каталог (напр., /home).
В терминале же необходимо указывать полный путь, включающий наименование каталога, который необходимо создать (напр., /home/test55555)
Для некоторых пользователей может быть актуальным создание домашних каталогов по следующей схеме: /home/<имя группы>/<имя пользователя>:
Чтобы активировать эту возможность, задайте параметру GROUPHOMES значение yes:
Ещё одна возможность группировки домашних каталогов - по первой букве имени пользователя, за это отвечает параметр LETTERHOMES:
Можно активировать параметры GROUPHOMES и LETTERHOMES одновременно, тогда путь к домашнему каталогу примет вид:
После создания домашнего каталога в него будет скопировано содержимое директории, указанной в параметре SKEL:
При копировании файлов из SKEL будут игнорироваться файлы, заданные регулярным выражением в параметре SKEL_IGNORE_REGEX:
Права на домашний каталог устанавливаются в соответствии с параметром DIR_MODE:
Создание домашнего каталога можно отключить с помощью параметра
'--no-create-home', обычно это используется при добавлении системных пользователей.
Шифрование домашнего каталога
Можно сразу включить шифрование домашнего каталога, указав параметр '--encrypt-home':
Внимание! После создания зашифрованного каталога сохраните себе парольную фразу из файла ~/.ecryptfs/wrapped-passphrase. Она понадобится для расшифровки домашнего каталога при доступе к нему из сторонней ОС:
Переключиться на созданного пользователя:
su username
Расшифровать и вывести парольную фразу:
ecryptfs-unwrap-passphrase ~/.ecryptfs/wrapped-passphrase
Для расшифровки необходимо ввести пароль пользователя
Добавление информации о пользователе
В момент создания УЗ, система запрашивает дополнительную информацию:
Её можно указать сразу в терминале, используя параметр '--gecos':
Если информация вводится с пробелами, возьмите выражение в кавычки. Обратите внимание, что разделителем полей является запятая.
Запрет входа по паролю
Если пользователь подключается к серверу с помощью ssh-ключа (что безопаснее), можно сразу установить параметр --disabled-password:
Также можно использовать параметр --disabled-login, он полностью заблокирует доступ пользователя в систему, пока не будет задан пароль.
Добавление пользователя в группу
Чтобы добавить существующего пользователя в существующую группу, используйте синтаксис 'adduser <группа> <пользователь>':
Добавление системного пользователя
Как было сказано выше, системные пользователи нужны для фонового запуска служб и по умолчанию имеют UID от 100 до 999:
Для добавления системного пользователя используйте параметр '--system':
По умолчанию для системного пользователя создаётся домашний каталог, также он помещаются в группу "nogroup".
Чтобы отключить создание домашнего каталога, используйте '--no-create-home', чтобы сразу добавить в одноименную группу - '--group':
Обратите внимание, системные пользователи будут иметь оболочку nologin, если явно не задан параметр '--shell':
Войти под системной учёткой можно, если задать пароль и оболочку
Особые параметры пользователей
Ниже я привёл параметры, которые используются редко и служат для более тонкой настройки adduser
Установка квот
Если вы используете квоты, укажите в параметре QUOTAUSER пользователя, с которого они будут копироваться:
Проверка имени пользователя/группы на соответствие регулярному выражению
Регулярное выражение задаётся в параметре NAME_REGEX конфигурационного файла:
Приведённое выше выражение принимает имя пользователя, начинающееся с "test_" и заканчивающееся на некоторое количество латинских символов нижнего регистра, для остальных случаев операция завершится с ошибкой:
Чтобы обойти это ограничение, используйте параметр '--force-badname':
Создание своего конфига
Для примера создадим конфигурационный файл, который добавляет администраторов:
sudo mkdir /etc/adduser;
sudo cp /etc/adduser.conf /etc/adduser/adduser_adm.conf
sudo nano /etc/adduser/adduser_adm.conf
Приведём файл к следующему виду:
DSHELL=/bin/bash
DHOME=/home
GROUPHOMES=no
LETTERHOMES=yes
SKEL=/etc/skel
FIRST_UID=1000
LAST_UID=1999
FIRST_GID=1000
LAST_GID=1999
USERGROUPS=yes
USERS_GID=100
DIR_MODE=0750
SKEL_IGNORE_REGEX="dpkg-(old|new|dist|save)"
EXTRA_GROUPS="sudo"
ADD_EXTRA_GROUPS=1
NAME_REGEX="^(adm_)([a-z]*)$"
Пользователи, созданные с использованием нового конфига будут иметь UID и GID от 1000 до 1999, домашняя папка будет создана в каталоге '/home/a/', а имя пользователя должно начинаться на 'adm_':
Заключение
Друзья, я заинтересован в том, чтобы материал был максимально понятен. Если у вас остались вопросы, не стесняйтесь задать их в комментариях, ведь это может помочь не только вам.
В статье не рассмотрено добавление пользователей с использованием --extrausers, т.к. я не нашёл в сети достаточно материала, чтобы подробно разобрать эту возможность. Если вы можете что-то посоветовать, сделайте это при помощи комментариев. Спасибо!
Пожалуйста, оцените мой труд лайком и подпиской, это позволит вам чаще видеть в ленте подобный контент.
Поддержать материально:
- Юmoney: 4100 1179 9102 819
- Сбербанк: 2202 2013 5155 5152
- Тинькофф: 2200 7008 1567 2323