Поддержка Консалтинг Обучение Jamf Pro Блог

Что управляет моими приложениями?

Антон Конобеев 30.03.2023

Это перевод статьи

Местами вольный. Оригинал можно найти тут

Прошло много лет с тех пор, как OS X просто стартовала приложения, запускаемые пользователем. Сейчас каждое приложение проходит через через целый перечень менеджеров и сервисов, которые контролируют его доступ практически ко всему. Эта статья рассказывает о наиболее важных из них.

Launchd

Этого демона не было до Mac OS 10.4 Tiger, для которой его анонсировал Dave Zarzycki. С тех пор загрузка launchd — одна из первых задач ядра, его процесс получает id 1, и только затем он загружает все остальные процессы macOS; также он служит альтернативой стандартному Unix-шедулеру cron.

Несмотря на свою значимость в процессе загрузки, он довольно простой и создает всего несколько записей в логах.

LaunchServices

Для приложений, которые запускаются в GUI (таких как Finder или Dock, например), сервис LaunchServices (aka LS aka lsd aka launchservicesd — последние два являются демонами этого сервиса) это база. Это первый сервис, который коммуницирует с Finder (и наоборот) при запуске приложений. Он управляет списками и базами данных известных приложений, последних открытых файлов и некоторыми другими вещами — например, плагинами и расширениями внутри пакета приложения, которые сам же и обнаруживает.

В логах его можно найти по домену com.apple.launchservices а также по com.apple.appinstallation или MobileInstallation — эти двое отвечают за первый запуск новых приложений.

RunningBoard

Это относительно новый элемент ОС от Apple и он впервые появился в macOS 10.15 и iOS 13. Его логи, детально описывающие то, как он выдает разрешения и распоряжается ресурсами для приложений, можно найти в логах под доменом com.apple.runningboard. Говоря про ресурсы, имеются ввиду:

  • Память
  • Использование GPU
  • Использование CPU
  • Элементы жизненного цикла вроде приостановки и AppNap

Звучит грозно, но на самом деле в macOS довольно мало приложений, на которые RunningBoard действительно серьезно влияет — в основном это приложения, запускаемые с помощью Catalyst. Для остальных он преимущественно ведет логи потребления этих самых ресурсов. Подразумевается, что в будущем RunningBoard станет гораздо более важным элементом — таким, каким он является уже сейчас для iOS.

TCC

Transparency (прозрачность), Consent (согласие) и Control (контроль) — самая наглядная для обычного пользователя штука, защищающая приватность пользователей, ограничивая доступ как к чувствительной информации, вроде контактов или рабочего стола, так и к некоторым ресурсам компьютера, вроде микрофона и камеры. Настройки подобных разрешений любой пользователь может найти в своих системных настройках в меню «Конфиденциальность и безопасность». Прежде чем дать доступ к одному из контролируемых ресурсов, TCC проверяет наличие у приложения разрешения на доступ к нему, причем этот доступ наследуется от приложения-родителя. Например, приложения запущенные с помощью Терминала будут иметь те же разрешения, что и сам Терминал.

Подробные логи этой системы можно найти под доменом com.apple.TCC или по имени демона tccd. При этом логи довольно подробные — это последствия сильного усложнения TCC для macOS 10.14 Mojave. Сложность на тот момент повлекла за собой баги и прочие неприятности, что привлекло внимание исследователей в области безопасности — отсюда и такое количество записей в консоли.

CFPrefsd

Этот демон известен также как Defaults Server и он ответственен за управление файлами настроек приложений (.plist) и доступ к ним. Не все приложения его используют, некоторые из них хранят настройки самостоятельно, но поскольку менеджент настроек с помощью cfprefsd подразумевается фреймворком Core Foundation, с ним умеет работать большая часть софта. Вкратце — он синхронизирует настройки в ~/Library/Preferences с настройками в интерфейсе приложения, так что его корректная работа довольно важна для нормального функционирования программ.

Другие

Конечно же, это не исчерпывающий лист и есть довольно много других сервисов, используемых приложениями в работе, такими как Biome, AppKit и Stage Manager — загляните в логи, их там достаточно. Могу посоветовать отличный указатель Apple Internals за авторством Michael Roitzsch — если вы нашли что-то неизвестное, то отличной идеей будет обратиться к нему.

А если хотите узнать больше по этой теме – рекомендуем почитать книжку https://www.amazon.com/MacOS-iOS-Internals-User-Mode/dp/099105556X