解决报错:’sudo: unable to resolve host xxx’

操作环境

master@ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 16.04.6 LTS
Release:    16.04
Codename:    xenial

报错背景

我在控制台中使用 sudo 提升权限进行一些操作时,回车之后,系统需要经过比平时稍长的时间才会弹出要我输入 ROOT 账户密码的提示,而且正确地输入 ROOT 账户的密码之后,预期的命令并没有执行,而是返回如下的错误提示:

sudo: unable to resolve host ubuntu

例如:

master@ubuntu:~$ sudo cp -p /var/lib/dpkg/status status.bak0
sudo: unable to resolve host ubuntu

解决过程

报错信息的大致含义是“无法解析主机 ubuntu”,其中 “ubuntu” 是我的主机名。我们可以通过 hostname 命令查看当前的主机名:

master@ubuntu:~$ hostname
ubuntu

由于 hostname 命令是从 /etc/hostname 文件中获取到的主机名,因此,直接查看该文件也可以获知当前的主机名:

master@ubuntu:~$ cat /etc/hostname 
ubuntu

如上两次检查都显示当前的主机名是 ubuntu. 根据 Ubuntu 系统以及其他类似 Ubuntu 的系统的特性,这时 /etc/hosts 中也应该有 ubuntu 这个主机名的记录。但是,当我查看 /etc/hosts 这个文件时,却发现其中并没有该记录:

master@ubuntu:~$ cat /etc/hosts
127.0.0.1    localhost
127.0.0.1    v.dhg.wiki

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

问题应该就出这里(后面的操作完成后可以确定问题确实出在这里),但是 /etc/hosts 是只有 ROOT 权限才能编辑的文件,sudo 目前又不能用,因此只能使用 su root, 由普通用户切换到 ROOT 用户,之后,编辑 /etc/hosts, 写入如下内容:

127.0.0.1    ubuntu

注意:上面命令中的 ubuntu 是我的主机名,你在操作时要替换成自己的主机名。

之后,保存退出。修改完成之后的 /etc/hosts 文件大致是这样的:

master@ubuntu:~$ cat /etc/hosts
127.0.0.1    localhost
127.0.0.1    v.dhg.wiki
127.0.0.1    ubuntu

# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

之后测试发现 sudo 已经可以正常使用。

至此,问题解决。

EOF


荒原之梦网全部内容均为原创,提供了涵盖考研数学基础知识、考研数学真题、考研数学练习题和计算机科学等方面,大量精心研发的学习资源。

豫 ICP 备 17023611 号-1 | 公网安备 - 荒原之梦 豫公网安备 41142502000132 号 | SiteMap
Copyright © 2017-2024 ZhaoKaifeng.com 版权所有 All Rights Reserved.

Copyright © 2024   zhaokaifeng.com   All Rights Reserved.
豫ICP备17023611号-1
 豫公网安备41142502000132号

荒原之梦 自豪地采用WordPress