*КУБ - повний комплекс хмарних послуг!

Налаштування та управління користувачами в 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).