以root身份使用NSHomeDirectory

时间:2014-02-13 18:19:59

标签: cocoa directory home-directory

使用NSHomeDirectory发生一个奇怪的问题,

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

由于标准用户homeDirectory/User/Paul,但当应用以root身份运行时,homeDirectory的值现在为/var/root

这是一个错误,还是当用户是root用户时它被认为是正常的? 如何始终找到最初启动我的应用程序然后获取root权限的“标准用户”的主文件夹的位置?

2 个答案:

答案 0 :(得分:0)

似乎root用户的主目录确实在OSX上设置为/ var / root。

在linux上它通常是/ root /

如果应用程序是通过sudo以root身份运行的话,我猜你可以获取环境变量$ SUDO_USER的值,并使用它来派生主目录。

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

请记住,应用程序在以root用户身份运行时创建的文件默认情况下将由root用户拥有。

此外,也许您想要考虑为什么您甚至首先以root身份运行此应用程序。也许有更好的方法来做到这一点。

答案 1 :(得分:0)

您所看到的是因为以root身份运行时,您实际上是在切换活动用户。 权利与(之前和之前)包括Belongings(在这种情况下是目录/文件)!