· 15 мин чтения

Управление пользователями и правами в Linux: полный гайд для администратора офисного сервера

Меня зовут Семёнов Евгений Сергеевич, директор АйТи Фреш. За 15+ лет работы с Linux-серверами в корпоративной среде я обслуживал всё — от крошечных виртуалок на одном ядре до многопроцессорных Dell Xeon Platinum 8280 в дата-центре МТС с 40G Mellanox. И чаще всего проблемы безопасности начинаются не со сложных атак, а с тривиальных ошибок в управлении учётными записями. Этот гайд — выжимка практики. Без воды.

База: файлы /etc/passwd, /etc/shadow, /etc/group

Вся система пользователей Linux держится на четырёх текстовых файлах. Понимание их структуры — ключ к спокойной работе.

Каждая строка в /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 дня мы провели санацию:

Итог: количество инцидентов ИБ за следующие 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

Аудит и мониторинг учётных записей

Бесполезно настраивать права, если вы не знаете, что происходит. Минимальный набор для мониторинга:

# Найти пользователей с 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.

Подпишитесь на рассылку ITfresh

Раз в неделю — практические гайды для руководителя IT и сисадмина: безопасность, 1С, миграции, резервные копии, лайфхаки из реальных проектов.

Реквизиты оператора персональных данных

ООО «АЙТИ-ФРЕШ», ИНН 7719418495, КПП 771901001. Юридический адрес: 105523, г. Москва, Щёлковское шоссе, д. 92, корп. 7. Контакт: info@itfresh.ru, +7 903 729-62-41. Оператор обрабатывает e-mail подписчика в целях рассылки информационных и рекламных материалов до момента отзыва согласия.