2012-02-15 73 views
0

我正在编写一个命令行工具。在那里我想在/ Users/user_name/Library目录中创建一个目录。当我从终端以root身份运行该程序时,一切正常,但问题是当我想将该工具用作杯子的后端时(该程序被称为,也称为root,当我打印某些内容时)。该程序被调用,但在system.log文件中,我找到了错误:sandboxd:deny file-write- *。我是一名新的Mac OS X程序员,我不知道如何解决这个问题。任何人都可以帮助我?Mac OS X应用程序沙箱问题

回答

0

由于Snow Leopard cups正在沙箱中运行,以防止其行为异常 - 如访问用户的家。根据您的OS X版本,您可以使用另一个目录而不是用户的家。在狮子会上,它比这更严格。 sandboxing规则是内置于cups二进制文件(而不是sb脚本)的,所以你唯一的运气可能是用一个专门允许访问你在沙盒中需要的版本替换cup(如果你真的想去那里,该规则由cupsdCreateProfilecups/scheduler/process.c中定义)。 AFAICT在你的应用程序中没有任何东西可以做,因为沙箱设计是为了防止你正在做的事情。

另一种替代方法是不以root身份运行杯子,因为只有当杯子以root身份运行时才会使用沙盒。

+0

你甚至不能写入你自己的.app包! – Vassilis 2012-06-05 19:53:51