Lingon 3. Бесполезная утилита после перехода в Mac App Store
Консоль - вещь хорошая, но не все чувствуют в ней себя уверенно. Пару дней назад меня в очередной раз спросили, как же настроить монтирование SSD-диска с опцией noatime без применения консоли.
Я раньше привычно рекомендовал Lingon для создания задания, запускающегося при старте системы из LaunchDaemons под root’ом.
Но дань моде и похвальное желание заработать на своём труде заставили разработчика портировать утилиту в Mac App Store. Lingon 3 доступен за $2.99.
Оказывается, что в LaunchDaemons задание записать невозможно из-за ограничений на приложения Mac App Store. Выдаётся ошибка:
Разработчик на странице своей программы не предупреждает о таком урезании функционала, делающим программу практически бесполезной по крайней мере для моей задачи.
Системные демоны и LaunchDaemons
LaunchDaemons — это фоновые процессы в macOS, запускаемые системой при старте компьютера до входа пользователя. Они описываются XML-файлами (plist) в директории /System/Library/LaunchDaemons или /Library/LaunchDaemons и выполняются от имени root. В отличие от пользовательских агентов (LaunchAgents), демоны не привязаны к сессии конкретного пользователя и работают даже при пустом экране входа.
Права root необходимы демонам для операций, затрагивающих системные ресурсы: монтирования дисков с особыми флагами, изменения прав доступа, запуска низкоуровневых служб. Запись plist-файла в /Library/LaunchDaemons требует административных привилегий и не может быть выполнена из приложения, работающего в изолированной среде (sandbox).
Правила Mac App Store требуют обязательной «песочницы» для всех публикуемых приложений. Sandbox-ограничения запрещают прямой доступ к системным директориям, включая /Library/LaunchDaemons и /System/Library/LaunchDaemons. Приложение, распространяемое через магазин, физически не способно создать или изменить файл в этих каталогах — попытка записи блокируется на уровне ядра, что и приводит к ошибке.
Утилиты для управления демонами, существовавшие до введения обязательной «песочницы» (например, Lingon 2), распространялись вне магазина и таких ограничений не имели. После перехода в Mac App Store функциональность записи системных заданий становится недоступной, а программа сохраняет лишь возможность редактировать пользовательские агенты в ~/Library/LaunchAgents, не требующие прав root.
