统信uos修改/etc/hosts后需三步生效:一、编辑器保存时必须回车确认文件名,否则静默失败;二、执行sudo chmod 644 /etc/hosts修复权限为-rw-r--r--;三、重启服务sudo systemctl restart systemd-resolved,并用getent hosts和ping验证。

您在统信UOS中修改了/etc/hosts文件,但浏览器仍能访问被屏蔽的网站、ping命令返回公网IP、或sudo执行时持续报“无法解析主机”警告——这说明文件虽已编辑,但系统并未真正加载新规则,必须完成保存确认与服务刷新两个关键动作。
确认编辑器已真正保存修改
第一步:按Ctrl+O(nano)或:wq(vi)后,【必须回车确认文件名】,否则nano静默失败、vi因未写入而丢弃全部更改。
第二步:退出编辑器后,立即执行ls -l /etc/hosts,检查修改时间是否更新;若时间未变,说明保存未成功,需重进编辑器再操作一次。
第三步:用head -n 5 /etc/hosts快速查看前五行,确认您添加的127.0.0.1 domain.com行确实存在且无拼写错误。
修正文件权限确保系统读取
统信UOS的systemd-resolved服务仅读取权限为-rw-r--r--的hosts文件,其他权限(如-rw-------或-rwxr-xr-x)会导致整行规则被跳过。
执行sudo chmod 644 /etc/hosts强制修复权限,这一步不可省略,否则后续所有操作都无效。
运行ls -l /etc/hosts验证输出首字段为-rw-r--r--,且所属用户为root root。
重启DNS解析服务强制生效
方法一:执行sudo systemctl restart systemd-resolved,这是让新hosts规则立刻起效的唯一可靠方式。
方法二:若系统未启用systemd-resolved(极少数定制环境),改用sudo systemctl restart nscd,但需先确认nscd服务已安装并启用。
注意:仅修改文件不重启服务,缓存可能持续生效数分钟甚至更久,此时getent hosts domain.com仍会返回旧结果。
验证是否真正命中本地映射
第一步:运行getent hosts example.com(将example.com替换为您添加的任意域名),若输出为空或显示公网IP,说明hosts未被识别,需回退检查权限与格式。
第二步:若getent返回127.0.0.1或您指定的IP,再执行resolvectl query example.com,确认第一行显示Found in local /etc/hosts。
第三步:最后用ping -c 1 example.com验证——响应IP必须是127.0.0.1或0.0.0.0,且无ICMP reply延迟(表明连接被立即拒绝而非超时)。











