Как создать пользователя, дать ему права администратора, пустить по ключу SSH, разрешить отдельные команды без пароля, заблокировать и удалить учётную запись.
Содержание
На сервере уже есть учётная запись администратора — ubuntu, debian, almalinux или freebsd (подробнее). Если на сервер заходят несколько человек или программа выкладки, заведите каждому свою учётную запись: видно, кто что делал, и доступ легко забрать у одного, не трогая остальных.
Создать пользователя
sudo useradd -m -s /bin/bash ivan
sudo passwd ivan-m создаёт домашнюю папку /home/ivan, -s задаёт оболочку. Пароль понадобится для sudo, даже если входить человек будет по ключу.
В Ubuntu и Debian то же самое делает sudo adduser ivan — с вопросами по шагам. Во FreeBSD — sudo adduser, тоже по шагам.
Права администратора
Администраторы в Linux — участники особой группы: sudo в Ubuntu и Debian, wheel в AlmaLinux. Добавьте пользователя в неё:
sudo usermod -aG sudo ivan # Ubuntu, Debian
sudo usermod -aG wheel ivan # AlmaLinuxНе пропустите -a: без неё usermod -G заменит все группы пользователя одной. Права появятся при следующем входе. Проверить: войти под ivan и выполнить sudo whoami — ответ должен быть root.
Во FreeBSD группа wheel разрешает только su, для sudo нужно ещё правило:
sudo pw groupmod wheel -m ivan
echo '%wheel ALL=(ALL) ALL' | sudo tee /usr/local/etc/sudoers.d/wheelВход по ключу
Попросите у человека открытый ключ — одну строку, которая начинается с ssh-ed25519, — и положите её в его папку:
sudo install -d -m 700 -o ivan -g ivan /home/ivan/.ssh
echo 'ssh-ed25519 AAAA… ivan@laptop' | sudo tee -a /home/ivan/.ssh/authorized_keys
sudo chown ivan:ivan /home/ivan/.ssh/authorized_keys
sudo chmod 600 /home/ivan/.ssh/authorized_keysПрава здесь важны: если папка или файл доступны другим на запись, SSH ключ не примет. Как создать ключ и выключить вход по паролю — в статье Как подключиться к серверу по SSH.
sudo без пароля
У учётной записи, которая создаётся вместе с сервером, sudo пароль не спрашивает. Новым пользователям — спрашивает, и это правильно: украденный ключ без пароля не даёт прав root.
Если без пароля нужно — например, программе выкладки, — разрешите только нужные команды, а не всё. Правила создавайте через visudo: он проверит файл перед сохранением.
sudo visudo -f /etc/sudoers.d/deployСтрока в файле:
deploy ALL=(root) NOPASSWD: /usr/bin/systemctl restart myappsudo -i — из него ошибку можно исправить. Имя файла в /etc/sudoers.d/ пишите без точек: файлы с точкой в имени sudo пропускает.Работать от имени другого пользователя
sudo -i # оболочка root
sudo -iu ivan # оболочка пользователя ivan
sudo -u www-data php script.php # одна команда от имени www-dataВернуться к себе — exit.
Кто есть на сервере
getent passwd | awk -F: '$3 >= 1000 && $3 < 65000 {print $1}' # обычные пользователи
id ivan # в каких группах
who # кто сейчас на сервереКто и когда входил по SSH, покажет журнал: Журналы: journalctl и /var/log.
Заблокировать или удалить
sudo usermod -L -e 1 ivan # заблокировать: не пустит ни пароль, ни ключ
sudo usermod -U -e '' ivan # разблокировать
sudo userdel -r ivan # удалить вместе с домашней папкойПеред удалением проверьте, не работают ли от его имени программы (ps -u ivan) и задания по расписанию (sudo crontab -l -u ivan).
Во FreeBSD: sudo pw lock ivan — заблокировать, sudo pw unlock ivan — разблокировать, sudo rmuser ivan — удалить.
Не нашли ответ? Напишите в поддержку — подскажем.


