0

使用 NSHomeDirectory 会出现一个奇怪的问题,

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

作为标准用户homeDirectory/User/Paul但当应用程序以 root 身份运行时,值为homeDirectorynow /var/root

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

4

2 回答 2

0

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

于 2014-02-13T18:46:15.427 回答
0

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

在 linux 上,它通常是 /root/

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

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

请记住,应用程序在以 root 身份运行时创建的文件默认归用户 root 所有。

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

于 2014-02-13T18:38:13.713 回答