Работа с пользователями в Linux
Версия: для дистрибутивов на базе Linux (Debian/Ubuntu, CentOS/RHEL, Fedora, openSUSE)
Целевая аудитория: администраторы хостинга, веб-разработчики, пользователи VPS
Linux - многопользовательская система.
Управление пользователями и группами - базовая задача при настройке сервера, выдаче доступа или обеспечении безопасности.
В этой статье разберём все аспекты работы с учётными записями.
Типы пользователей в Linux
Все пользователи делятся на три категории:
| Тип | UID | Описание |
|
Системные (служебные) |
обычно 1–999 (в старых системах 1–499) |
Создаются при установке ПО. Используются демонами и службами (www-data, mysql, systemd-network). Не предназначены для входа в систему. |
| Обычные (непривилегированные) |
1000–65533 (на многих системах начиная с 1000) |
Создаются администратором для реальных пользователей. Имеют домашнюю директорию и ограниченные права. |
| Суперпользователь (root) | 0 | Абсолютные права на всю систему. Используется только для администрирования. |
Проверить тип пользователя можно по его UID (см. следующий раздел).
Что такое UID?
UID (User IDentifier) — уникальный числовой идентификатор пользователя. Система оперирует именно UID, а не именем. Основные значения:
- 0 — root
- 1–999 — системные пользователи (зарезервированы)
- 1000+ — обычные пользователи (верхняя граница зависит от настроек, обычно 65533)
При создании нового обычного пользователя система автоматически назначает следующий доступный UID, начиная с 1000 (или с UID_MIN, заданного в /etc/login.defs).
Правила именования пользователей
Имя пользователя должно соответствовать следующим правилам (обычно):
- Длина от 1 до 32 символов.
- Допустимые символы: буквы латиницы (a–z, A–Z), цифры (0–9), точка (.), дефис (-), подчёркивание (_), знак доллара ($ — не рекомендуется).
- Имя должно начинаться с буквы или подчёркивания (не может начинаться с цифры или дефиса).
- Не должно совпадать с зарезервированными именами (root, daemon, bin и т.д.).
- Регистр символов учитывается: User и user — разные пользователи.
Проверить допустимость имени можно с помощью утилиты useradd -N или просто создав тестового пользователя.
Просмотр информации о пользователе
Файлы с информацией
- /etc/passwd — список всех пользователей (доступен для чтения всем). Формат строки:
имя:x:UID:GID:описание:домашняя_директория:shell - /etc/shadow — хеши паролей и данные об их истечении (доступен только root).
Пример просмотра:
cat /etc/passwd | grep username
Команды для получения информации о текущем пользователе
| Команда | Что показывает |
| whoami | имя текущего пользователя |
| id | UID, GID, группы текущего пользователя |
| id -u | только UID |
| groups | список групп текущего пользователя |
| logname | исходное имя пользователя, под которым выполнен вход |
Команды для информации о любом пользователе
| Команда | Что показывает |
| id username | UID, GID и группы username |
| finger username | расширенная информация (если установлено) |
| getent passwd usernam | получить запись из passwd (учитывает LDAP/NIS) |
Пользователи, вошедшие в систему
| Команда | Что показывает |
| who | список активных сессий |
| w | более подробно (загрузка, команды) |
| last | история входов (из /var/log/wtmp) |
| lastlog | время последнего входа каждого пользователя |
Создание пользователя
Основная команда — useradd. В Debian/Ubuntu также удобен интерактивный adduser.
Простое создание
sudo useradd username
Минимальные параметры: домашняя директория не создаётся, shell установлен по умолчанию (/bin/sh), пароль отсутствует (вход заблокирован).
Рекомендуемые параметры при создании
sudo useradd -m -s /bin/bash -c "Иван Иванов" -G group1,group2 username
| Параметр | Значение |
| -m | создать домашнюю директорию (/home/username) |
| -s /bin/bash | установить командную оболочку |
| -c "комментарий" | добавить описание (обычно ФИО) |
| -G group1,group2 | добавить пользователя в дополнительные группы (без пробелов) |
| -u 1500 | задать конкретный UID |
| -d /custom/home | указать другую домашнюю директорию |
| -e YYYY-MM-DD | дата блокировки учётной записи |
| -f N | количество дней после истечения пароля до блокировки |
| -k /etc/skel | шаблон для домашней директории (по умолчанию) |
После создания обязательно задайте пароль:
sudo passwd username
Альтернатива — adduser (Debian/Ubuntu)
sudo adduser username
Интерактивно задаст пароль, ФИО, создаст домашнюю директорию и скопирует файлы из /etc/skel.
Изменение данных пользователя
Основная команда — usermod. Требует права root.
Часто используемые параметры
sudo usermod [параметры] username
| Параметр | Значение |
| -l newname | изменить имя пользователя (UID и домашняя папка не меняются!) |
| -d /new/home | изменить домашнюю директорию |
| -m | переместить содержимое старой домашней директории в новую (используется с -d) |
| -s /bin/zsh | сменить оболочку |
| -c "новый комментарий" | изменить описание |
| -u 2000 | изменить UID (осторожно! файлы останутся со старым UID) |
| -g primary_group | изменить основную группу (должна существовать) |
| -G group1,group2 | перезаписать список дополнительных групп (чтобы добавить — см. раздел про группы) |
| -a -G group | добавить пользователя в дополнительные группы (не удаляя старые) |
| -L | заблокировать учётную запись (запретить вход) |
| -U | разблокировать |
Изменение пароля и срока действия
| Команда | Что показывает |
| sudo passwd username | установить/сменить пароль |
| sudo chage -l username | посмотреть политику истечения пароля |
| sudo chage -M 90 username | пароль действителен 90 дней |
| sudo chage -E 2025-12-31 username | учётная запись активна до 31.12.2025 |
Важное замечание.
При изменении имени пользователя (-l) его домашняя директория и владелец файлов не переименовываются автоматически. Необходимо это сделать вручную:
sudo usermod -l newname oldname
sudo groupmod -n newname oldname # если основная группа совпадала с именем
sudo mv /home/oldname /home/newname
sudo usermod -d /home/newname -m newname
Удаление пользователя
Команда userdel.
Простое удаление
sudo userdel username
Удаляет запись из /etc/passwd и /etc/shadow, но домашняя директория и почтовый ящик (/var/mail/username) остаются.
Удаление вместе с домашней директорией и почтой
sudo userdel -r username
Также удалит файлы из /var/spool/mail/username.
Дополнительные параметры
| Параметр | Значение |
| -f | принудительное удаление, даже если пользователь всё ещё залогинен. |
| -Z | удалить контекст SELinux (актуально для систем с SELinux). |
После удаления пользователя желательно вручную проверить и удалить файлы, принадлежавшие ему, в других местах:
sudo find / -user username -ls 2>/dev/null
Но обычно userdel -r достаточно.
Группы пользователей
Группы позволяют назначать права доступа сразу нескольким пользователям.
Типы групп
- Первичная (основная) группа — указывается в /etc/passwd в поле GID. Каждый пользователь принадлежит ровно к одной первичной группе. По умолчанию при создании пользователя создаётся группа с тем же именем (схема UPG — User Private Group).
- Вторичные (дополнительные) группы — перечислены в /etc/group. Пользователь может состоять в любом количестве дополнительных групп.
Информация о группах хранится в /etc/group (имя, пароль, GID, члены) и /etc/gshadow (расширенные атрибуты).
Просмотр групп
Команды:
cat /etc/group
| Команда | Что показывает |
| groups username | группы, в которых состоит username |
| id username | показывает GID основной группы и список дополнительных |
Создание группы
Команда groupadd.
sudo groupadd groupname
Параметры:
| Параметр | Описание |
| -g GID | задать конкретный GID (должен быть уникальным) |
| -r | создать системную группу (GID из диапазона системных, обычно 1–999) |
| -f | если группа существует, выйти без ошибки (и с опцией -g — переназначить GID) |
Пример:
sudo groupadd -g 3000 developers
sudo groupadd -r system_backup
Редактирование группы
Команда groupmod. Позволяет изменить имя или GID группы.
sudo groupmod [параметры] groupname
| Параметр | Действие |
| -n new_name | переименовать группу |
| -g new_GID | изменить GID группы (осторожно — файлы могут остаться со старым GID) |
Важно: При изменении GID нужно вручную обновить права доступа на файлы, принадлежавшие группе:
sudo find / -gid oldGID -exec chgrp newGID {} \;
Пример переименования:
sudo groupmod -n prod_team dev_team
Удаление группы
Команда groupdel.
sudo groupdel groupname
Удаляет только запись о группе. Файлы, принадлежавшие этой группе, остаются (их GID становится «висячим» — отображается как число). Перед удалением убедитесь, что ни один пользователь не имеет эту группу в качестве первичной.
Проверить, используется ли группа как первичная:
grep :GID: /etc/passwd # где GID — числовой идентификатор удаляемой группы
Если есть пользователи с такой первичной группой — сначала смените им основную группу:
sudo usermod -g newgroup username
Управление пользователями в группе
Основные инструменты: usermod, gpasswd, прямое редактирование /etc/group.
Добавление пользователя в группу
Способ 1 — usermod -a -G (рекомендуется):
sudo usermod -a -G groupname username
Параметр -a обязателен, иначе пользователь будет исключён из всех других дополнительных групп.
Способ 2 — gpasswd -a:
sudo gpasswd -a username groupname
Способ 3 — вручную отредактировать /etc/group (не рекомендуется для новичков).
Добавление нескольких пользователей в группу
for user in user1 user2 user3; do
sudo usermod -a -G groupname $user
done
Удаление пользователя из группы
Через gpasswd -d:
sudo gpasswd -d username groupname
Изменение основной группы пользователя
sudo usermod -g primarygroup username
Пользователь обязан иметь одну основную группу. Это не то же самое, что дополнительные группы.
Просмотр членов группы
getent group groupname
или
grep groupname /etc/group
Управление групповым паролем и администраторами
С помощью gpasswd можно назначить администраторов группы, которые смогут добавлять/удалять участников без прав root:
sudo gpasswd -A admin1,admin2 groupname # установить список администраторов
sudo gpasswd groupname # установить пароль для группы (не рекомендуется)
Присвоение прав суперпользователя
Обычный пользователь не может выполнять команды, требующие прав root. Есть два способа дать расширенные привилегии.
Полный доступ через sudo
Пользователь получает право выполнять любые команды от root (или ограниченный набор). Настройка производится через файл /etc/sudoers командой visudo.
Самый простой способ — добавить пользователя в группу sudo (Debian/Ubuntu) или wheel (CentOS/RHEL).
Для Debian/Ubuntu:
sudo usermod -aG sudo username
Для CentOS/RHEL/Fedora:
sudo usermod -aG wheel username
После этого пользователь может выполнять команды с sudo, например:
sudo apt update
При первом использовании будет запрошен пароль самого пользователя (не root).
Ручная настройка в /etc/sudoers:
sudo visudo
Добавьте строку:
username ALL=(ALL:ALL) ALL
- username — имя пользователя;
- ALL — все хосты;
- (ALL:ALL) — выполнять команды от любого пользователя и группы;
- ALL — любые команды.
Ограниченный доступ (например, только systemctl restart nginx):
username ALL=(root) /usr/bin/systemctl restart nginx
Переключение на root через su
Если пользователю известен пароль root, он может выполнить:
su -
Но в современных системах пароль root часто не задан, а доступ осуществляется только через sudo. Рекомендуется использовать sudo -i для получения root-оболочки.
Выполнение одной команды от root без sudo
su -c "команда"
Но это требует ввода пароля root. Безопаснее и удобнее использовать sudo.
Примеры типовых сценариев
Создание пользователя для веб-хостинга
sudo useradd -m -s /bin/bash -G www-data -c "Клиент Иванов" client1
sudo passwd client1
sudo mkdir -p /home/client1/public_html
sudo chown client1:client1 /home/client1/public_html
sudo chmod 755 /home/client1
Создание группы разработчиков с общим каталогом
sudo groupadd devs
sudo useradd -m -G devs -s /bin/bash dev1
sudo useradd -m -G devs -s /bin/bash dev2
sudo mkdir /srv/project
sudo chown root:devs /srv/project
sudo chmod 2770 /srv/project # SGID — новые файлы наследуют группу devs
Временное отстранение пользователя
sudo usermod -L username # заблокировать
sudo usermod -U username # разблокировать
Копирование прав существующего пользователя
# Создать нового пользователя с такими же группами, как у template_user
sudo useradd -m -G "$(id -nG template_user | tr ' ' ',')" newuser
Полезные файлы и команды для диагностики
| Файл/команда | Назначение |
| /etc/login.defs | настройки по умолчанию (диапазоны UID/GID, политика паролей) |
| /etc/default/useradd | параметры по умолчанию для useradd |
| /etc/skel/ | шаблон домашней директории (копируется при -m) |
| pwck | проверка корректности /etc/passwd и /etc/shadow |
| grpck | проверка /etc/group |
| vigr | безопасное редактирование /etc/group |
| vipw | безопасное редактирование /etc/passwd |
Заключение
Управление пользователями и группами — основа безопасности и организации работы в Linux.
Запомните ключевые команды:
| Действие | Команда |
| создать пользователя | useradd -m -s /bin/bash username |
| задать пароль | passwd username |
| изменить группы | usermod -aG group username |
| удалить пользователя | userdel -r username |
| создать группу | groupadd groupname |
| удалить группу | groupdel groupname |
| дать права sudo | usermod -aG sudo username |
Всегда проверяйте изменения с помощью id username и groups username. Используйте sudo только там, где это действительно необходимо, и не работайте под root без причины.
Если у вас остались вопросы, обратитесь к man-страницам: man useradd, man usermod, man groupadd, man sudoers.
