Как создать администратора (sudo) в Ubuntu и Linux
Две команды от пользователя, у которого уже есть sudo:
sudo adduser alice
sudo usermod -aG sudo alice
Вместо alice подставьте нужное имя. В Ubuntu (24.04 и 26.04 LTS) и Debian этого хватит: /etc/sudoers даёт группе sudo все права root. В Fedora, RHEL, CentOS, Rocky и AlmaLinux группа называется wheel.
Я проверил все команды на Ubuntu 24.04 и 26.04, Debian 12 и 13, Fedora 45, AlmaLinux 9 и 10.
Что спрашивает adduser
adduser создаёт группу и домашнюю директорию пользователя, ставит шелл /bin/bash и спрашивает:
- пароль, два раза;
- Full Name, Room Number, Work Phone, Home Phone, Other — каждое поле можно пропустить по Enter;
Is the information correct? [Y/n]— Enter.
Вместо usermod можно написать sudo adduser alice sudo: сначала пользователь, потом группа.
Как создать администратора без вопросов
В скриптах удобнее useradd. Без -m он не создаст домашнюю директорию, а шелл по умолчанию в Ubuntu — /bin/sh. Поэтому оба флага пишем явно:
sudo useradd -m -s /bin/bash -G sudo alice
sudo passwd alice
passwd спрашивает пароль в терминале. В скрипте берите chpasswd, а пароль держите в переменной, чтобы его не было в тексте скрипта и в списке процессов:
printf '%s:%s\n' alice "$ALICE_PASSWORD" | sudo chpasswd
Пишите printf, а не echo: в /bin/sh на Ubuntu и Debian echo портит обратные слэши в пароле.
Для аккаунта, который будет входить только по SSH-ключу:
sudo adduser --disabled-password --gecos "" alice
sudo usermod -aG sudo alice
Пароля у такого пользователя нет, а sudo его спросит. Задайте пароль командой sudo passwd alice или настройте sudo без пароля (ниже).
Как проверить, что у пользователя есть sudo
groups alice
sudo -l -U alice
В выводе groups должна быть группа sudo (в Fedora и RHEL — wheel), а в выводе sudo -l -U — строка (ALL : ALL) ALL (в Fedora и RHEL — (ALL) ALL). Для обычного пользователя будет User alice is not allowed to run sudo. Последняя проверка — войти под alice и запустить команду через sudo:
su - alice
sudo whoami # выведет root
«alice is not in the sudoers file»: нужно перелогиниться
В классическом sudo (Ubuntu 24.04, Debian, Fedora, RHEL) новые группы подхватываются только при входе в систему. Если у alice уже открыта сессия, usermod её не изменит: groups внутри сессии покажет старый список, а sudo ответит alice is not in the sudoers file. Пусть выйдет и зайдёт заново или переподключится по SSH. Команда groups alice читает /etc/group и показывает sudo сразу, поэтому по ней проблему не видно.
В Ubuntu 26.04 по умолчанию стоит sudo-rs. Он читает /etc/group при каждом вызове, так что в открытой сессии права появляются сразу. Пользователю без прав он отвечает I'm sorry alice. I'm afraid I can't do that.
Debian: если sudo не установлен
Те же команды и та же группа sudo. Подвох в установщике: если задать пароль root, он не ставит sudo и не добавляет вашего пользователя в группу. Исправляем из-под root:
su -
apt install sudo
usermod -aG sudo alice
Пишите su - с дефисом. Обычный su в Debian оставляет ваш PATH без /usr/sbin, и вы получите usermod: command not found.
Fedora, RHEL, CentOS: группа wheel
sudo useradd alice
sudo passwd alice
sudo usermod -aG wheel alice
Здесь adduser — ссылка на useradd. Он ничего не спрашивает и оставляет аккаунт без пароля, так что passwd не пропускайте. Домашнюю директорию он создаёт сам, шелл по умолчанию — /bin/bash.
sudo без пароля
Правило кладём в /etc/sudoers.d, но сначала проверяем синтаксис:
t=$(mktemp)
echo 'alice ALL=(ALL) NOPASSWD:ALL' > "$t"
sudo visudo -cf "$t" && sudo install -m 0440 "$t" /etc/sudoers.d/alice
rm "$t"
visudo -cf выведет parsed OK или покажет, где ошибка. mktemp создаёт файл, в который можете писать только вы. Файл с постоянным именем вроде /tmp/alice может заранее создать другой пользователь, и вы установите его правило. Точку в имени файла не ставьте: sudo пропускает файлы в /etc/sudoers.d, в имени которых есть . или которые кончаются на ~. Файл alice.conf молча не сработает. Если правите руками, открывайте через sudo visudo -f /etc/sudoers.d/alice: файл с ошибкой он не сохранит.
SSH-ключ для нового пользователя
Со своего компьютера, если сервер пускает по паролю (как это включить):
ssh-copy-id alice@server
Если ключа ещё нет, создайте его командой ssh-keygen -t ed25519 (подробнее про SSH-ключи на Mac).
Если у alice нет пароля, ssh-copy-id не залогинится. Тогда добавьте ключ на сервере из-под администратора:
sudo mkdir -p /home/alice/.ssh
echo 'ssh-ed25519 AAAA... you@laptop' | sudo tee -a /home/alice/.ssh/authorized_keys
sudo chown -R alice:alice /home/alice/.ssh
sudo chmod 700 /home/alice/.ssh
sudo chmod 600 /home/alice/.ssh/authorized_keys
Если у .ssh или authorized_keys есть права на запись для всех (например, 777 или 666), sshd проигнорирует ключ и ответит Permission denied.
Как забрать права администратора
sudo gpasswd -d alice sudo # в Fedora и RHEL — wheel
sudo rm /etc/sudoers.d/alice # если создавали этот файл
В классическом sudo уже открытые сессии alice сохраняют sudo, пока она не выйдет из системы. sudo pkill -KILL -u alice завершит их вместе со всеми её процессами. В Ubuntu 26.04 (sudo-rs) права пропадают сразу.
В Ubuntu и Debian то же делает sudo deluser alice sudo. Удалить аккаунт вместе с домашней директорией: sudo deluser --remove-home alice в Ubuntu и Debian, sudo userdel -r alice в любой из этих систем.
Частые ошибки
usermod -G sudo aliceбез-aзаменит все дополнительные группы alice однойsudo. Пишите-aG.- Для root-шелла хватит
sudo -i.sudo suиз версии этого поста 2017 года делает то же самое двумя программами вместо одной. - В
/etc/sudoersв Ubuntu есть ещё строка%admin, но группыadminпо умолчанию нет. Используйтеsudo.