Назад | Перейти на главную страницу

Как вы контролируете владение файлом сокета, управляемого launchd

Я работаю над написанием демона, который общается с другими демонами в том же проекте через сокеты UNIX. В целях безопасности очень важно, чтобы эти демоны общались только между собой (и не могли, например, быть подключены к другим процессам).

Я планировал ограничить этот доступ через стандартные права собственности на файлы и режимы UNIX. Но я не могу найти нигде в документации launchd.plist о том, как ими управлять!

Глядя на существующие службы, вы можете указать SockPathMode ключ, принимающий десятичный режим; здорово. Но как мне указать фактического пользователя и группу созданного сокета? Я заметил, что некоторые сокеты, которыми управляет launchd в моей системе, принадлежат root:daemon, некоторые по root:wheel, а некоторые (например, ssh-agent) stouset:wheel. И все же я хоть убей не могу определить, как и где указаны эти владения.

Вот вопрос, связанный с этим: https://stackoverflow.com/questions/7984657/run-daemon-as-another-user-on-mac-os-x Если демон запускается как выделенный пользователь, то все файловые дескрипторы и сокеты будут принадлежать этому пользователю. Затем просто добавьте к этим дескрипторам ограничительные права доступа.