Użyj Strażnika, aby kontrolować dostęp do aplikacji
Za pomocą spctl
(Gatekeeper) można tworzyć listy zatwierdzonych i niezatwierdzonych aplikacji.
Załóżmy na przykład, że chcesz zezwolić Mailowi, ale zablokować Chrome.
sudo spctl --add --label "ApprovedApps" /Applications/Mail.app
sudo spctl --add --label "DeniedApps" /Applications/Chrome.app
Powyższe polecenie „oznaczy” pocztę i Chrome odpowiednio jako „Zatwierdzone” i „Odrzucone” (możesz użyć własnych deskryptorów).
Teraz, aby włączyć / wyłączyć aplikacje, wydajesz polecenia:
sudo spctl --enable --label "ApprovedApps"
sudo spctl --disable --label "DeniedApps"
Zaletą tego jest to, że aby dodać kolejną aplikację do jednej z list, wystarczy dodać odpowiednią etykietę:
sudo spctl --add --label "ApprovedApps" /Applications/Another.app
Dodatkowo możesz zabronić uruchamiania kodu z Mac App Store (znajduje się na spctl
stronie podręcznika - man spctl
).
spctl --disable --label "Mac App Store"
Zapobiegnie to pobraniu aplikacji ze sklepu App Store i zainstalowaniu / uruchomieniu jej.
Radzenie sobie z administratorami /sudoers
Jak stwierdzono w komentarzach, wszystko, co administrator może zrobić, inny administrator może cofnąć. Korzystanie spctl
wymaga roota, ale edycja pliku sudoers w celu ograniczenia dostępu do określonego polecenia może uniemożliwić innym użytkownikom / administratorom cofnięcie zmian.
Zobacz Jak uniemożliwić użytkownikom sudo uruchamianie określonych poleceń? szczegółowe informacje na temat konfigurowania „białej listy z wyjątkiem” w sudoers
pliku.
Na przykład, aby zezwolić użytkownikowi Samowi na dostęp do wszystkich poleceń oprócz tego spctl
, należy umieścić plik sudoers:
sam ALL = ALL, !/usr/sbin/spctl
Teraz jest to „szybki i brudny” sposób zapobiegania dostępowi, spctl
ale ostatecznie nie jest skuteczny, ponieważ jeśli inny administrator zrozumie twoją strategię, wszystko, co musi zrobić, to zmienić nazwę polecenia i mają dostęp.
Ze strony podręcznika sudoers
:
Ogólnie rzecz biorąc, jeśli użytkownik ma sudo ALL, nic nie stoi na przeszkodzie, aby stworzyć własny program, który daje mu powłokę główną (lub tworzenie własnej kopii powłoki) niezależnie od jakiegokolwiek `! ' elementy w specyfikacji użytkownika.
Aby naprawdę go zablokować, musisz albo zmusić drugiego użytkownika do su
bycia innym użytkownikiem (tj. Operatorem), albo utworzyć białą listę dozwolonych poleceń domyślnie blokujących wszystko inne. Jest to jednak czasochłonne i dość niebezpieczne, ponieważ można zablokować ludziom funkcje krytyczne.