Ошибка sudo: unable to resolve host — простое решение за 2 минуты

Ошибка sudo: unable to resolve host — простое решение за 2 минуты

Выполняете команду с sudo, а в ответ получаете раздражающую ошибку «unable to resolve host»? Эта проблема знакома многим пользователям Linux, особенно после смены имени компьютера. Сообщение выглядит пугающе, но на самом деле всё исправимо буквально парой действий.

Система пытается найти IP-адрес для вашего локального хоста и не может его распознать. Вам не нужно быть сетевым гуру, чтобы это исправить. Мы покажем вам два рабочих способа: через редактирование системного файла и с помощью встроенной службы.

Вы узнаете, как быстро добавить запись в hosts, даже если sudo временно не работает. Мы разберем, почему возникает эта ошибка и как система использует имя вашего компьютера. Это не баг, а особенность работы sudo, о которой стоит знать.

Готовы навсегда избавиться от этого сообщения и вернуть системе полноценную функциональность? Переходите к полной статье — внутри вас ждут пошаговые инструкции для Ubuntu и аналогичных дистрибутивов, которые решат проблему за пару минут!


Некоторые пользователи сталкиваются с ошибкой "sudo unable to resolve host". Обычно, эта ошибка появляется после смены имени компьютера. Это простая проблема, которую можно быстро решить.

В этой статье мы рассмотрим, почему возникает эта ошибка, что она означает, а также как её решить на примере Ubuntu.


Содержание статьи

Что значит sudo unable to resolve host

Ошибка sudo: unable to resolve host — простое решение за 2 минуты

Сообщение "unable to resolve host имя_хоста" означает, что утилита не может определить IP-адрес хоста "имя_хоста". Казалось бы, sudo - это локальная команда для повышения привилегий в системе, и ей незачем определять IP хостов. Но это не совсем так: sudo может использоваться и удалёнными пользователями, например, подключёнными по SSH, а в самом конфигурационном файле /etc/sudoers уровни доступа различных пользователей настраиваются такой строчкой:

пользователь хост=(другой_пользователь:группа) команды 

Подробнее про строку настройки читайте в статье настройка sudo в linux. А сейчас нам интересно, что для каждого запроса утилите нужно определить, какой хост используется на данном компьютере.

Ошибка sudo: unable to resolve host — простое решение за 2 минуты

Если кратко, то основная идея разработчиков состоит в том, что один универсальный файл /etc/sudoers будет использоваться на множестве компьютеров и на каждом из них нужно определить, какие правила предназначены для него. Таким образом, переменная host в sudoers влияет только на локальные правила.

А теперь вернёмся к нашей ошибке. Как я уже сказал, она означает, что утилита не может определить IP-адрес "имени хоста". Для домена сайта это означало бы, что такой записи нет в DNS. Но поскольку это имя нашего локального компьютера, то вполне естественно, что его нет в глобальной сети.

Как исправить ошибку

1. Решение проблемы в /etc/hosts

Чтобы исправить ошибку, мы можем добавить такую DNS-запись локально в файл /etc/hosts. Поскольку sudo у вас не работает, а этот файл можно редактировать только от суперпользователя, то эта простая задача становится сложнее. Сначала смотрим наше текущее имя хоста:

hostname

Ошибка sudo: unable to resolve host — простое решение за 2 минуты

Дальше, если у вас установлен пароль root, вы можете авторизоваться от его имени с помощью su:

su -

А затем добавить такую строчку в /etc/hosts:

vi /etc/hosts

127.0.0.1 имя_хоста

Ошибка sudo: unable to resolve host — простое решение за 2 минуты

Ошибка sudo: unable to resolve host — простое решение за 2 минуты

Слова "имя_хоста" надо заменить на то имя хоста, которое вы получили с помощью команды hostname. После этого надо перезапустить компьютер или просто перезапустить сеть:

sudo systemctl restart networking

Ещё желательно убедиться, что в системной службе разрешения доменных имён включено использование файла /hosts. Откройте /etc/nsswitch.conf и найдите в строке hosts слово "files". Оно должно быть на первом месте. Если нет, перенесите его на первое место.

Ошибка sudo: unable to resolve host — простое решение за 2 минуты

Если же у вас пароль для root не установлен, вам нужно загрузиться с LiveCD, примонтировать корневую файловую систему в /mnt/ и исправлять ошибку уже там.

2. Решение с помощью systemd

Есть ещё один путь. В попытках воспроизвести эту проблему в своей Ubuntu 18.04 я обнаружил, что разрешением доменных имён для локальных приложений занимается служба systemd-resolved. Если она запущена, то даже если в файле /etc/hosts нет имени вашего компьютера, всё будет работать. Поэтому, если вы случайно отключили эту службу, верните её на место и всё заработает:

sudo systemctl start systemd-resolved
sudo systemctl enable systemd-resolved

Выводы

В этой статье мы разобрали, как справиться с ошибкой "sudo cannot to resolve host". Как видите, всё достаточно логично и просто. Если у вас остались вопросы, спрашивайте в комментариях!

Оставить комментарий


Кликните на изображение чтобы обновить код, если он неразборчив