*КУБ — полный комплекс облачных услуг!

Настройка и управление пользователями на Linux VPS

Linux VPS
Настройка и управление пользователями на VPS под Linux

Базовая модель учетных записей (1 минута теории)

  • Пользователи Linux VPS: /etc/passwd (UID, GID, оболочка, $HOME).
  • Хэши паролей: /etc/shadow (только root).
  • Группы: /etc/group (GID и члены).
  • Домашние каталоги — обычно /home/, шаблон начального содержимого — /etc/skel.

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

1. Удобный мастер adduser (Debian/Ubuntu)

sudo adduser alice
# мастер запросит пароль и профиль, создаст /home/alice и скопирует файлы из /etc/skel
Зручний майстер adduser

2. «На низком уровне» с помощью useradd (универсально)

# стандартний home і bash
sudo useradd -m -s /bin/bash alice
sudo passwd alice

Настройка прав доступа к домашнему каталогу:

sudo mkdir -p /srv/users/alice
sudo cp -rT /etc/skel /srv/users/alice
sudo useradd -d /srv/users/alice -s /bin/bash alice
sudo chown -R alice:alice /srv/users/alice
sudo passwd alice
Кастомний home

Проверка:

getent passwd alice
sudo -u alice -H bash -lc 'whoami && pwd'

Группы и роли

Добавление в дополнительные группы

sudo usermod -aG sudo,adm alice
id alice
groups alice

Удаление из группы

sudo gpasswd -d alice adm

Ролевая группа для проекта/сервиса

sudo groupadd deploy
sudo usermod -aG deploy alice

Безопасный sudo (через visudo и /etc/sudoers.d)

Редактировать правила только через visudo — проверяет синтаксис и избавляет от «кирпича» админки.

# желательно — отдельный файл пользователя
sudo visudo -f /etc/sudoers.d/alice

Полный sudo (как у группы sudo):

alice  ALL=(ALL:ALL) ALL

Минимальные привилегии (пример для nginx):

Cmnd_Alias NGINX_CMDS = /bin/systemctl restart nginx, /bin/systemctl status nginx, /bin/journalctl -u nginx
alice ALL=(root) NOPASSWD: NGINX_CMDS
Безпечний sudo

Советы

  • По возможности предоставляйте права через группу:
  • %webadmins ALL=(root) NOPASSWD: NGINX_CMDS → добавляйте пользователей в группу webadmins.
  • NOPASSWD — точечно там, где требуется автоматизация.

Политика паролей (password aging) и сложность

Индивидуальные сроки через chage

# текущее состояние
sudo chage -l alice
# максимум 90 дней, предупреждать за 7, не менять чаще, чем раз в день
sudo chage -M 90 -W 7 -m 1 alice
# деактивировать по дате
sudo chage -E 2025-12-31 alice

Настройки по умолчанию для новых пользователей (login.defs)

/etc/login.defs:
PASS_MAX_DAYS   90
PASS_MIN_DAYS   1
PASS_WARN_AGE   7

Сложность паролей (PAM, Ubuntu/Debian)

Установите libpam-pwquality и настройте /etc/pam.d/common-password, например:

password requisite pam_pwquality.so retry=3 minlen=12 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1

SSH-ключи и ограничения SSH

Добавить открытый ключ пользователю

sudo -u alice -H bash -lc “mkdir -p ~/.ssh && chmod 700 ~/.ssh”
sudo -u alice -H bash -lc “cat >> ~/.ssh/authorized_keys” # вставьте содержимое файла *.pub, затем Ctrl D
sudo -u alice -H bash -lc “chmod 600 ~/.ssh/authorized_keys”
SSH-ключі

Ограничить доступ в sshd_config

# когда ключи настроены — отключить пароли
PasswordAuthentication no
PubkeyAuthentication yes

# запретить прямой вход под пользователем root (после предоставления прав sudo администраторам)
PermitRootLogin no

# ограничить доступ для группы
AllowGroups sshusers

sudo groupadd sshusers
sudo usermod -aG sshusers alice
sudo systemctl restart sshd

«Технический» пользователь без оболочки

sudo useradd -m -s /usr/sbin/nologin backupbot

Совместная работа в каталоге (группа ACL)

setgid в каталоге проекта (наследование группы)

sudo mkdir -p /srv/project
sudo chgrp project /srv/project
sudo chmod 2775 /srv/project

Точечные ACL (если требуются права, выходящие за рамки стандартных)

sudo setfacl -m u:bob:rwx /srv/project
sudo getfacl /srv/project

Аудит и настройка входов

# успешные входы
last -n 10
# кто в системе
w
who
# неудачные попытки (если faillog активен)
faillog -a

# SSH-логи за сегодня
sudo journalctl -u ssh --since «today»
sudo journalctl -u ssh --grep «Failed password»

Блокировка и удаление учетных записей

# заблокировать пароль (возможность входа с помощью ключа может остаться)
sudo usermod -L alice
# розблокувати
sudo usermod -U alice

# немедленная деактивация (срок действия истек)
sudo chage -E 0 alice

# завершить процессы и удалить учетную запись из каталога home
sudo pkill -KILL -u alice
sudo userdel -r alice
# (Debian/Ubuntu зручно:)
sudo deluser --remove-home alice

Чек-лист готовности к производственной эксплуатации

  • Пользователь создан, $HOME и оболочка корректны, SSH-ключ добавлен.
  • Группы по ролям назначены (sudo/adm/www-data/docker/…).
  • sudo выдан через /etc/sudoers.d с минимальными правами.
  • Политика паролей: chage/login.defs/PAM настроены.
  • В SSH отключены пароли и root-логин; включено ограничение AllowGroups sshusers.
  • Для проектов настроены setgid и, при необходимости, setfacl.
  • Ведётся аудит входов; существует процедура offboarding (lock → kill → backup → remove).
Menu