使用NSHomeDirectory发生一个奇怪的问题,
NSString *homeDirectory = NSHomeDirectory();
NSLog(@"homeDirectory is: %@",homeDirectory);
由于标准用户homeDirectory
为/User/Paul
,但当应用以root身份运行时,homeDirectory
的值现在为/var/root
。
这是一个错误,还是当用户是root用户时它被认为是正常的? 如何始终找到最初启动我的应用程序然后获取root权限的“标准用户”的主文件夹的位置?
答案 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(在这种情况下是目录/文件)!