Блокировать определенные приложения в macOS

Есть ли способ заблокировать список определенных приложений в macOS?

Я искал такие решения, как Cisdem, но в его работе есть некоторые дыры, которые мне не нравятся.

  1. Если вы также не заблокируете Монитор активности, Терминал и Системные настройки, вы можете просто выйти из процесса Cisdem или создать нового пользователя, чтобы обойти его.
  2. Вы должны заблокировать Монитор активности, Терминал и Системные настройки, чтобы он работал правильно.

Я хочу заблокировать запуск или даже установку приложения на моем Mac. Приложение можно установить через App Store и Интернет. Не уверен, как это сделать. Включение родительского контроля не будет работать, так как необходимы права администратора.

Конкретное приложение, которое я хочу заблокировать, — это Apple Configurator.

Есть идеи?

Ответы (1)

Используйте Gatekeeper для управления доступом к приложениям

Вы можете использовать spctl(Gatekeeper) для создания списков утвержденных и неутвержденных приложений.

Например, предположим, что вы хотите разрешить Mail, но заблокировать Chrome.

sudo spctl --add --label "ApprovedApps" /Applications/Mail.app 
sudo spctl --add --label "DeniedApps" /Applications/Chrome.app

Приведенная выше команда будет «помечать» Mail и Chrome как «Одобрено» и «Отклонено» соответственно (вы можете использовать свои собственные дескрипторы).

Теперь, чтобы включить/отключить приложения, вы вводите команды:

sudo spctl --enable --label "ApprovedApps" 
sudo spctl --disable --label "DeniedApps" 

Преимущество этого заключается в том, что для добавления другого приложения в любой список вам просто нужно добавить соответствующую метку:

sudo spctl --add --label "ApprovedApps" /Applications/Another.app

Кроме того, вы можете запретить запуск кода из Mac App Store (находится на spctlсправочной странице — man spctl).

spctl --disable --label "Mac App Store"

Это не позволит никому загрузить приложение из магазина приложений и установить/запустить его.

Работа с админами/sudoers

Как указано в комментариях, все, что может сделать администратор, может отменить другой администратор. Для использования spctlтребуется root, но редактирование файла sudoers для ограничения доступа к определенной команде может помешать другим пользователям/администраторам отменить ваши изменения.

См. Как запретить пользователям sudo выполнять определенные команды? для получения подробной информации о том, как настроить «белый список с исключением» в вашем sudoersфайле.

Например, чтобы предоставить пользователю Sam доступ ко всем командам , кроме spctl , в файл sudoers нужно добавить:

sam ALL = ALL, !/usr/sbin/spctl

Теперь это «быстрый и грязный» способ предотвращения доступа, spctlно в конечном итоге он неэффективен, потому что, если другой администратор поймет вашу стратегию, все, что ему / ей нужно сделать, это переименовать команду, и они получат доступ.

Со sudoersстраницы руководства:

В общем, если у пользователя есть sudo ALL, ничто не мешает ему создать свою собственную программу, которая дает ему корневую оболочку (или сделать свою собственную копию оболочки) независимо от любого `!' элементы пользовательской спецификации.

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

Красивый! Это именно то, что я искал. Отличная работа. Большое спасибо!
Действительно потрясающий ответ, Аллан - я не думаю, что это позволит предотвратить доступ к файлам или прекратить отправку сигнала sigkill - не так ли? apple.stackexchange.com/questions/332124/…
@bmike - Только что увидел этот комментарий. Спасибо за добрые слова. Что касается sigkill, я не думаю, что вы могли бы предотвратить это, потому что технически вы можете убить свои собственные процессы.
Все это звучит здорово, но у меня это просто не работает (на 10.14.3). Изменения применяются, но я по-прежнему могу запускать приложения, которые я «запретил». Привратник включен.
У меня тоже не работает (на 10.14.1).