Linux #Ubuntu #Linux #Безопасность #sudo

Root и sudo в Ubuntu

Как включить root в Ubuntu и зайти под root: sudo -i, пароль для root, разница между sudo -i, su и sudo -s, настройка sudoers без ошибок, доступ по SSH, сброс забытого пароля. С конструктором готовых команд.

Обновлено 4 минуты 45
Проверка sudo в Ubuntu 26.04: sudo работает, id показывает группу sudo, sudo -l — (ALL : ALL) ALL, passwd -S root — L
Маршрут «Домашний сервер с нуля» · шаг 3 из 10

Root — это учётная запись с неограниченными правами: она может всё, включая удаление системы одной командой. В Ubuntu пароль root по умолчанию не задан намеренно, а административные действия выполняются через sudo от вашего обычного пользователя. Ниже — как получить нужные права, не открывая при этом дыру в безопасности: соберите команды под свою задачу в конструкторе, а подробности разобраны в статье.

Конструктор команд: права root и sudo

Выберите задачу, подставьте свои значения — и получите готовые команды с пояснениями.

Команды выполняются по порядку сверху вниз. Нажмите на номер шага — он отметится выполненным и запомнится.

Почему в Ubuntu нет пароля root

У классического входа под root три проблемы, и все три решает sudo:

  • Нет защиты от опечатки. Под root любая команда выполняется молча и сразу. sudo требует осознанного действия: вы каждый раз пишете слово «sudo» и подтверждаете паролем.
  • Непонятно, кто что сделал. Если у сервера три администратора и все входят под root, журнал покажет только «root удалил базу». С sudo в журнале остаётся конкретное имя.
  • Учётная запись root — цель для перебора. Имя известно заранее, остаётся подобрать пароль. Когда пароль не задан, а вход root по SSH закрыт, перебирать нечего.

Поэтому правильный ответ на вопрос «как получить root в Ubuntu» почти всегда звучит так: не получать его постоянно, а повышать права на одну команду.

Как включить root и зайти под root в Ubuntu

Зайти под root без включения учётной записи. Это самый безопасный способ: открывается полноценная оболочка root, но спрашивается ваш собственный пароль.

Терминал
sudo -i

Приглашение сменится на root@…:~#. Выйти обратно — командой exit или сочетанием Ctrl + D.

Включить root с отдельным паролем. Нужно, если вы хотите входить через su или в консоли восстановления.

Терминал
sudo passwd root

Дважды введите новый пароль root. Теперь работает вход:

Терминал
su -

Здесь спрашивается уже пароль root, а не вашего пользователя.

Выключить root обратно — заблокировать пароль, не удаляя учётную запись:

Терминал
sudo passwd -l root

sudo, sudo -i, su и sudo -s: в чём разница

Четыре способа, которые постоянно путают:

КомандаЧто делаетКогда использовать
sudo командавыполняет одну команду с правами rootповседневный вариант, 95 % случаев
sudo -iполноценный вход в сеанс root: домашний каталог /root, окружение rootнесколько административных команд подряд
sudo -sоболочка root, но окружение и каталог остаются вашимикогда нужны свои настройки и переменные
su -вход под root по паролю rootесли пароль root задан; в Ubuntu по умолчанию не работает

Проверить, кем вы стали, всегда можно командой whoami. Выйти из сеанса root — exit или Ctrl+D.

Отдельно стоит запомнить: sudo запоминает ввод пароля на 15 минут в том же терминале. Сбросить это время досрочно — sudo -k, что полезно, если вы отходите от компьютера.

sudo-rs: что изменилось в свежих Ubuntu

Начиная с Ubuntu 25.10 в системе по умолчанию используется sudo-rs — реализация sudo, переписанная на языке Rust. Для пользователя ничего не меняется: команды, sudoers и привычное поведение те же. Смысл замены в безопасности — Rust исключает целый класс ошибок работы с памятью, на которых строилась часть прошлых уязвимостей sudo.

