绑定/侦听OSX上的特权端口

时间:2013-07-31 02:20:52

标签: macos communication launchd unix-socket

我需要将“服务器类型”应用程序绑定到OS X 10.6及更高版本上的特权端口(< 1024)。该应用程序通常由没有root权限的用户执行。

通过阅读本网站上的许多帖子,我发现这个选项是最新,最安全的方式:

1)编写一个帮助应用程序来打开特权端口 2)使用SMJobBless“安装”帮助应用程序以启动 3)从主应用程序(通过IPC)调用帮助应用程序以检索打开的特权端口。

来自Apple documentation

  

因为launchd本身作为root用户运行,如果你唯一的原因   使用特权进程是在低编号端口上运行守护进程,   你可以让launchd代表你的守护进程打开那个端口并传递   你的守护进程的开放套接字,从而消除了你的需要   代码以root用户身份运行。

我没有运行守护进程只是一个用户应用程序,但适用相同的原则。

我有 找到code example for SMJobBless并阅读Nathan de Vries' blog。 (不能使用XPC - 在OSX 10.6上不可用)。

我很清楚SMJobBless / launchd编码。

我的问题: 请指出我的代码示例演示如何在另一个应用程序(即帮助程序)中打开一个端口并将端口句柄(CFSocketRef?)传递回主应用程序。也许有人可以指出我通过SMJobBless实现这个的代码示例。

非常感谢

0 个答案:

没有答案