OSX为什么我的启动过程以root用户而不是当前用户开始

时间:2015-06-23 11:42:41

标签: macos launch-agent

我想以当前用户身份运行该流程。但它从根本上开始。如何以当前用户身份启动流程?

此脚本在OSX包中的postinstall中运行。使用pkgbuild打包。

我是如何在Xcode中构建命令行工具的?

    public static Bitmap getBitmapFromParseImage(ParseFile image, int width , int height) {
    try {

            byte[] file = image.getData();
            InputStream inputStream = new ByteArrayInputStream(file);
            Bitmap image1 = CompressBitmap
                    .decodeSampledBitmapFromResourceMemOpt(inputStream, width,
                            height);
            return image1; 

        } catch (Exception e) {
            e.printStackTrace();
        }
     return null;
    }

2 个答案:

答案 0 :(得分:3)

您正在将Launch Agent plist添加到系统级启动代理目录,它将仅启动App root root / admin权限。您需要将启动器放置在USER Level Launch Agents目录中, USER_HOME / Library / LaunchAgents / ,例如: / Users / mani / Library / LaunchAgents /

此外,如果您要将应用程序作为当前用户运行,则日志路径无效,因为当前用户无权在 / var / log 中写入日志。所以你还需要更改日志目录。

也可以作为当前用户从launchctl加载和卸载,而不是以admin / root用户身份加载。

https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html

答案 1 :(得分:1)

因为你把你的* plist放在了LaunhDaemons中。 LaunchDeamon中的所有* .plist都将在ROOT中运行。 您需要将* .plist放在LaunchAgent中。它可以是/ Library / LaunchAgents或System / Library / LaunchAgents