Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

Linux / DevOps

Разница между sudo su, su -, sudo -i и sudo -s в Linux: как правильно войти под root

Обновлено: 27.08.2026 · Официальная документация ↗

Почему путаница в командах перехода на root приводит к ошибкам

Начинающие системные администраторы часто используют команды sudo su, su, su - и sudo -i как полные синонимы для входа под учетную запись администратора root. Однако между ними существует фундаментальная разница: подгружаются ли системные переменные окружения ($PATH, $HOME, $USER) суперпользователя или сессия сохраняет настройки обычного непривилегированного пользователя. Ошибочный выбор команды часто ломает запуск системных скриптов.

Сравнительная таблица команд переключения на root

КомандаЧей пароль вводитьТип оболочкиПеременные окружения ($HOME, $PATH)
sudo -iПароль текущего юзераLogin ShellЧистые переменные root (/root) — Рекомендуемый способ!
su -Пароль суперпользователя rootLogin ShellЧистые переменные root (/root).
sudo suПароль текущего юзераNon-login ShellСмешанные: часть переменных остается от старого юзера.
sudo -sПароль текущего юзераNon-login ShellОстается домашняя папка текущего пользователя ($HOME=/home/user).

Подробный разбор каждой команды и сценарии использования

1. Команда sudo -i (Золотой стандарт для системного администратора)

Флаг -i (login shell) запускает полноценную чистую сессию root, точно так же, как если бы вы физически вошли под root на сервере:

sudo -i
  • Запрашивает ваш личный пароль пользователя (пароль root знать не нужно).
  • Переменная $HOME меняется на /root.
  • Загружаются все системные файлы инициализации (/etc/profile, ~/.bashrc).
  • Каталог мгновенно меняется на домашнюю папку root.

2. Команда su - (Классический вход через пароль root)

Команда su расшифровывается как Switch User. Дефис - (или флаг -l) указывает системе полностью сбросить окружение:

su -

Особенность: Команда запросит пароль учетной записи root. В современных системах Ubuntu пароль root по умолчанию заблокирован, поэтому команда выдаст ошибку Authentication failure, если пароль root не был задан вручную.

3. Почему команда sudo su считается плохой практикой

Многие новички по привычке пишут:

sudo su

В этом случае запускается оболочка без флага -. Переменная $HOME и системные пути $PATH могут частично указывать на домашнюю папку непривилегированного пользователя /home/user. Если в этой сессии создать файл или установить модуль npm/pip, файлы конфигурации в папке пользователя получат права root:root, после чего обычный пользователь потеряет к ним доступ!

Шаг 4: Как проверить текущее окружение

После входа под root проверьте, где вы находитесь и какие пути загружены:

whoami
pwd
echo $HOME
echo $PATH

Типовые ошибки администраторов

  • Запуск программ через sudo su без очистки окружения: Создание конфигов в /home/ubuntu/.config с правами суперпользователя приводит к ошибкам Permission denied при возврате в обычного пользователя.
  • Отказ от выхода из сессии root: Забытая открытая консоль root опасна. Всегда выходите из режима суперпользователя командой exit или комбинацией Ctrl + D сразу после завершения административных задач.
Хотите стандартизировать права доступа и политики безопасности на серверах компании?
ITSTM настроит матрицы доступов, правила sudoers без необходимости раздачи root-паролей и аудит привилегированных сессий.
💡 Практика специалистов: Никогда не прописывайте системные скрипты автоматизации с вызовом 'sudo su'. Для запуска фоновых сервисов и cron-задач от имени root используйте явный запуск 'sudo -u username' или настраивайте директиву 'User=root' непосредственно в unit-файлах systemd.

Частые вопросы (FAQ)

Какая команда лучше всего подходит для повседневной работы на Ubuntu?

Лучшей практикой является выполнение разовых команд через обычный 'sudo имя_команды'. Если требуется длительная работа в консоли админа, используйте 'sudo -i'.

Почему при вводе пароля в терминале после sudo ничего не отображается?

Это стандартный механизм безопасности Linux (Blind Password). Символы и звездочки намеренно не выводятся на экран, чтобы никто не мог подсмотреть длину вашего пароля. Просто введите пароль вслепую и нажмите Enter.

Как задать пароль суперпользователя root в Ubuntu, если он не установлен?

Выполните команду: sudo passwd root и дважды введите новый надежный пароль.

Что делает команда sudo -s?

Команда sudo -s запускает командную оболочку, указанную в переменной окружения SHELL текущего пользователя, с правами root, но сохраняет текущий рабочий каталог и большую часть пользовательских переменных.

Полезные материалы
Рекомендуем