如果启用 WIFI,为什么 sudo 会延迟 5 到 10 秒?以及如何解决它?

如果启用 WIFI,为什么 sudo 会延迟 5 到 10 秒?以及如何解决它?

在关闭互联网的情况下在终端中运行此命令:

while true;do sudo -n uptime 2>/dev/null;echo "`date`($((i++)))";sleep 0.1;done

现在打开互联网(这里是WIFI)。
现在日志每 5 到 10 秒就会发生一次......

如何让 sudo 忽略网络?

另外,为什么它会有这样的表现?

观测:ubuntu 22.04

PS.:我用来sudo -n uptime警告终端是否具有 sudo 访问权限(我将其全部涂成红色)。所以我在终端中运行的每个命令都会遇到这个问题。

WIFI开启时的延迟日志:

Fri  5 Jan 00:07:41 -03 2024(0)
Fri  5 Jan 00:07:47 -03 2024(1)
Fri  5 Jan 00:07:52 -03 2024(2)
Fri  5 Jan 00:07:57 -03 2024(3)
Fri  5 Jan 00:07:57 -03 2024(4)
Fri  5 Jan 00:08:02 -03 2024(5)
Fri  5 Jan 00:08:02 -03 2024(6)
Fri  5 Jan 00:08:13 -03 2024(7)
Fri  5 Jan 00:08:18 -03 2024(8)
Fri  5 Jan 00:08:18 -03 2024(9)
Fri  5 Jan 00:08:23 -03 2024(10)
Fri  5 Jan 00:08:28 -03 2024(11)
Fri  5 Jan 00:08:28 -03 2024(12)
Fri  5 Jan 00:08:34 -03 2024(13)
Fri  5 Jan 00:08:39 -03 2024(14)
Fri  5 Jan 00:08:44 -03 2024(15)
Fri  5 Jan 00:08:44 -03 2024(16)

当 WIFI 关闭时:

