Linux: пользователи, группы и sudo

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

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

КомандаВариантЧто делает
useradduseradd ivanСоздаёт пользователя без домашней папки (в Debian/Ubuntu без -m папка не появится).
useradd -museradd -m ivanСоздаёт пользователя и его домашнюю папку /home/ivan.
useradd -m -suseradd -m -s /bin/bash ivanЗадаёт оболочку входа.
useradd -cuseradd -m -c "Иван Петров" ivanДобавляет комментарий (полное имя) в /etc/passwd.
useradd -Guseradd -m -G sudo,docker ivanСразу добавляет в дополнительные группы (через запятую, без пробелов).
useradd -guseradd -m -g developers ivanЗадаёт основную группу (она должна существовать).
useradd -uuseradd -m -u 2001 ivanЗадаёт UID вручную (полезно для согласованности между серверами).
useradd -duseradd -m -d /srv/ivan ivanУказывает нестандартную домашнюю папку.
useradd -euseradd -m -e 2027-01-01 ivanУчётная запись истекает в указанную дату.
useradd -ruseradd -r -s /usr/sbin/nologin svc_appСистемный пользователь для службы: без входа и без домашней папки по умолчанию.
adduseradduser ivanИнтерактивная обёртка (Debian/Ubuntu): сама создаёт папку и спрашивает пароль.

Пароли и блокировка

КомандаВариантЧто делает
passwdpasswd ivanИнтерактивно задаёт пароль.
passwdpasswdМеняет пароль текущего пользователя.
passwd -lpasswd -l ivanБлокирует вход (добавляет ! перед хэшем).
passwd -upasswd -u ivanСнимает блокировку.
passwd -epasswd -e ivanТребует сменить пароль при следующем входе.
passwd -Spasswd -S ivanПоказывает состояние: P (есть пароль), L (заблокирован), NP (без пароля).
chpasswdecho "ivan:NewPass" | chpasswdЗадаёт пароль из стандартного ввода (пароль останется в истории оболочки, лучше через файл).
chage -lchage -l ivanПоказывает сроки действия пароля.
chage -Mchage -M 90 ivanМаксимальный срок пароля: 90 дней.
chage -Echage -E 2027-01-01 ivanДата окончания учётной записи.
chage -d 0chage -d 0 ivanПринудительная смена пароля при следующем входе.

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

КомандаВариантЧто делает
usermod -aGusermod -aG docker ivanДобавляет в группу docker, сохраняя остальные группы. Флаг -a обязателен.
usermod -Gusermod -G docker ivanЗаменяет все дополнительные группы на указанные. Частая ошибка: все прежние группы пропадают.
usermod -gusermod -g devops ivanМеняет основную группу.
usermod -susermod -s /bin/zsh ivanМеняет оболочку.
usermod -lusermod -l ivan.petrov ivanПереименовывает логин (домашнюю папку переименуйте отдельно, если нужно).
usermod -d -musermod -d /srv/ivan -m ivanМеняет домашнюю папку и переносит содержимое.
usermod -L / -Uusermod -L ivanБлокирует или разблокирует учётную запись.
usermod -eusermod -e 2027-06-30 ivanЗадаёт дату истечения учётной записи.
usermod -cusermod -c "Иван, бухгалтерия" ivanМеняет комментарий.

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

КомандаВариантЧто делает
userdeluserdel ivanУдаляет учётную запись, домашняя папка остаётся.
userdel -ruserdel -r ivanУдаляет учётную запись вместе с домашней папкой и почтовым ящиком.
userdel -fuserdel -f ivanУдаляет, даже если пользователь сейчас в системе (процессы не завершаются автоматически).
deluserdeluser --remove-home ivanОбёртка в Debian/Ubuntu с той же логикой.

Группы

