修改 macos /etc/hosts 需用 sudo nano 临时编辑;长期修改需关闭 sip 后 chmod/chown;恢复默认可手动输入三行或脚本写入,并刷新 dns 缓存确保生效。

如果您尝试修改 macOS 系统的 /etc/hosts 文件,但系统提示“权限被拒绝”或无法保存更改,则可能是由于该文件受系统完整性保护(SIP)限制或当前用户缺乏写入权限。以下是获取修改权限及重置恢复默认内容的具体操作步骤:
一、使用 sudo 权限临时编辑 hosts 文件
macOS 默认将 /etc/hosts 设为只读,普通用户无法直接写入。通过终端调用 sudo 可临时以 root 权限打开编辑器进行修改,该方法不改变文件所有权与权限位,仅绕过当前用户权限限制。
1、打开“访达”,按下 Command + 空格 调出 Spotlight,输入 Terminal 并回车启动终端。
2、在终端中输入以下命令并按回车:sudo nano /etc/hosts。
3、系统会提示输入当前管理员账户密码(输入时无可见字符,输完直接回车)。
4、在 nano 编辑器中进行所需修改,完成后按 Control + O 保存,再按 Control + X 退出。
二、手动修改文件权限与所有者
若需长期允许特定用户编辑 hosts 文件,可显式调整其权限位与所有者。此操作需关闭 SIP 才能对 /etc/hosts 设置可写权限,否则 chmod/chown 将失败。注意:修改后应尽快恢复原始权限以保障系统安全。
1、重启 Mac,在开机时立即长按 Command + R 进入恢复模式。
2、顶部菜单栏选择“实用工具” → “终端”,输入 csrutil disable 并回车,随后重启系统。
3、再次打开终端,执行:sudo chmod 644 /etc/hosts。
4、如需将文件归属改为当前用户,执行:sudo chown $USER:staff /etc/hosts。
5、完成编辑后,务必重新启用 SIP:重启进恢复模式,运行 csrutil enable。
三、恢复 hosts 文件默认内容
macOS 的 hosts 文件默认仅包含本地回环解析行,若误删或污染内容导致网络异常,可手动还原为原始状态。该操作无需关闭 SIP,且不影响系统安全性。
1、在终端中执行:sudo cp /etc/hosts /etc/hosts.backup,先备份当前文件。
2、执行:sudo tee /etc/hosts ,清空现有内容。
3、逐行输入默认内容(每行后按回车):127.0.0.1 localhost、::1 localhost、255.255.255.255 broadcasthost。
4、全部输入完毕后,按 Control + D 结束输入并保存。
四、通过脚本批量重置 hosts 并刷新 DNS 缓存
修改 hosts 后若未生效,常因系统缓存旧解析结果。结合重置文件与强制刷新 DNS 缓存,可确保新配置立即应用。此方法适用于已知 hosts 内容但需快速验证的场景。
1、在终端中运行以下命令一次性写入默认内容:echo -e "127.0.0.1 localhost\n::1 localhost\n255.255.255.255 broadcasthost" | sudo tee /etc/hosts。
2、执行:sudo dscacheutil -flushcache,清除 DNS 缓存。
3、再执行:sudo killall -HUP mDNSResponder,重启多播 DNS 响应服务。
4、验证是否生效:运行 ping -c 1 localhost,确认返回 127.0.0.1 或 ::1。










