2

我正在逐步完成这个 Apple 教程以启用沙盒。我已经成功地完成了这些部分,创建了 Xcode 项目,启用了应用程序沙盒,创建了证书,指定了代码签名身份并确认了应用程序是沙盒的。

然后,当我尝试诊断故意违规时,控制台中没有像指南描述的那样出现任何内容。启用应用沙盒已勾选,但其下方没有任何内容(例如,允许传出连接)。权利文件表明沙盒已启用,该应用程序未显示 Apple 网站,活动监视器表示该应用程序已被沙盒化。

我正在使用Console.app,查看所有消息(如本教程的诊断应用程序沙盒违规部分中所述)。我希望看到来自 的消息sandboxd,但看不到与沙盒相关的任何内容。应用程序本身的行为与教程中描述的完全一样,在未沙盒时显示 Apple 网站,然后在沙盒时不显示。

我在 Mac OS 10.8.2、Xcode 4.5.1 上。我错过了什么?

4

1 回答 1

2

我在 10.9.2 和 Xcode 5.1 上也经历过这种情况,但我很确定这些天操作系统和 Xcode 版本无关紧要(如果你使用的是 10.5 的旧版本可能很重要)。在我的情况下,实际/var/log/system.log文件仍会显示sandboxd消息,但它们不会出现在“所有消息”查询中,因此我无法访问教程中谈到的“完整报告”按钮。

在我的特定机器上,我确实发现如果我以管理员用户身份登录(我的系统上有两个用户,普通用户和管理员/root 用户),我可以在“所有消息”中看到日志消息,这让我能够检查沙盒消息并发现它们是使用 UID=0 发送的。我不确定这是如何控制的(为什么它只影响我们,但其他人都很好?),但如果你不是 root,控制台显然不会在系统日志中显示发送给 / 由 root 发送的消息你自己。

这导致了一个 hacky 解决方案:以 root 身份启动您的控制台。

为此,在终端类型中:

sudo -b /Applications/Utilities/Console.app/Contents/MacOS/Console 

现在您应该能够使用该控制台查看所有消息。

--

在弄清楚这一点时,我确实走入了死胡同,试图弄清楚日志记录配置文件可能会如何伤害我。事实证明它们与我无关,但它们最终可能会帮助你:

调查发现这个帖子有人遇到了类似的问题,并且看起来原因正在过滤/etc/asl.conf/etc/syslog.conf

我还找到了 Apple 关于记录和过滤记录错误和警告的文档:消息被过滤

如果您在 /var/log/system.log 中看不到沙盒消息,您可能需要考虑弄乱 .conf 文件,但如果您可以在那里看到它们,那么您的问题可能与它们无关。就我而言,它们是一条死胡同,我花了几个小时沿着这条路线走下去,然后才偶然发现“以 root 身份启动”解决方案。

于 2014-03-15T02:47:29.643 回答