Менеджмент пользователей в Linux

Введение

Менеджмент пользователей в Linux всегда вызывал у меня путиницу. Вот, нужно просто добавить пользователя в группу, а есть 5 разных способов сделать это (не считая UI). Мне надоело каждый раз гуглить эти команды, поэтому написал этот пост.

Здесь описаны только поверхностные инструменты управления пользователями. Про PAM не будет ни слова. Все действия над пользователями и группами требуют административный доступ.

Создать пользователя

useradd - это “низкоуровневая” команда: аргумент -m создает домашнюю директорию и -s устанавливает оболочку входа (login shell). На дистрибутивах, основанных на Debian есть “более удобная” интерактивная команда adduser.

useradd -m -s /bin/bash [name]
adduser [name]
passwd [name]

Просто useradd [name] создает аккаунт без домашней директории, что редко требуется для реальных пользователей.

После создания пользователя, нужно указать ему пароль через passwd [name]. Или можно не устанавливать, если у вас в организации так не принято.

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

На дистрибутивах, основанных на Debian есть “более удобная” интерактивная команда adduser.

-r также удаляет домашнюю директорию пользователя и директорию с почтой.

userdel [name]
userdel -r [name]
deluser [name]
usermod -l [newUsername] [oldUsername]

Изменить пользователя

Поменять оболочку пользователя, домашню директорию.

usermod -s /bin/zsh [name]
chsh -s /bin/zsh [name]
usermod -d /new/home -m [name]

“Заблокировать” аккаунт и разблокировать его. На самом деле эта команда отключает использование пароля, но вход по SSH все еще остается доступен.

usermod -L [name]
usermod -U [name]

Force a password change at next login, or inspect password aging.

passwd -e [name]
chage -l [name]

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

passwd -l [name]

По факту, это просто отключает пароль, но оставляет возможность зайти по SSH, используя ключ. Чтобы действительно заблокировать пользователя, нужно или убрать время жизни аккаунта: chage -E 0 username, или запретить использовать shell: usermod -s /sbin/nologin username.

Статус пользователя

passwd -S mikhailm
# mikhailm L 2026-08-27 0 99999 7 -1

Описание полей:

  1. Имя
  2. Статус пароля (есть пароль, нет пароля, заблокирован)
  3. Когда последний раз менялся пароль
  4. Минимальный возраст пароля (в днях)
  5. Максимальный возраст пароля
  6. Период предупреждения о скорой смене пароля
  7. Период деактивации пароля

Группы

Создать, переименовать, удалить группу.

groupadd [name]
groupmod -n [newGroupname] [oldGroupname]
groupdel [name]

Добавить существующего пользователя к группе. Флаг -a обязателен, иначе у пользователя удалятся все другие группы.

usermod -aG [groupName] [userName]
gpasswd -a [userName] [groupName]
adduser [userName] [groupName]

Удалить пользователя из группы.

gpasswd -d [userName] [groupName]
deluser [userName] [groupName]

Изменения групп применяются только при следующем входе. Использовать newgrp [groupName], чтобы активировать изменения в текущей сессии.

Выдать sudo

sudo расшивровывается как “superuser do”. То есть, выполнить команду от лица суперпользователя, то есть root. Чтобы пользователь мог использовать эту команду, нужно добавить его в группу sudo (Debian).

usermod -aG sudo [user]
usermod -aG sudoadm [user]

Также на сервере может быть группа отдельная группа, вроде sudoadm, участникам которой не требуется вводить пароль при исползовании sudo. За подробностями идем в директорию /etc/sudoers.d/. Редактировать файлы здесь нужно только через команду visudo.

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

getent опрашивает все базы данных аккаунтов, включая LDAP и пр. Файлы в /etc показывают только локальных пользователей.

getent passwd
getent group
cat /etc/passwd
cat /etc/group

Кто я, кто еще на сервере

Показать пользователя, его UID и GID, перечислить группы.

whoami
id [user]
groups [user]

Кто еще есть на сервере, история входов.

who
w
last

Переключить пользователя

su - - зайти под пользователем, используя оболочку входа. Рекомендую запускать именно с тире или параметром -l, иначе могут не подхватиться важные переменные окружения из .bash_profile. Если не указать пользователя, то будет вход под root. sudo -i -u [user] работает похожим образом.

su - [user]
sudo -i
sudo -u [user] [command]

Заключение

На самом деле, менеджмент пользователей в Linux - это кроличья нора. Стоит только открыть одну из man-страниц на эту тему, как голова пойдет кругом. Здесь мы только коснулись основных действий, которые помогут вам (мне) при базовом администрировании.

Источники

  1. passwd(1): update user’s authentication - Linux man page
  2. Users & Groups | Basic | Cheat sheet | Linux Command Library
  3. Проект OpenNet: MAN deluser (8) Команды системного администрирования (FreeBSD и Linux)
Сайт не хранит данные пользователей
Malchikovma.ru на GitHub
Создано при помощи Hugo
Тема Stack, дизайн Jimmy