![如何控制由 launchd 管理的套接字的文件所有权](https://linux22.com/image/636068/%E5%A6%82%E4%BD%95%E6%8E%A7%E5%88%B6%E7%94%B1%20launchd%20%E7%AE%A1%E7%90%86%E7%9A%84%E5%A5%97%E6%8E%A5%E5%AD%97%E7%9A%84%E6%96%87%E4%BB%B6%E6%89%80%E6%9C%89%E6%9D%83.png)
我正在编写一个守护进程,它可以通过 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 如果守护进程以专用用户身份运行,则所有文件描述符和套接字都将归该用户所有。然后只需向这些描述符添加限制访问权限即可。