Fri  5 Jan 00:11:45 -03 2024(21)
Fri  5 Jan 00:11:45 -03 2024(22)
Fri  5 Jan 00:11:46 -03 2024(23)
Fri  5 Jan 00:11:46 -03 2024(24)
Fri  5 Jan 00:11:46 -03 2024(25)
Fri  5 Jan 00:11:46 -03 2024(26)
Fri  5 Jan 00:11:46 -03 2024(27)
Fri  5 Jan 00:11:46 -03 2024(28)
Fri  5 Jan 00:11:46 -03 2024(29)
Fri  5 Jan 00:11:46 -03 2024(30)
Fri  5 Jan 00:11:47 -03 2024(31)
Fri  5 Jan 00:11:47 -03 2024(32)
Fri  5 Jan 00:11:47 -03 2024(33)
Fri  5 Jan 00:11:47 -03 2024(34)
Fri  5 Jan 00:11:47 -03 2024(35)
Fri  5 Jan 00:11:47 -03 2024(36)
Fri  5 Jan 00:11:47 -03 2024(37)
Fri  5 Jan 00:11:47 -03 2024(38)
Fri  5 Jan 00:11:47 -03 2024(39)
Fri  5 Jan 00:11:48 -03 2024(40)
Fri  5 Jan 00:11:48 -03 2024(41)
Fri  5 Jan 00:11:48 -03 2024(42)
Fri  5 Jan 00:11:48 -03 2024(43)
Fri  5 Jan 00:11:48 -03 2024(44)
Fri  5 Jan 00:11:48 -03 2024(45)
Fri  5 Jan 00:11:48 -03 2024(46)
Fri  5 Jan 00:11:48 -03 2024(47)
Fri  5 Jan 00:11:49 -03 2024(48)
Fri  5 Jan 00:11:49 -03 2024(49)
Fri  5 Jan 00:11:49 -03 2024(50)
Fri  5 Jan 00:11:49 -03 2024(51)
Fri  5 Jan 00:11:49 -03 2024(52)
Fri  5 Jan 00:11:49 -03 2024(53)
Fri  5 Jan 00:11:49 -03 2024(54)
Fri  5 Jan 00:11:49 -03 2024(55)
Fri  5 Jan 00:11:50 -03 2024(56)
Fri  5 Jan 00:11:50 -03 2024(57)
Fri  5 Jan 00:11:50 -03 2024(58)
Fri  5 Jan 00:11:50 -03 2024(59)
Fri  5 Jan 00:11:50 -03 2024(60)
Fri  5 Jan 00:11:50 -03 2024(61)
Fri  5 Jan 00:11:50 -03 2024(62)
Fri  5 Jan 00:11:50 -03 2024(63)
Fri  5 Jan 00:11:50 -03 2024(64)
Fri  5 Jan 00:11:51 -03 2024(65)
Fri  5 Jan 00:11:51 -03 2024(66)
Fri  5 Jan 00:11:51 -03 2024(67)
Fri  5 Jan 00:11:51 -03 2024(68)
Fri  5 Jan 00:11:51 -03 2024(69)
Fri  5 Jan 00:11:51 -03 2024(70)
Fri  5 Jan 00:11:51 -03 2024(71)
Fri  5 Jan 00:11:51 -03 2024(72)
Fri  5 Jan 00:11:52 -03 2024(73)
Fri  5 Jan 00:11:52 -03 2024(74)
Fri  5 Jan 00:11:52 -03 2024(75)
Fri  5 Jan 00:11:52 -03 2024(76)
Fri  5 Jan 00:11:52 -03 2024(77)
Fri  5 Jan 00:11:52 -03 2024(78)
Fri  5 Jan 00:11:52 -03 2024(79)
Fri  5 Jan 00:11:52 -03 2024(80)
Fri  5 Jan 00:11:52 -03 2024(81)
Fri  5 Jan 00:11:53 -03 2024(82)
Fri  5 Jan 00:11:53 -03 2024(83)
Fri  5 Jan 00:11:53 -03 2024(84)
Fri  5 Jan 00:11:53 -03 2024(85)
Fri  5 Jan 00:11:53 -03 2024(86)
Fri  5 Jan 00:11:53 -03 2024(87)
Fri  5 Jan 00:11:53 -03 2024(88)
Fri  5 Jan 00:11:53 -03 2024(89)
Fri  5 Jan 00:11:54 -03 2024(90)
Fri  5 Jan 00:11:54 -03 2024(91)
Fri  5 Jan 00:11:54 -03 2024(92)
Fri  5 Jan 00:11:54 -03 2024(93)
Fri  5 Jan 00:11:54 -03 2024(94)
Fri  5 Jan 00:11:54 -03 2024(95)
Fri  5 Jan 00:11:54 -03 2024(96)
Fri  5 Jan 00:11:54 -03 2024(97)
Fri  5 Jan 00:11:54 -03 2024(98)
Fri  5 Jan 00:11:55 -03 2024(99)

答案1

sudo假设 Ubuntu 使用与Debian相同的默认设置,fqdn则默认情况下启用其标志。

手册sudoers(5)页表明启用此标志时可能会出现与 DNS 相关的问题:

请注意,当使用 DNS 进行主机名解析时,打开 fqdn 需要 sudoers 进行 DNS 查找,如果 DNS 停止工作(例如,如果计算机与网络断开连接),这会导致 sudo 无法使用。就像主机文件一样,您必须使用 DNS 知道的“规范”名称。也就是说,由于性能问题以及无法从 DNS 获取所有别名,您可能不会使用主机别名(CNAME 条目)。

该标志默认打开。

该标志允许在 sudoers 文件的定义和 sudoers 用户权限规范的主机名字段中fqdn使用完全限定的域名。Host_Alias但这也意味着sudo必须找出主机名的规范完全限定形式。如果未在 中列出/etc/hosts,则需要进行 DNS 查找。

假设您没有从 DHCP 服务器获取主机名,您可以将如下行添加到您的/etc/hosts

127.0.1.1     main-hostname.fully.qualified.domain main-hostname [any other forms here...]

或者,如果您在定义中不使用主机名sudoers(正如在单个独立系统中所期望的那样),您可能需要将此行添加到您的 sudoers 文件中:

Defaults !fqdn

禁用该fqdn选项。

相关内容