我有一个以root身份运行的应用程序(守护程序内部/ Library/StartupItems是精确的),偶尔会启动另一个进程使用system("open /Applications/MyAppName.app")
。这可以正常工作,只是在某些计算机上,MyAppName以root用户身份启动,而不是在当前用户下运行。调用系统(“open <app name.app>”)有时会导致应用程序以根用户身份启动
我想弄清楚为什么这样,以及如何让应用程序始终以当前用户身份启动。
这个问题似乎发生在运行Open/Active目录的某些组合的企业站点上。我对这些机器的访问有限,所以我试图在我要求更多时间之前至少形成一些假设。
我有一个其他线索是,如果您打开活动监视器并检查“Finder”过程中的至少一台计算机上,“用户:”部分显示用户名,但没有用户ID(“ UID)“部分完全丢失)。
而且,像大多数标准应用程序一样,父进程显示为“launchd (1)
”而非“launchd (95)
”。我相信这个launchd实例是在计算机启动并以root用户运行时第一个启动的运行,与以登录用户身份运行的其他launchd实例相比较。
除了显而易见的安全问题之外,我还需要应用程序不以root身份运行,以便它支持诸如为两个同时登录的用户开放/可见的内容。
有没有人有什么想法可能会导致这个或我可能会如何解决它?
谢谢,这是相当多的帮助。我已经切换到为我的第二个应用程序使用用户代理守护进程。 – 2009-07-07 23:27:09