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

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

Налаштування та управління користувачами в Linux VPS

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

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

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

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

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

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

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

Кастомный home + права:

				
					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
				
			

Проверка:

				
					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
				
			
Linux VPS

Советы

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

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

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

				
					# текущее состояние
sudo chage -l alice
# максимум 90 дней, предупреждать за 7, не менять чаще 1 дня
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»
				
			
Linux VPS

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

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

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

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

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

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

				
					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 и shell корректны, 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).