Usa Gatekeeper per controllare l'accesso alle Applicazioni
Puoi utilizzare spctl
(Gatekeeper) per creare elenchi di app approvate e non approvate.
Ad esempio, supponi di voler consentire Mail ma bloccare Chrome.
sudo spctl --add --label "ApprovedApps" /Applications/Mail.app
sudo spctl --add --label "DeniedApps" /Applications/Chrome.app
Il comando precedente "etichetterà" Mail e Chrome come "Approvato" e "Negato" rispettivamente (puoi usare i tuoi descrittori).
Ora, per abilitare / disabilitare app, emetti i comandi:
sudo spctl --enable --label "ApprovedApps"
sudo spctl --disable --label "DeniedApps"
Il vantaggio è che per aggiungere un'altra app ad entrambi gli elenchi, devi solo aggiungere l'etichetta appropriata:
sudo spctl --add --label "ApprovedApps" /Applications/Another.app
Inoltre, puoi vietare l'esecuzione del codice dal Mac App Store (trovato nella pagina man di spctl
- man spctl
).
spctl --disable --label "Mac App Store"
Ciò impedirà a chiunque di scaricare un'app dall'App store e installarla / eseguirla.
Gestione degli amministratori / sudoers
Come affermato nei commenti, tutto ciò che un amministratore può fare, un altro amministratore può annullare. L'utilizzo di spctl
richiede root, ma la modifica del file sudoers per restringere l'accesso a un particolare comando può impedire ad altri utenti / amministratori di annullare le modifiche.
Vedi Come impedire agli utenti sudo di eseguire comandi specifici? per i dettagli su come configurare una "lista bianca con eccezione" nel tuo file sudoers
.
Ad esempio, per consentire all'utente Sam di accedere a tutti i comandi tranne spctl
, inserirai il file sudoers:
sam ALL = ALL, !/usr/sbin/spctl
Ora, questo è un modo "veloce e sporco" di impedire l'accesso a spctl
ma alla fine, non è efficace perché se l'altro amministratore si accorge della tua strategia, tutto ciò che lui / lei deve fare è rinominare il comando e loro avere accesso.
Dalla pagina man di sudoers
:
In general, if a user has sudo ALL there is nothing to prevent them from creating their own program that gives
them a root shell (or making their own copy of a shell) regardless of any '!' elements in the user
specification.
Per bloccarlo davvero, è necessario forzare l'altro utente a su
come utente diverso (cioè operatore) o creare una whitelist di comandi consentiti che hanno il blocco predefinito di tutto il resto. Tuttavia, questo richiede molto tempo e molto pericoloso in quanto è possibile bloccare le persone fuori dalle funzioni critiche.