2014-02-13 56 views
0

A怪問題發生使用NSHomeDirectory,使用NSHomeDirectory作爲根

NSString *homeDirectory = NSHomeDirectory(); 
NSLog(@"homeDirectory is: %@",homeDirectory); 

作爲標準用戶homeDirectory/User/Paul,但是當將應用程序作爲運行根的homeDirectory的值現在爲/var/root

這是一個錯誤,或者當用戶是root用戶時它被認爲是正常的? 我如何總能找到最初啓動我的應用程序並獲得root權限的「標準用戶」的主文件夾的位置?

回答

0

看起來,根用戶的主目錄在OSX上確實設置爲/ var/root。

在Linux上通常是/根/

我想你可以把環境變量$ SUDO_USER的值,如果應用程序是通過sudo的root身份運行,並用它來獲得主目錄。

[[[NSProcessInfo processInfo] environment] objectForKey:@"SUDO_USER"] 

請記住,應用程序以root身份運行時創建的文件默認由用戶root擁有。

另外,也許你想考慮爲什麼你甚至以root身份運行這個應用程序。也許有更好的方法來做到這一點。

+0

感謝您的回覆。有問題的應用程序位於另一個應用程序的「插件」文件夾內。主應用程序使用帶有「管理員特權」的NSAppleScript調用其可執行文件。一切都好,但我發現這個問題。如果「我們」知道路徑,您認爲根可以總是找到(並且工作)在不同用戶的文件夾上嗎? – Mike97

+0

是的,但正如dabaus所說,並且正如我所說:默認情況下,新文件/目錄屬於root用戶 –

+0

Root是超級用戶,因此以root身份運行的應用程序應該可以訪問受unix文件權限保護的所有內容。 – Dabaus

0

你所看到的是因爲當以root身份運行時,你實際上在切換活動用戶。 權利&(以前和以前)包括物品(在這種情況下目錄/文件)!

+0

謝謝。 – Mike97