Перейти к основному содержимому
Вернуться в категорию

Управление пользователями и правами Linux: sudo и группы

Управление пользователями Linux с useradd/usermod/userdel, управление группами, настройка sudo, аутентификация по SSH-ключу и принцип минимальных привилегий.

Время чтения: 13 мин Управление сервером
linuxуправление пользователямиsudoгруппыsshбезопасностьuseraddправа

Содержание

Управление пользователями и правами Linux: sudo и группы

Управление пользователями и правами в Linux — краеугольный камень безопасности сервера. Правильно настроенные учётные записи и разрешения предотвращают несанкционированный доступ и ограничивают последствия нарушений безопасности. В этом руководстве рассматриваются управление пользователями Linux, структура групп, настройка sudo и аутентификация по SSH-ключу.

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

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

hljs bash
# Создать базового пользователя
sudo useradd имя_пользователя

# Создать пользователя с домашним каталогом
sudo useradd -m имя_пользователя

# С домашним каталогом, оболочкой и комментарием
sudo useradd -m -s /bin/bash -c "Имя Фамилия" имя_пользователя

# С определённым UID
sudo useradd -m -u 1500 имя_пользователя

# С основной группой
sudo useradd -m -g www-data имя_пользователя

# Установить пароль
sudo passwd имя_пользователя

# Просмотр информации о пользователе
id имя_пользователя
getent passwd имя_пользователя

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

hljs bash
# Переименовать пользователя
sudo usermod -l новое_имя старое_имя

# Изменить домашний каталог
sudo usermod -d /новый/домашний -m имя_пользователя

# Изменить оболочку
sudo usermod -s /bin/bash имя_пользователя

# Заблокировать учётную запись
sudo usermod -L имя_пользователя

# Разблокировать учётную запись
sudo usermod -U имя_пользователя

# Установить дату истечения срока действия
sudo usermod -e 2025-12-31 имя_пользователя

# Принудительная смена пароля при следующем входе
sudo chage -d 0 имя_пользователя

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

hljs bash
# Удалить пользователя (домашний каталог сохраняется)
sudo userdel имя_пользователя

# Удалить пользователя и домашний каталог
sudo userdel -r имя_пользователя

# Найти файлы, принадлежащие пользователю
find / -user имя_пользователя 2>/dev/null

Управление группами

hljs bash
# Создать группу
sudo groupadd разработчики

# Добавить пользователя в группу
sudo usermod -aG разработчики имя_пользователя

# Добавить в несколько групп
sudo usermod -aG группа1,группа2,группа3 имя_пользователя

# Просмотр групп пользователя
groups имя_пользователя
id имя_пользователя

# Список пользователей в группе
getent group разработчики

# Удалить пользователя из группы
sudo gpasswd -d имя_пользователя разработчики

# Удалить группу
sudo groupdel разработчики

# Переименовать группу
sudo groupmod -n новое_имя старое_имя

Настройка sudo

Предоставление доступа sudo

hljs bash
# Добавить пользователя в группу sudo (Debian/Ubuntu)
sudo usermod -aG sudo имя_пользователя

# Добавить пользователя в группу wheel (RHEL/CentOS)
sudo usermod -aG wheel имя_пользователя

# Проверить изменение
su - имя_пользователя
sudo whoami  # должно вывести: root

Настройка файла sudoers

hljs bash
# Безопасное редактирование файла sudoers
sudo visudo
# Содержимое /etc/sudoers

# Полный доступ sudo для пользователя
имя_пользователя ALL=(ALL:ALL) ALL

# sudo без пароля (использовать с осторожностью)
имя_пользователя ALL=(ALL) NOPASSWD: ALL

# sudo только для определённых команд
имя_пользователя ALL=(ALL) /usr/bin/systemctl, /usr/bin/apt

# Доступ sudo для группы
%разработчики ALL=(ALL:ALL) ALL

