Najpierw wyjaśnijmy nieporozumienie ...
Szukam sposobu ograniczenia ... na który zdecyduję, aby ja, administrator, nie mogłem uzyskać dostępu ... i że nie mogę w żaden sposób nadpisać tego faktu, mimo że jestem administratorem ... który wymaga uprawnień administratora (oczywiście czegoś takiego nie może zrobić inaczej niż administrator) i czegoś nieodwracalnego.
Innymi słowy, czy możesz (jako administrator) zmodyfikować system operacyjny, aby zapobiec czynności, której inny administrator nie może obejść?
Nie. Cokolwiek jeden administrator może zrobić, inny może cofnąć.
Nie oznacza to, że nie można bardzo utrudnić „cofnięcia”. Oto krótki przepis z wykorzystaniem wbudowanej zapory ogniowej, pf
aby osiągnąć względnie dobrą część tego, co próbujesz osiągnąć.
Służy pf
do „wyłączania” Internetu
Mięso i ziemniaki, które blokują dostęp do Internetu pf
, sprawdzimy to tutaj.
Zablokuj dostęp do Internetu
Możesz zablokować cały dostęp do Internetu za pomocą naprawdę prostego zestawu reguł. Zakładając, że reguła pf jest ustawiona w pliku ~/pf/pf_block_all.conf
, po prostu ustaw następujące dwa wiersze:
block in all
block out all
Następnie możesz „zepsuć” Internet za pomocą prostej komendy, włączając pf
i określając niestandardowy zestaw reguł.
$ sudo pfctl -e -f ~/pf/pf_block_all.conf
Kiedy będziesz znów gotowy do korzystania z Internetu, po prostu wyłącz pf
$ sudo pfctl -d
(Śmiało, wypróbuj to, aby zobaczyć, jak blokuje Internet).
Uruchamianie launchd
plist
Chciałbyś uruchomić to jako LaunchDaemon, ponieważ wtedy wykona się jako root
i nie będziesz potrzebować sudo
funkcji do uruchomienia. Będziesz potrzebował dwóch listewek uruchamianych w określonych odstępach czasu; jeden do włączenia, a drugi do wyłączenia pf
. W tym poście szczegółowo opisano, jak to osiągnąć.
Blokowanie dostępu do pfctl
Aby usunąć możliwość pisania sudo pfctl ....
, będziesz musiał usunąć (cóż, przynajmniej utrudnić) pozwolenie na wykonanie. W /etc/sudoers
pliku można wykluczyć program z następującym wpisem:
Tim ALL = ALL, !/sbin/pfctl
Uniemożliwi to wykonanie pfctl
, ale istnieją obejścia tego problemu. Zobacz link powyżej.