2012-02-15 63 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