Linux怎么取消sudo操作时的延迟等待

阿丽同学_6035

阿丽同学_6035

2026-07-11

299人浏览

原创

根本原因是sudo在执行时调用gethostbyname()解析本机主机名,若/etc/hosts中未将当前hostname映射到127.0.0.1或::1,则fallback至dns查询,而dns服务器不可达或超时导致阻塞15~20秒。

linux怎么取消sudo操作时的延迟等待

sudo 输入密码前卡住十几秒,根本原因是什么

这不是 sudo 本身慢,而是它在尝试解析本机 hostname 时卡在 DNS 或 hosts 映射上。glibc 调用 gethostbyname() 获取当前主机名对应 IP,若 /etc/hosts 里没把 hostname 映射到 127.0.0.1(或 ::1),就会 fallback 到 DNS 查询——而你的 DNS 服务器可能不可达或响应超时,导致阻塞 15~20 秒。

典型现象:sudo -lsudo ls 等任意 sudo 命令都卡,但 su 不卡;hostname 能正常输出,ping $(hostname) 却超时或解析失败。

/etc/hosts 必须包含 hostname 的本地映射

打开 /etc/hosts,确认当前 hostname 是否已作为 127.0.0.1 的别名列出。执行:

hostname

假设输出是 mybox,那么 /etc/hosts 至少应含这一行:

Linux Desktop Control
Linux Desktop Control

Linux 桌面自动化与控制。适用于以下场景:(1)截取屏幕或窗口的截图,(2)控制鼠标和键盘,(3)管理窗口,(4……

下载
127.0.0.1 mybox localhost.localdomain localhost
  • 不要只留 127.0.0.1 localhost —— 这是最常见错误
  • IPv6 行 ::1 后也建议追加 hostname,避免 IPv6 解析干扰:::1 mybox localhost.localdomain localhost
  • 不要注释掉或删除原有 hostname 行,尤其是你改过主机名后
  • 修改后无需重启,立即生效(新终端或重试 sudo 即可)

验证是否真由 DNS 引起

临时绕过 DNS,快速验证问题根源:

  • 运行 export HOSTNAME=$(hostname -s),再执行 sudo -l —— 若延迟消失,基本锁定是 hostname 解析问题
  • 检查 /etc/nsswitch.confhosts: 行,如果含 dns 且 DNS 不可靠,可临时改为 hosts: files 测试
  • strace -e trace=getaddrinfo,openat -f sudo -l 2>&1 | grep -E "(getaddrinfo|127.0.0.1)" 观察是否在调用 getaddrinfo 后长时间无返回

其他可能干扰 sudo 响应的配置点

如果修正 /etc/hosts 后仍慢,需排查更底层机制:

  • /etc/pam.d/sudo 中是否加载了阻塞型模块(如 pam_faillock.sopam_access.so 或 LDAP 相关模块)?注释可疑行后测试
  • 某些发行版默认启用 pam_systemd.so,若 systemd-logind 异常也可能拖慢认证流程
  • sudo -v 刷新时间戳时也走同样解析路径,所以它一样会卡——不能靠它“预热”来规避问题

真正起效的修复永远落在 /etc/hosts 的那行映射上,其余都是次要路径。hostname 和 hosts 文件不一致,是 Linux 权限命令最隐蔽却最高频的卡点。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3610

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3133

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2193

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

5210

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

4882

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

2933

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2445

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

2659

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

277

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习