КомандаВариантЧто делает
groupaddgroupadd developersСоздаёт группу.
groupadd -ggroupadd -g 3000 devopsСоздаёт группу с заданным GID.
groupadd -rgroupadd -r svc_groupСистемная группа.
groupmod -ngroupmod -n devs developersПереименовывает группу.
groupmod -ggroupmod -g 3100 devsМеняет GID.
groupdelgroupdel developersУдаляет группу (нельзя, если это основная группа существующего пользователя).
gpasswd -agpasswd -a ivan developersДобавляет пользователя в группу.
gpasswd -dgpasswd -d ivan developersУбирает пользователя из группы.
gpasswd -Mgpasswd -M ivan,petr,anna developersЗадаёт полный список участников группы.
gpasswd -Agpasswd -A ivan developersНазначает администратора группы (может управлять её составом).
gpasswdgpasswd developersЗадаёт пароль группы (используется редко).
newgrpnewgrp dockerОткрывает оболочку с новой основной группой без перелогина.

Просмотр и поиск

КомандаВариантЧто делает
idid ivanUID, GID и все группы пользователя.
id -gnid -gn ivanИмя основной группы.
id -uid -uЧисловой UID текущего пользователя (0 — root).
groupsgroups ivanСписок групп пользователя.
whoamiwhoamiИмя текущего пользователя.
getentgetent group developersЧитает базу учётных записей, в том числе из LDAP и AD.
getentgetent passwd ivanДанные пользователя из всех источников NSS.
grepgrep ivan /etc/passwdПоиск в файлах учётных записей напрямую.
lidlid -g developersПользователи группы (пакет libuser).

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

КомандаВариантЧто делает
su -su - ivanПереходит к пользователю с его окружением (дефис обязателен).
su -csu -c "systemctl restart nginx" rootВыполняет одну команду от имени другого пользователя.
sudosudo apt updateВыполняет команду от root по правилам sudoers.
sudo -isudo -iОболочка root с его окружением.
sudo -usudo -u postgres psqlВыполнить от имени произвольного пользователя.
sudo -lsudo -lКакие команды разрешены текущему пользователю.
sudo -l -Usudo -l -U ivanТо же для другого пользователя (требует прав).
sudo -ksudo -kСбрасывает кеш пароля sudo.
visudovisudo -f /etc/sudoers.d/ivanБезопасное редактирование sudoers с проверкой синтаксиса.

Пример правила в /etc/sudoers.d/ivan

# Разрешить перезапуск только одной службы без пароля
ivan ALL=(root) NOPASSWD: /usr/bin/systemctl restart nginx

# Разрешить группе devops полный доступ через sudo
%devops ALL=(ALL:ALL) ALL

Сессии и журналы входа

КомандаВариантЧто делает
whowho -aКто сейчас в системе, с подробностями.
wwКто в системе и что делает (нагрузка, команда).
lastlast -n 20 ivanИстория входов конкретного пользователя.
lastbsudo lastb -n 20Неудачные попытки входа (нужны права root).
lastloglastlog -u ivanВремя последнего входа каждого пользователя.
pkillpkill -KILL -u ivanЗавершить все процессы пользователя (например, перед удалением).

Где хранятся данные

/etc/passwd   учётные записи (имя, UID, GID, комментарий, домашняя папка, оболочка)
/etc/shadow   хэши паролей и сроки действия (доступ только root)
/etc/group    группы и их участники
/etc/gshadow  пароли групп и администраторы групп
/etc/sudoers  правила sudo (править только через visudo)
/etc/sudoers.d/  дополнительные правила sudo, отдельные файлы
Не используйте usermod -G без -a для уже существующих пользователей: список дополнительных групп будет заменён целиком. Всегда используйте usermod -aG. А правила sudo редактируйте только через visudo: ошибка в sudoers может закрыть доступ к системе.
Для доступа к сервисам удобнее создавать группы по ролям (например, www-data, deploy) и добавлять в них пользователей, а не выдавать права каждому файлу отдельно.