Mac OS X Snow Leopard:/var 上的权限更改导致 DNS 查找问题

Mac OS X Snow Leopard:/var 上的权限更改导致 DNS 查找问题

当我尝试解决一个问题(尝试使用 msmtp 发送邮件时出现“/var/log/msmtp.log:权限被拒绝”错误)时,我执行以下操作:

> chmod -R 770 /var

之后,我的机器就无法通过 cURL 解析域名了。(ping 也失败)但是,奇怪的是,我可以将域名输入 Safari 并毫无问题地访问任何网页……

我实际上不确定 chmod 命令是否是导致该问题的原因,但我怀疑是。

另外,如果我在 /var (或 /private/var)上运行 ls -l,似乎那里的任何子目录或文件都没有真正改变权限,但是有很多,所以我不能肯定地说......

顺便说一句,我通过在本地环境 (bash) 中设置 TMPDIR=/tmp 修复了原始错误 (msmtp.log 权限被拒绝)。现在错误消失了,但我收到此错误:

msmtp: cannot locate host domainname.org: nodename nor servname provided, or not known

关于如何让 DNS 重新运行,您有什么想法吗?

答案1

运行chmod -R 700 /var将使操作系统的许多重要部分无法由任何用户(除了 root 用户)访问。您可以使用权限修复来恢复:从安装 DVD 启动,选择主要语言,然后从实用程序菜单中选择磁盘实用程序;在磁盘实用程序中,从侧边栏中选择您的 HD,然后选择右侧的急救选项卡,然后修复磁盘权限。这可能无法将所有内容修复回应有的状态(它不知道所有文件的权限应该是什么),但它可能会将其恢复到您可以启动它的程度。

如果此后重新启动成功,我实际上会从启动的操作系统再次运行权限修复(它将使用与正在运行的操作系统匹配的磁盘实用程序版本,并且可能对权限应该是什么有更好的了解)。

答案2

更多信息...

经过一番检查,我发现这篇关于调试 mDNSResponder(处理 Snow Leopard 中 DNS 的守护进程)的有用帖子http://www.afp548.com/article.php?story=20100329090657793

不幸的是,我通过这种方式打开了 mDNSResponder 的调试:

> sudo killall -USR1 mDNSResponder

然后我打开了 syslog 的调试:

> sudo syslog -c mDNSResponder -d

此时,其他应用程序(例如应用程序监视器)将无法加载,并且系统运行速度会变得非常慢。

查看 system.log 文件后发现,mDNSResponder 确实存在问题,并且似乎 mDNSResponder 守护程序无法启动并不断循环,向 syslog 发送相同的错误消息。我会发布这些消息,但我再也无法访问 system.log 文件。(我曾尝试重新启动机器,但现在它似乎挂起了或需要 15 分钟以上才能重新启动)

重新启动之前,我尝试通过在 /etc/asl.conf 中添加此行来关闭来自 mDNSResponder 的 system.log 文件的消息:

[= Sender mDNSResponder] ignore

然后使用以下命令重新启动 syslog:

> sudo killall -HUP syslog

这似乎没有起作用,因为消息不断涌入......

我希望我的机器重新启动...它似乎在重新启动过程中挂起了。

对如何继续有什么想法吗?我似乎正在把自己挖进一个更深的洞里……

答案3

这最终是从备份重新安装。

在此之前,我确实从 Snow Leopard 安装 DVD 启动并从磁盘实用程序运行权限修复,但无济于事。(磁盘实用程序似乎没有发现 /var 或任何子目录的权限存在任何问题)重新启动导致相同的行为,即机器停留在启动窗口中。

感谢大家的回复!

相关内容