Use o Gatekeeper para controlar o acesso aos aplicativos
Você pode usar spctl
(Gatekeeper) para criar listas de aplicativos aprovados e não aprovados.
Por exemplo, suponha que você queira permitir o Mail, mas bloqueie o Chrome.
sudo spctl --add --label "ApprovedApps" /Applications/Mail.app
sudo spctl --add --label "DeniedApps" /Applications/Chrome.app
O comando acima "rotulará" o Mail e o Chrome como "Aprovado" e "Negado", respectivamente (você pode usar seus próprios descritores).
Agora, para ativar / desativar aplicativos, você emite os comandos:
sudo spctl --enable --label "ApprovedApps"
sudo spctl --disable --label "DeniedApps"
A vantagem disso é que, para adicionar outro aplicativo a qualquer uma das listas, basta adicionar o rótulo apropriado:
sudo spctl --add --label "ApprovedApps" /Applications/Another.app
Além disso, você pode proibir a execução de código da Mac App Store (encontrado na spctl
página do manual - man spctl
).
spctl --disable --label "Mac App Store"
Isso impedirá que alguém baixe um aplicativo da App Store e o instale / execute.
Lidando com administradores /sudoers
Conforme declarado nos comentários, qualquer coisa que um administrador possa fazer, outro administrador poderá desfazer. O uso spctl
requer raiz, mas editar o arquivo sudoers para restringir o acesso a um comando específico pode impedir que outros usuários / administradores desfizam suas alterações.
Consulte Como impedir que usuários do sudo executem comandos específicos? para obter detalhes sobre como configurar uma "lista de permissões com exceção" em seu sudoers
arquivo.
Por exemplo, para permitir ao usuário Sam acessar todos os comandos , exceto spctl
, você deve colocar o arquivo sudoers:
sam ALL = ALL, !/usr/sbin/spctl
Agora, essa é uma maneira "rápida e suja" de impedir o acesso, spctl
mas, no final das contas, não é eficaz, porque se o outro administrador entender sua estratégia, tudo o que ele precisa fazer é renomear o comando e eles terão acesso.
Na sudoers
página do manual:
Em geral, se um usuário tiver sudo ALL, não há nada que os impeça de criar seu próprio programa que lhes dê um shell raiz (ou faça sua própria cópia de um shell) independentemente de qualquer `! ' elementos na especificação do usuário.
Para realmente travá-lo, você precisaria forçar o outro usuário su
como um usuário diferente (ou seja, operador) ou criar uma lista de permissões de comandos permitidos, com o objetivo de bloquear todo o resto. No entanto, isso consome tempo e é bastante perigoso, pois você pode bloquear as pessoas de funções críticas.