Есть ли способ заблокировать список определенных приложений в macOS?
Я искал такие решения, как Cisdem, но в его работе есть некоторые дыры, которые мне не нравятся.
Я хочу заблокировать запуск или даже установку приложения на моем Mac. Приложение можно установить через App Store и Интернет. Не уверен, как это сделать. Включение родительского контроля не будет работать, так как необходимы права администратора.
Конкретное приложение, которое я хочу заблокировать, — это Apple Configurator.
Есть идеи?
Вы можете использовать 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
быть другим пользователем (например, оператором), либо создать белый список разрешенных команд, по умолчанию блокирующих все остальное. Однако это отнимает много времени и довольно опасно, поскольку вы можете заблокировать людей от критических функций.
изготовление палаток
bmike
Аллан
БСК
Ученик