Это перевод статьи
Местами вольный. Оригинал можно найти тут
Блокировка (Lockdown Mode) — новый режим macOS Ventura и для многих макадминов будут интересны способы его обнаружить. Почему? Потому что блокировка сильно влияет на поведение системы и приложений и поэтому тем, кто занимается траблшутингом, хорошо бы знать ее особенности. Кроме того, судя по некоторым неоднозначным формулировкам от Apple, в этом режиме на устройство вообще нельзя установить профили, но на практике это не совсем так, поэтому давайте разбираться!
Обнаружение режима блокировки
На прошлой неделе я проверял всё: вывод команд ps
, nvram
, system_profiler
, kextstat
, launchctl
, sysdiagnose
, выдачи defaults read
и подобные. Повсюду я искал слова “lock”, “down” и “mode” и я наткнулся на настройки com.apple.Safari
по пути ~/Library/Containers/Safari
. Сафари в некоторых случаях пишет в этот домен настроек кнопку с лейблом LockdownModeToolbarIdentifier
, но при этом его тулбар должен быть не в дефолтных настройках и сам браузер должен быть запущен, иначе ничего не произойдёт. Так себе находка.
Затем одна сорока из чата MacAdmins принесла на хвосте верную зацепку, я написал о ней тут и сделал extension attribute для Jamf! Так вышло, что я пропустил значение, которое было прямо в начале выдачи defaults read
— всё это время она была в .GlobalPreferences
, а я просто не проверял разницу выдач с помощью diff
, хотя стоило бы! Это бы быстро указало на ключ с аббревиатурой LDM в имени: LDMGlobalEnabled
. Довольно забавно, что когда я искал этот ключ в Google, я нашел пять источников, но все были для iOS, вроде вот этого на форуме разработчиков Apple. В итоге, вот что нужно выполнить в консоли из-под текущего пользователя:
defaults read .GlobalPreferences.plist LDMGlobalEnabled 2>/dev/null
Результатом будет либо вообще отсутствие такого ключа, если режим блокировки никогда не активировался, либо 1, если режим активирован, либо 0, если нет. Что интересно, это настройка своя для каждого пользователя. Ей логичнее быть системной, раз уж она вызывает перезагрузку, но если выйти из системы и зайти под другим пользователем, то для него режим будет выключен. Наверное, в этом есть смысл, но я не очень понимаю какой.
Управление режимом блокировки
Меня совершенно обескуражил один факт: включить режим блокировки можно просто изменив переменную в .GlobalPreferences!
#выключить режим блокировки
defaults write .GlobalPreferences.plist LDMGlobalEnabled -bool false
#включить режим блокировки
defaults write .GlobalPreferences.plist LDMGlobalEnabled -bool true
Да, эта настройка не в защищенном SIP файле, как, например, TCC.db! Можно просто выполнить команду из-под текущего пользователя и сильно изменить то, как ведёт себя система. Вот некоторые моменты, которые я обнаружил после такого ручного включения:
Профили — даже без перезагрузки приложения Системных настроек попытка установить файл .mobileconfig провалится. Когда Apple говорила о том, что «будет нельзя устанавливать профили», они имели ввиду именно ручную установку профилей через дабл-клик по файлу профиля. Также, когда они говорили, что «устройство не может быть заэнроллено в MDM в режиме блокировки», они имели ввиду только запрет энролла устройства пользователем через браузер и скачивание MDM-профиля. Блокировка не ограничивает энролл через DEP. Его можно инициировать терминальной командой sudo profiles renew -type enrollment
. Несмотря на режим блокировки, устройство успешно заэнроллится в MDM, назначенный через Apple Business Manager. После энролла можно будет установить любые профили даже при активной блокировке.
Сообщения — также без перезагрузки мгновенно прекратится отправка и получение всех сообщений, с вложениями и без. Не знаю баг это или фича, потому что Apple упоминала только остановку отправки вложений, а не вообще всего. При этом не важно, есть ли отправитель в контактах или был ли контакт с пользователем ранее. Сообщения продолжат доставляться на другие устройства, которые не в режиме блокировки. Если блокировка снята, то сообщения могут быть доставлены, если отправлены недавно, но могут перемешаться. Например, при нормальных условиях устройство получит сообщения в порядке 1,2,3,4,5, в то время как после включения и выключения блокировки они могут прийти в порядке 1,2,5,3,4.
Facetime — тоже без перезагрузки мгновенно блокирует все звонки от всех, кому вы ранее не звонили с устройства под блокировкой. В отличие от Сообщений, будут показываться уведомления о блокировке вызовов.
Safari — необходима перезагрузка, в этом отличие от других «симптомов». Тем не менее, Сафари дает лучшие визуальные оповещения о то, что режим блокировки включен! На стартовой странице выводится сообщение «Lockdown ready». При переходе на вебсайт будет отображаться «Lockdown enabled» до тех пор, пока вы в настройках Сафари не отключите этот режим для конкретного сайта — тогда сообщение сменится на красную надпись “Lockdown off”.
Safari — еще один небольшой визуальный сигнал режима блокировки, который согласуется с предупреждением Apple “веб-шрифты могут не отображаться”, можно увидеть на странице самостоятельного энролла Jamf — при поиске пользователя для назначения на устройство вместо галочки будет отображатся квадрат. И, как уже упоминалось, после попытки скачать профиль и прохождения долгого пути через Системные настройки -> Конфиденциальность и безопасность -> Профили (небольшая UX-боль — когда-то этот путь можно было проделать всего лишь двойным кликом по профилю) и попытки установки вы потерпите фиаско!
Системные настройки — нужно перезагрузить их, чтобы в «Конфиденциальности и безопасности» отобразилось текущее состояние LDMGlobalEnabled
. Если режим был выключен вручную, то после перезагрузки Системных настроек они позволят снова включить режим блокировки с перезагрузкой и всем таким.
В итоге
Я не пробовал тестировать поведение при блокировке для таких вещей, как «Дом» или общие альбомы в «Фото». Тем не менее, довольно интересно, что несмотря на предложение перезагрузки всей системы при активации режима локдауна из GUI, этот режим касается только одного пользователя и вообще может быть активирован и деактивирован через терминал с помощью defaults
. Он даже не требует перезагрузки некоторых приложений, не считая Safari и Системных настроек! Возможно есть еще какие-то детали, но их сложно предугадать. Возможно, это работает «так как должно» с точки зрения Apple, но когда ты не знаешь, как это должно работать, тебя может ждать много сюрпризов!