我需要启动具有 root 权限的应用程序,但该应用程序需要访问原始用户的配置文件......因此,仅使用 sudo 启动应用程序会导致应用程序启动不正确。
如何使用 root 权限启动应用程序,以便它仍然使用最初登录用户的配置文件。
这是 Mac OS X 10.10
答案1
应用程序通常读取环境变量指示的目录下的每个用户文件HOME
。
默认情况下, sudo 不会更改 的值HOME
,因此它仍然指向原始用户的主目录。有几个选项可以使 sudo 将其更改为目标用户的主目录,因此请确保它们都没有打开:
- 不要
always_set_home
在文件中设置该选项sudoers
。 - 如果您
env_reset
设置了选项,请将其包含HOME
在env_keep
列表中。 - 不要传递
-H
,-s
或-i
命令行选项。
要仅为一个命令设置选项sudoers
,请使用类似
Defaults !myapp env_keep+=HOME,!always_set_home
如果该HOME
变量被保留,但应用程序不在那里查找,则您需要找到一种特定于应用程序的方法来告诉它注意该HOME
变量,而不是在有效 UID 的主目录中查找。
请注意,要求应用程序以 root 身份运行但读取属于物理用户的文件的情况并不常见。也许这些文件应该位于系统配置目录中?