Використовуйте програму Gatekeeper для контролю доступу до програм
Ви можете використовувати spctl
(Gatekeeper) для створення списків схвалених та не схвалених програм.
Наприклад, припустимо, ви хочете дозволити Mail, але блокувати Chrome.
sudo spctl --add --label "ApprovedApps" /Applications/Mail.app
sudo spctl --add --label "DeniedApps" /Applications/Chrome.app
Вищенаведена команда буде "позначати" пошту та Chrome відповідно "затвердженими" та "відхиленими" відповідно (ви можете використовувати власні дескриптори).
Тепер, щоб увімкнути / вимкнути програми, ви видаєте команди:
sudo spctl --enable --label "ApprovedApps"
sudo spctl --disable --label "DeniedApps"
Перевага цього полягає в тому, що щоб додати ще одну програму до будь-якого списку, потрібно просто додати відповідну мітку:
sudo spctl --add --label "ApprovedApps" /Applications/Another.app
Крім того, ви можете заборонити запуск коду з магазину додатків Mac (знайдений на spctl
сторінці man - man spctl
).
spctl --disable --label "Mac App Store"
Це не дозволить будь-кому завантажувати додаток із магазину додатків та встановлювати / запускати його.
Робота з адміністраторами /sudoers
Як зазначено в коментарях, все, що може зробити адміністратор, інший адміністратор може скасувати. Використання spctl
вимагає root, але редагування файлу sudoers для обмеження доступу до певної команди може перешкодити іншим користувачам / адміністраторам скасувати зміни.
Див. Розділ Як запобігти користувачам sudo виконувати певні команди? для детальної інформації про те, як налаштувати "білий список із виключенням" у вашому sudoers
файлі.
Наприклад, щоб дозволити користувачеві Саму доступ до всіх команд, за винятком spctl
, ви введете у файл sudoers:
sam ALL = ALL, !/usr/sbin/spctl
Тепер це "швидкий і брудний" спосіб запобігання доступу, spctl
але, в кінцевому рахунку, він не ефективний, оскільки якщо інший адміністратор розумне до вашої стратегії, все, що він / вона повинен зробити, - це перейменувати команду, і вони мають доступ.
На sudoers
чоловіковій сторінці:
Взагалі, якщо користувач має sudo ВСЕ, нічого не заважає їм створити власну програму, яка дає їм кореневу оболонку (або зробити власну копію оболонки) незалежно від будь-якого `! ' елементи в специфікації користувача.
Щоб дійсно заблокувати його, вам потрібно буде або змусити іншого користувача, su
як іншого користувача (тобто оператора), або створити білий список дозволених команд, які дефолтом блокують все інше. Однак це забирає багато часу і є досить небезпечним, оскільки ви можете заблокувати людей поза критичними функціями.