Mac OS X app沙箱问题

时间:2012-02-15 16:16:49

标签: macos printing sandbox backend

我正在编写命令行工具。在那里,我想在/ Users / user_name / Library目录中创建一个目录。当我从终端以root身份运行该程序时,一切正常,但问题是当我想使用该工具作为cups的后端时(该程序被调用,当我打印一些东西时也称为root)。调用该程序,但是在system.log文件中我发现了错误:sandboxd:deny file-write- *。我是一个新的Mac OS X程序员,我不知道如何解决它。有人可以帮帮我吗?

1 个答案:

答案 0 :(得分:0)

由于Snow Leopard cups正在沙箱中运行,可防止其出现行为不端 - 例如访问用户的家。根据您的OS X版本,您可以使用另一个目录而不是用户的主页来逃避。在Lion上,它比那更具限制性。沙箱规则是内置于cups二进制文件(而不是sb脚本),所以你唯一的运气可能就是用一个专门允许访问沙盒中所需内容的版本替换cup(如果你真的想去那里,规则由cupsdCreateProfile中的cups/scheduler/process.c定义。 AFAICT在您的应用程序中无法做任何事情,因为沙盒旨在完全阻止您尝试执行的操作。

另一种方法是不以root身份运行cups,因为只有在以root身份运行cups时才使用沙盒。