# Без пароля для конкретной команды
имя_пользователя ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx
hljs bash
# Создать отдельный файл (рекомендуемый подход)
sudo nano /etc/sudoers.d/имя_пользователя

# Содержимое файла
имя_пользователя ALL=(ALL:ALL) ALL

# Установить права доступа к файлу
sudo chmod 440 /etc/sudoers.d/имя_пользователя

Права доступа к файлам

hljs bash
# Просмотр прав доступа
ls -la /каталог/

# Изменение прав (числовой формат)
chmod 755 скрипт.sh    # rwxr-xr-x
chmod 644 файл.txt     # rw-r--r--
chmod 600 секрет.key   # rw-------

# Изменение прав (символьный формат)
chmod u+x скрипт.sh    # добавить выполнение для владельца
chmod g-w файл.txt     # убрать запись для группы
chmod o-r секрет.txt   # убрать чтение для остальных

# Изменение владельца
chown имя_пользователя файл.txt
chown имя_пользователя:группа файл.txt

# Рекурсивное изменение каталога
chown -R имя_пользователя:группа /каталог/

Аутентификация по SSH-ключу

Генерация пары SSH-ключей

hljs bash
# Генерация ключа на локальной машине
ssh-keygen -t ed25519 -C "email@example.com"

# RSA-ключ (для старых систем)
ssh-keygen -t rsa -b 4096 -C "email@example.com"

# Ключи создаются в ~/.ssh/:
# ~/.ssh/id_ed25519 (закрытый ключ)
# ~/.ssh/id_ed25519.pub (открытый ключ)

Копирование открытого ключа на сервер

hljs bash
# С помощью ssh-copy-id (самый простой способ)
ssh-copy-id пользователь@ip_сервера

# Ручное копирование
cat ~/.ssh/id_ed25519.pub | ssh пользователь@ip_сервера "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

# Ручная настройка на сервере
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys  # вставить открытый ключ
chmod 600 ~/.ssh/authorized_keys

Настройка безопасности SSH

hljs bash
sudo nano /etc/ssh/sshd_config
# Отключить аутентификацию по паролю (после настройки ключа)
PasswordAuthentication no

# Отключить вход root
PermitRootLogin no

# Запретить пустые пароли
PermitEmptyPasswords no

# Максимальное количество попыток входа
MaxAuthTries 3

# Разрешить определённых пользователей
AllowUsers пользователь1 пользователь2

# Разрешить определённую группу
AllowGroups ssh-users
hljs bash
# Перезапустить SSH
sudo systemctl restart sshd

# Проверить конфигурацию
sudo sshd -t

Принцип минимальных привилегий

Принцип минимальных привилегий гласит, что каждый пользователь и процесс должны иметь только минимальные разрешения, необходимые для выполнения своей задачи.

hljs bash
# Создать выделенного пользователя для приложения (без оболочки)
sudo useradd -r -s /usr/sbin/nologin -d /var/lib/myapp myapp_user

# Создать домашний каталог для служебного пользователя
sudo mkdir -p /var/lib/myapp
sudo chown myapp_user:myapp_user /var/lib/myapp
sudo chmod 750 /var/lib/myapp

Избегайте прямого использования учётной записи root. Создайте отдельные учётные записи для каждого администратора и авторизуйте через sudo. Так все действия будут зарегистрированы и отслеживаемы.

Мониторинг активности пользователей

hljs bash
# Просмотр последних входов
last
lastlog

# Просмотр неудачных попыток входа
lastb

# Просмотр активных пользователей
who
w

# Мониторинг использования sudo
sudo grep sudo /var/log/auth.log

Заключение

Управление пользователями и правами Linux составляет основу безопасности сервера. Предоставляйте каждому пользователю только необходимые разрешения, используйте аутентификацию по SSH-ключу и ограничивайте доступ root. Эти практики защищают серверы REXE от несанкционированного доступа.