Перейти к основному контенту

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

intro-Working-with-Users-Linux-planetahost.png

Версия: для дистрибутивов на базе 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.