Практическая разница появляется только в экзотике: часть редких флагов оригинального sudo пока не реализована. Если какой-то параметр не отрабатывает, проверьте версию командой sudo --version — а при необходимости классический sudo ставится обратно пакетом sudo из репозитория.

Как правильно править sudoers

Главное правило: не открывать /etc/sudoers обычным редактором. Синтаксическая ошибка в этом файле лишает вас прав администратора полностью, и восстанавливать доступ придётся через режим восстановления.

Вместо этого:

  • sudo visudo — открывает основной файл и проверяет синтаксис перед сохранением. При ошибке предложит исправить, а не сломает систему.
  • sudo visudo -f /etc/sudoers.d/имя — отдельный файл правил. Так изменения не смешиваются с системными и легко удаляются.
  • Права на файлы в /etc/sudoers.d/ должны быть 440, а в имени файла не должно быть точек и символа ~ — иначе sudo просто его не прочитает.

Типовые строки, которые там пишут:

/etc/sudoers.d/ivan-nopasswd
# одна конкретная команда без пароля
ivan ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx

# несколько команд, каждая с полным путём
ivan ALL=(ALL) NOPASSWD: /usr/bin/apt update, /usr/bin/apt upgrade -y

# увеличить время до повторного запроса пароля до часа
Defaults:ivan timestamp_timeout=60

Полные пути обязательны: без них правило можно обойти подсунутой в PATH программой с тем же именем.

Root по SSH: как не открыть дверь настежь

Если сервер смотрит в интернет, боты начинают стучаться в него паролями в первые же минуты после подключения. Поэтому со стороны SSH нужны три вещи.

1. Вход по ключу вместо пароля. Ключ генерируется на вашем компьютере и копируется на сервер:

Терминал
ssh-keygen -t ed25519 -C "домашний ноутбук"
ssh-copy-id -i ~/.ssh/id_ed25519.pub ivan@адрес-сервера

2. Отключённые пароли и закрытый root. Настройки лучше класть отдельным файлом в /etc/ssh/sshd_config.d/, а не править основной конфиг — при обновлении системы такой файл не перезапишется:

/etc/ssh/sshd_config.d/99-hardening.conf
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes

Значение PermitRootLogin prohibit-password — компромисс: вход root по паролю запрещён, по ключу разрешён. Он нужен, например, системам резервного копирования, которые умеют ходить только под root.

3. Проверка перед перезапуском. Команда sudo sshd -t проверяет конфигурацию на ошибки. После sudo systemctl reload ssh не закрывайте текущее окно терминала, пока не убедились, что в новом окне вход работает — это стандартный способ не остаться за дверью собственного сервера.

Дополнительно стоит поставить fail2ban: он банит адреса, с которых идёт перебор.

Терминал
sudo apt install fail2ban
sudo systemctl enable --now fail2ban
sudo fail2ban-client status sshd

Вход root в графическом режиме

Отдельно про популярный вопрос «как войти root в GNOME». Технически это делается разрешением в PAM — файл /etc/pam.d/gdm-password, где закомментирована строка с pam_succeed_if.so user != root.

Делать так не нужно почти никогда. Графическая среда под root запускает под неограниченными правами десятки процессов, включая браузер и расширения рабочего стола: одна уязвимость в любом из них — и компрометирована вся система. Кроме того, многие программы (в том числе файловые менеджеры) сами меняют права в домашнем каталоге, и после сеанса root ваш ~/.config может остаться принадлежащим root — после чего перестанут запускаться привычные приложения.

Что делать вместо этого:

  • открыть файл для правки с повышенными правами — sudo -e /путь/к/файлу (редактирование во временной копии, безопаснее прямого запуска редактора);
  • запустить графическую программу — sudo -H имя для X11; в Wayland-сессии, которая используется в Ubuntu по умолчанию, графические программы под root просто не запустятся, и это защита, а не поломка;
  • поработать с системными файлами в файловом менеджере — открыть в нём адрес admin:/// (GNOME Files поддерживает этот протокол и запросит пароль).

