Управление пользователями и правами в Linux: полный гайд для администратора офисного сервера
Меня зовут Семёнов Евгений Сергеевич, директор АйТи Фреш. За 15+ лет работы с Linux-серверами в корпоративной среде я обслуживал всё — от крошечных виртуалок на одном ядре до многопроцессорных Dell Xeon Platinum 8280 в дата-центре МТС с 40G Mellanox. И чаще всего проблемы безопасности начинаются не со сложных атак, а с тривиальных ошибок в управлении учётными записями. Этот гайд — выжимка практики. Без воды.
База: файлы /etc/passwd, /etc/shadow, /etc/group
Вся система пользователей Linux держится на четырёх текстовых файлах. Понимание их структуры — ключ к спокойной работе.
/etc/passwd— имя, UID, GID, GECOS, домашняя директория и оболочка. Читается всеми./etc/shadow— хеши паролей, даты смены. Только root./etc/group— список групп и их членов./etc/gshadow— пароли групп (редко используется).
Каждая строка в /etc/passwd выглядит так:
ivanov:x:1001:1001:Ivan Ivanov,IT-отдел,+74951234567:/home/ivanov:/bin/bash
UID ниже 1000 зарезервирован под системные учётки. Обычные пользователи начинаются с 1000 (Debian/Ubuntu) или 1001 (RHEL).
Создание и удаление пользователей
Базовый набор команд, который я использую каждый день у нас на практике:
# Создать пользователя с домашним каталогом и bash
useradd -m -s /bin/bash -c "Ivan Ivanov, Sales" ivanov
passwd ivanov
# То же самое на Debian через adduser
adduser ivanov
# Добавить в дополнительные группы
usermod -aG sudo,docker,sales ivanov
# Сменить оболочку
chsh -s /bin/zsh ivanov
# Заблокировать учётку (но не удалять)
usermod -L ivanov
# Или через passwd
passwd -l ivanov
# Разблокировать
usermod -U ivanov
# Удалить пользователя вместе с домашним каталогом
userdel -r ivanov
Я всегда использую флаг -aG при добавлении в группы — без -a команда заменит все вторичные группы, и пользователь потеряет доступ к критичным ресурсам. Классическая ошибка начинающих админов.
Группы и их роль в политике доступа
Группа — основной инструмент разграничения прав на файлы и службы. Вместо того чтобы давать права каждому пользователю индивидуально, создавайте группы по отделам и проектам.
| Команда | Что делает | Пример |
|---|---|---|
| groupadd | Создать группу | groupadd -g 2001 sales |
| groupdel | Удалить группу | groupdel sales |
| gpasswd -a | Добавить пользователя в группу | gpasswd -a ivanov sales |
| gpasswd -d | Удалить из группы | gpasswd -d ivanov sales |
| newgrp | Временно сменить активную группу | newgrp sales |
| id | Показать UID/GID пользователя | id ivanov |
Запомните различие: первичная группа у пользователя всегда одна, вторичных — сколько угодно. Права первичной группы наследуются новыми файлами по умолчанию.
Права на файлы: chmod, chown, umask
Стандартная POSIX-модель — три категории (user, group, other) и три бита (read, write, execute). Комбинации задаются восьмеричным числом или символическим синтаксисом.
# Дать владельцу полный доступ, группе — чтение и исполнение, остальным — ничего
chmod 750 /var/www/intranet
# Изменить владельца и группу рекурсивно
chown -R www-data:www-data /var/www/intranet
# Установить setgid на каталоге — все новые файлы наследуют группу
chmod g+s /srv/share/sales
# Sticky bit — удалять файлы в каталоге может только владелец
chmod +t /tmp
# Маска по умолчанию для новых файлов (022 = 644, 077 = 600)
echo "umask 077" >> /etc/profile
Помните: для каталогов бит execute значит «можно войти в каталог и прочитать список файлов». Без него даже владелец не сможет сделать cd.
POSIX ACL: когда стандартных прав не хватает
Классические права работают только для «владелец/группа/остальные». Если нужно дать конкретному пользователю доступ к файлу, не меняя владельца и группу — используйте ACL.
# Проверить, смонтирована ли ФС с поддержкой ACL
mount | grep acl
# В /etc/fstab добавить опцию acl, если её нет
# Дать пользователю petrov права rwx на каталог
setfacl -m u:petrov:rwx /srv/share/finance
# Посмотреть ACL
getfacl /srv/share/finance
# Сделать ACL наследуемыми для новых файлов внутри
setfacl -d -m u:petrov:rwx /srv/share/finance
# Удалить ACL-запись
setfacl -x u:petrov /srv/share/finance
У нас на практике ACL незаменимы для общих папок бухгалтерии, где главбух имеет полный доступ, помощники — только чтение, а внешний аудитор на время проверки получает временный rwx без включения в группу.
sudo: привилегированный доступ без root-пароля
Раздавать пароль root — плохая практика, я всегда настаиваю на sudo. Каждая команда логируется, права можно сузить до конкретной утилиты, и в случае инцидента вы точно знаете, кто что делал.
# Редактирование только через visudo — иначе рискуете сломать синтаксис
visudo
# Примеры правил
# Полный sudo для группы wheel/sudo без пароля
%sudo ALL=(ALL:ALL) NOPASSWD: ALL
# Только перезапуск nginx пользователю devops
devops ALL=(root) NOPASSWD: /bin/systemctl restart nginx, /bin/systemctl reload nginx
# Запрет опасных команд
Cmnd_Alias DANGEROUS = /usr/bin/rm -rf /*, /usr/sbin/shutdown, /sbin/reboot
admins ALL=(ALL) ALL, !DANGEROUS
Правила лучше класть в отдельные файлы в /etc/sudoers.d/ — так проще управлять через Ansible и откатывать изменения.
Кейс: наведение порядка на файловом сервере юридической фирмы
В марте 2026 к нам обратилась юркомпания из Москвы. Ubuntu Server 22.04 на Dell PowerEdge с 8 ТБ рейдом, 42 сотрудника, четыре отдела. Проблема — 14 месяцев сервер рос хаотически: у пятерых учёток был UID 0, 28 человек входили в группу sudo, общие папки имели права 777. За один день нашлись конфиденциальные договоры в публичной шаре.
За 2 дня мы провели санацию:
- Выделили группы
lawyers,paralegals,accounting,managementс внятными GID от 2000. - Перестроили дерево
/srv/share/с setgid и ACL по отделам. - Из sudo оставили только 3 человек, правила сузили до конкретных команд.
- Включили auditd с правилами на /etc/passwd и /etc/shadow.
- Настроили pam_tally2 — блокировка учётки после 5 неудачных попыток.
Итог: количество инцидентов ИБ за следующие 6 месяцев — ноль. Стоимость работ — 78 000 рублей, включая полный бэкап перед манипуляциями.
SELinux и AppArmor — мандатный контроль доступа
POSIX-права отвечают на вопрос «может ли пользователь открыть файл». MAC (Mandatory Access Control) отвечает на вопрос «может ли процесс от имени пользователя открыть этот файл в этом контексте». На CentOS/RHEL это SELinux, на Ubuntu/Debian — AppArmor.
# Состояние SELinux
getenforce
sestatus
# Переключить в permissive (только логирование) на время отладки
setenforce 0
# Посмотреть контекст файла
ls -Z /var/www/html/index.html
# Восстановить стандартные контексты
restorecon -Rv /var/www/html
# Открыть нестандартный порт для httpd
semanage port -a -t http_port_t -p tcp 8081
# На AppArmor — посмотреть и отключить профиль
aa-status
aa-disable /usr/sbin/nginx
Аудит и мониторинг учётных записей
Бесполезно настраивать права, если вы не знаете, что происходит. Минимальный набор для мониторинга:
last,lastb,lastlog— история входов.who,w— кто в системе прямо сейчас.journalctl _COMM=sudo— все sudo-команды.aureport -au— отчёт auditd по аутентификации.pwckиgrpck— проверка целостности файлов учёток.
# Найти пользователей с UID=0 кроме root
awk -F: '$3==0 {print $1}' /etc/passwd
# Учётки без пароля
awk -F: '$2=="" {print $1}' /etc/shadow
# Пользователи с shell, но никогда не входившие
lastlog -b 90 | grep "Never"
Настройка и аудит Linux-серверов под ключ
Я лично провожу санацию учётных записей и политик доступа на Linux-серверах компаний от 10 рабочих мест. Обследование, план изменений, применение с бэкапом и документацией — за 1–3 рабочих дня. Работаю с CentOS, RHEL, AlmaLinux, Ubuntu Server, Debian.
Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш
FAQ — частые вопросы по правам в Linux
- Чем отличается useradd от adduser?
- useradd — низкоуровневая утилита, доступная во всех дистрибутивах. adduser — интерактивная обёртка, которая есть только в Debian/Ubuntu и автоматически создаёт домашний каталог, копирует скелет и запрашивает пароль. На RHEL/CentOS используйте useradd с ключом -m.
- Какая разница между chmod 755 и chmod 775?
- 755 — владельцу полный доступ, группе и остальным только чтение и исполнение. 775 — владельцу и группе полный доступ, остальным чтение и исполнение. 775 используется для общих каталогов, где члены группы должны иметь возможность создавать файлы.
- Зачем нужен setgid на каталоге?
- Флаг setgid на каталоге заставляет все новые файлы внутри наследовать группу-владельца каталога. Это стандартное решение для общих папок отдела.
- Как посмотреть последние входы пользователей?
- Команда last показывает успешные входы, lastb — неудачные попытки, lastlog — последний вход каждого пользователя. Для аудита sudo — journalctl или /var/log/auth.log.
- Стоит ли отключать SELinux?
- Нет. Используйте режим permissive на этапе отладки, чтобы увидеть нарушения в audit.log, и переводите систему в enforcing после настройки политик через audit2allow.