我有一个应用程序(准确地说是 /Library/StartupItems 中的一个守护进程)以 root 身份运行,它偶尔会使用system("open /Applications/MyAppName.app")
. 这工作正常,除了在某些计算机上 MyAppName 以 root 身份启动,而不是在当前用户下运行。
我试图弄清楚为什么会这样,以及如何让应用程序始终以当前用户身份启动。
该问题似乎出现在运行某种 Open/Active Directory 组合的企业站点上。我对这些机器的访问有些有限,所以在我请求更多时间之前,我试图至少形成一些假设。
我的另一个线索是,如果您打开活动监视器并检查“Finder”进程,至少在其中一台计算机上,“用户:”部分显示用户名但没有用户 ID(“(UID)”部分完全不见了)。
此外,父进程显示为“ launchd (1)
”,而不是launchd (95)
像大多数标准应用程序那样显示为“”。与以登录用户身份运行的另一个 launchd 实例相比,我相信这个 launchd 实例是每次计算机启动并以 root 身份运行时首先启动的运行。
除了明显的安全问题外,我还需要应用程序不以 root 身份运行,以便它支持诸如对两个同时登录的用户开放/可见的功能。
有人对可能导致此问题的原因或我如何解决此问题有任何想法吗?