如何控制由 launchd 管理的套接字的文件所有权

如何控制由 launchd 管理的套接字的文件所有权

我正在编写一个守护进程,它可以通过 UNIX 套接字与同一项目中的其他守护进程通信。出于安全考虑,这些守护进程只能在它们之间通信(例如,不能被其他进程连接),这一点至关重要。

我原本计划通过标准 UNIX 文件所有权和模式来限制此访问。但我在 launchd.plist 文档中找不到有关如何控制这些的任何地方!

查看现有服务,您可以指定一个SockPathMode采用十进制模式的密钥;很棒。但是我如何指定所创建套接字的实际用户和组?我注意到,我的系统上由 launchd 管理的某些套接字归 拥有root:daemon,某些归 拥有root:wheel,还有一些(例如 ssh-agent)归 拥有stouset:wheel。但我无论如何也无法确定这些所有权是如何以及在何处指定的。

答案1

以下是与此相关的问题:https://stackoverflow.com/questions/7984657/run-daemon-as-another-user-on-mac-os-x 如果守护进程以专用用户身份运行,则所有文件描述符和套接字都将归该用户所有。然后只需向这些描述符添加限制访问权限即可。

相关内容