控制台未在 Apple 的快速启动中显示 Mac OS 应用沙箱违规
Posted
技术标签:
【中文标题】控制台未在 Apple 的快速启动中显示 Mac OS 应用沙箱违规【英文标题】:Console not showing Mac OS app sandbox violations in Apple's Quick Start 【发布时间】:2012-11-05 10:49:19 【问题描述】:我正在逐步通过 this Apple tutorial 启用沙盒。我已经成功完成了这些部分,创建了 Xcode 项目,启用了应用沙盒,创建了证书,指定了代码签名身份并确认了应用是沙盒。
当我尝试诊断故意违规时,控制台中没有显示任何内容,如指南所述。启用应用沙盒已勾选,但其下方没有任何内容(例如,允许传出连接)。权利文件表明已启用沙盒,该应用未显示 Apple 网站,并且 Activity Monitor 显示该应用已被沙盒。
我正在使用Console.app
,查看所有消息(如本教程的诊断应用沙盒违规部分所述)。我期待看到来自sandboxd
的消息,但看不到与沙盒相关的任何内容。应用程序本身的行为与教程中描述的完全一样,在未沙盒时显示 Apple 网站,然后在沙盒时不显示。
我使用的是 Mac OS 10.8.2、Xcode 4.5.1。我错过了什么?
【问题讨论】:
看起来您已经成功地将您的应用程序沙盒化,但您的问题是您看不到正在记录的错误。您能否提供更多关于您如何查找错误、您希望看到什么以及您实际看到(或未看到)的详细信息? 您好,感谢您的回复。我正在使用控制台(在 /Applications/Utilities 中)并查看所有消息(如本教程的“诊断应用程序沙盒违规”部分所述)。我期待看到来自沙盒的消息,但看不到与沙盒相关的任何内容。应用程序本身的行为与教程中描述的完全一样,在没有被沙盒化时显示苹果网站,然后在被沙盒化时不显示它。 感谢您提供的额外信息。我为您将其添加到您的问题中,因为它可能有助于向其他人寻求解决方案。不过,我个人没有答案。对不起。 【参考方案1】:我在 10.9.2 和 Xcode 5.1 上也遇到过这种情况,但我很确定这些天操作系统和 Xcode 版本无关紧要(如果你使用的是 10.5 之前的版本可能很重要)。在我的情况下,实际的/var/log/system.log
文件仍将显示sandboxd
消息,但它们不会出现在“All Messages”查询中,因此我无法访问“完整报告”按钮在教程中谈到。
在我的特定机器上,我确实发现如果我以管理员用户身份登录(我的系统上有两个用户,普通用户和管理员/root),我可以在“所有消息”中看到日志消息,其中让我能够检查沙盒消息并发现它们是使用 UID=0 发送的。我不确定这是如何控制的(为什么它只影响我们,但其他人都很好?),但显然如果你不是 root,控制台不会在系统日志中显示发送给 / 由 root 发送的消息自己。
这导致了一个 hacky 解决方案:以 root 身份启动您的控制台。
为此,在终端类型中:
sudo -b /Applications/Utilities/Console.app/Contents/MacOS/Console
现在您应该可以使用该控制台查看所有消息了。
--
在弄清楚这一点时,我确实走入了死胡同,试图弄清楚日志记录配置文件可能会如何伤害我。结果证明它们与我无关,但它们最终可能会帮助你:
调查发现this thread 有人遇到了类似的问题,并且看起来原因是在/etc/asl.conf
或/etc/syslog.conf
中过滤
我还找到了 Apple 关于日志记录和过滤的文档 Logging Errors and Warnings: Messages are filtered
如果您在 /var/log/system.log 中看不到沙盒消息,您可能需要考虑弄乱 .conf 文件,但如果您可以在那里看到它们,那么您的问题可能与它们无关.就我而言,它们是一条死胡同,我花了几个小时沿着这条路线走下去,然后才发现“以 root 身份启动”解决方案。
【讨论】:
以上是关于控制台未在 Apple 的快速启动中显示 Mac OS 应用沙箱违规的主要内容,如果未能解决你的问题,请参考以下文章
Worklight CLI 未在 mac 中启动 Giving Error