Если пароль забыт

Пароль пользователя сбрасывается через режим восстановления GRUB — пошагово это собрано в конструкторе выше, вкладка «Сбросить забытый пароль». Коротко: меню GRUB → Advanced options → пункт с recovery mode → root → mount -o remount,rw / → passwd имя.

Важное следствие: любой, у кого есть физический доступ к компьютеру, может сбросить пароль за минуту. Если на машине есть что защищать — шифруйте диск при установке (LUKS), а на сервере дополнительно ставьте пароль на GRUB.

Как проверить, что всё настроено верно

Терминал
# есть ли у вас права администратора
sudo -v && echo "sudo работает"

# какие правила sudo применяются к пользователю
sudo -l -U ivan

# заблокирована ли учётная запись root (должно быть L или !)
sudo passwd -S root

# разрешён ли вход root по SSH (ожидаем no или prohibit-password)
sudo sshd -T | grep -i permitrootlogin

# что происходило с sudo за эту загрузку
journalctl -b -g sudo --no-pager | tail -n 20

Если passwd -S root показывает L — пароль root заблокирован, то есть всё в порядке по умолчанию. Буква P означает, что пароль задан и учётная запись активна.

Так это выглядит на моём домашнем ПК с Ubuntu 26.04. Все четыре проверки в порядке: sudo работает, пользователь состоит в группе sudo, ему разрешено всё ((ALL : ALL) ALL), а пароль root заблокирован — буква L.

Проверка sudo в Ubuntu 26.04: sudo работает, id показывает группу sudo, sudo -l — (ALL : ALL) ALL, passwd -S root — L
Проверка на моём ПК: root заблокирован, sudo работает

Что читать дальше

Частые вопросы

Как войти под root в Ubuntu?

Введите sudo -i — вы получите полноценный сеанс root без отдельного пароля, подтвердив свой собственный. Пароль для самой учётной записи root задавать для этого не требуется.

Какой пароль root в Ubuntu по умолчанию?

Никакой: учётная запись root заблокирована, пароля у неё нет. Это сделано специально, чтобы под root нельзя было войти напрямую. Проверить состояние можно командой sudo passwd -S root.

Как задать пароль root?

Командой sudo passwd root, после чего система дважды попросит новый пароль. Вернуть всё как было — sudo passwd -l root, эта команда снова блокирует учётную запись.

Чем sudo -i отличается от su?

sudo -i спрашивает ваш пароль и работает всегда, пока вы состоите в группе sudo. su спрашивает пароль root и в Ubuntu по умолчанию не работает вовсе, потому что пароля у root нет.

Как разрешить пользователю выполнять команду без пароля?

Создайте отдельный файл правил через sudo visudo -f /etc/sudoers.d/имя и укажите в нём конкретную команду с полным путём. Разрешать таким образом «все команды» не стоит — это равносильно постоянному root.

Почему sudo пишет «is not in the sudoers file»?

Пользователь не состоит в группе sudo. Исправляется командой sudo usermod -aG sudo имя, выполненной от учётной записи, у которой права уже есть, и повторным входом в систему.

Опасно ли работать под root постоянно?

Да, по трём причинам: любая опечатка выполняется без предупреждения, действия становятся обезличенными в журналах, а запущенные программы получают неограниченный доступ ко всей системе. Права стоит повышать только на время конкретной задачи.

Как узнать, кто использовал sudo?

Командой journalctl -b -g sudo — в журнале видно время, имя пользователя, рабочий каталог и саму команду. За входами в систему следит last, за неудачными попытками по SSH — journalctl -u ssh -g 'Failed password'.

Статья помогла?

Комментарии

Пока никто не написал. Будьте первым — вопрос или свой опыт одинаково полезны.

Комментарий появится после проверки. Ссылки и реклама не публикуются.