我逐步通过this Apple tutorial启用沙盒。我已成功完成各个部分,创建Xcode项目,启用应用程序沙箱,创建证书,指定代码签名身份并确认应用程序是沙盒。
当我尝试诊断故意违规时,控制台中没有任何内容出现,如指南所述。勾选启用应用程序沙盒,但其下面没有任何内容(例如,允许传出连接)。权利文件建议启用沙盒,应用程序不显示Apple网站,活动监视器显示应用程序已沙箱化。
我正在使用Console.app
,查看所有消息(如本教程中诊断应用程序沙箱违规部分所述)。我希望看到来自sandboxd
的邮件,但却看不到与沙盒相关的任何内容。应用程序本身的行为与教程中描述的完全相同,显示Apple网站未进行沙盒处理,然后在沙盒时不显示。
我在Mac OS 10.8.2,Xcode 4.5.1上。我错过了什么?
答案 0 :(得分:2)
我在使用Xcode 5.1的10.9.2上也遇到了这个问题,但是我很确定OS和Xcode版本现在是无关紧要的(如果你的版本只有10.5那么老了可能很重要)。在我的情况下,实际的/var/log/system.log
文件仍会显示sandboxd
条消息,但它们不会显示在“所有消息”查询中,因此我无法访问在教程中讨论了“完整报告”按钮。
在我的特定机器上,我确实发现如果我以管理员用户身份登录(我的系统上有两个用户,普通用户和管理员/ root用户),我可以在“所有消息”中看到日志消息,让我能够检查沙盒消息,并发现它们是以UID = 0发送的。我不确定这是如何控制的(为什么它只影响我们,但其他人都没问题?),但显然如果你不是root,控制台不会在系统日志中显示发送给/的root消息自己。
这导致了一个hacky解决方案:以root用户身份启动控制台。
为此,在终端类型中:
sudo -b /Applications/Utilities/Console.app/Contents/MacOS/Console
现在您应该能够使用该控制台查看所有消息。
-
在搞清楚这一点时,我确实走到了尽头,试图弄清楚日志配置文件可能会对我造成伤害。结果证明这对我来说无关紧要,但他们最终可能会帮助你:
调查发现this thread某人遇到类似问题,看起来原因是/etc/asl.conf
或/etc/syslog.conf
过滤了
我还发现了有关记录和过滤Logging Errors and Warnings: Messages are filtered
的Apple文档如果你在/var/log/system.log中看不到sandboxd消息,你可能需要考虑搞乱.conf文件,但如果你能在那里看到它们那么你的问题可能与它们无关。在我的情况下,他们是一个死胡同,我花了几个小时沿着这条路走下去,然后绊倒了“以root为根”的解决方案。