Используйте 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
стать другим пользователем (то есть оператором), либо создать белый список разрешенных команд, по умолчанию блокирующий все остальное. Однако это отнимает много времени и довольно опасно, так как вы можете заблокировать людей от выполнения критических функций.