gpt4 book ai didi

macos - 如何以 root 身份启动 NSTask,现代方法?

转载 作者:行者123 更新时间:2023-12-03 17:47:48 24 4
gpt4 key购买 nike

伙计们。

我需要一些帮助来弄清楚如何为我的程序授予一些权限。我正在编写一个小实用程序来包装在 GUI openVPN 中。它实际上只是我作为 NSTask 启动的 bash 脚本:sudo openvpn --config clientUDP.conf。在互联网上搜索了几个小时后,我认为我应该使用授权服务任务并编写一个 PrivilegedHelper。伙计们,这对我来说相当尴尬(基本上我是 iOs 开发人员,这是我第一次尝试迷你 mac os 应用程序)。

我的问题是 - 是否有任何现代教程可以弄清楚如何编写 PrivilegedHelper(以 swift 或 objc 形式)来启动具有 root 权限的 NSTask?

附注我已经下载了 SMJobBless 示例并启动了它。但我没有在其中找到任何类型的进程间通信,并且我不知道如何以 root 身份启动我的进程。

我真的需要您的建议并依赖您的经验。

最佳答案

在应用程序“生命周期”的某个时刻,您需要获得管理员用户的授权。您可以将 openvpn 命令打包为安装在/Library/LaunchDaemons 中的 launchd 作业,这需要管理员授权才能安装。查看 launchd.plist(5) 然后创建一个 plist,开头如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.startopenvpn</string>
<key>Program</key>
<string>/path/to/openvpn</string>
<key>ProgramArguments</key>
<array>
<string>--config</string>
<string>clientUDP.conf</string>
</array>
</dict>
</plist>

您将需要添加启动触发器(mach 消息或其他触发器)来启 Action 业。更多信息请访问Daemons and Services Guide

您可以使用授权 API 并设置 GUI 以在运行时从管理员那里获取授权。没有使用过这种方法,所以我没有任何直接的建议。 Authorization Guide

关于macos - 如何以 root 身份启动 NSTask,现代方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44834251/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com