天天看點

【SOLVED】Linux使用sudo到出現輸入密碼提示延遲時間長

使用任意發行版,如Fedora、Debian等,/etc/sudoers 包含的使用者執行 sudo 指令,到輸入密碼提示中間延遲時間過長。

檢視目前 hostname,如PS提示符有提示也可。順便看了下 <code>/etc/hosts</code>

【SOLVED】Linux使用sudo到出現輸入密碼提示延遲時間長

<code>sudo</code> 或 <code>root</code> 權限編輯 <code>/etc/hosts</code>,将你本機的 hostname 名稱追加到 localhost 後,儲存退出即可。

【SOLVED】Linux使用sudo到出現輸入密碼提示延遲時間長

至此,僅 sudo 卡而 su 不卡的問題解決。

sudo 指令執行時需要找到執行入口,預設是以hostname作為執行入口的位址。當 <code>/etc/hosts</code> 或 <code>/etc/resolv.conf</code> 中不含主機名映射時,就會等待直到逾時,時間可能有15~20秒之間。

出現這種情況有兩種可能:

安裝系統時變更了主機名

自行修改 <code>/etc/hosts</code> 去除了主機名映射

對于第一種情況,是安裝系統工具的bug,未将新 hostname 映射變更到 <code>/etc/hosts</code> 中;

對于第二種情況,多出現于重度潔癖Linux使用者,比如我。 😄 我是之前看着後邊好長一串,好像沒啥用,隻保留了 <code>localhost</code>,是以才出現這個問題的。

如果需要修改 hostname,推薦使用 <code>hostnamectl</code> 指令進行設定,指令設定完主機名時,會同步變更 <code>/etc/hosts</code> 的舊主機名為新主機名。

吐個槽,原來不隻是中文圈不求甚解,我出現這個問題時,查了好多論壇、部落格,都隻給出各種可能、猜測,以及直接給出類似 <code>我也不知道為什麼好使,但是我查了谷歌大家都說他好使,我也的确解決了</code> 這種答案……

最後根據其他關鍵字找到了真正的答案,即 <code>為什麼 sudo 需要使用網絡?</code>

【SOLVED】Linux使用sudo到出現輸入密碼提示延遲時間長

簡言之,sudo 隻是一個指令,支援通路别的主機執行 sudo 指令,即 IP 不能寫死為 <code>127.0.0.1</code> 。對于本地多網卡的情況,不容易找出目前的主機IP是多少(多網卡多IP),是以使用主機通路 lookback 網卡(網卡名為lo,IP為127.0.0.1)與目前主機溝通。如果沒設定這個映射,隻能等待DNS逾時,通路 127.0.0.1 保底。

我也是查了n多答案才到這裡……這該死的求知欲,洗洗睡……

引用:

https://stackoverflow.com/questions/22249688/linux-sudo-is-working-slow-after-changing-the-hostname

https://unix.stackexchange.com/questions/218145/why-does-sudo-need-the-loopback-interface

https://www.sudo.ws/repos/sudo/file/d8150a3fd577/interfaces.c