Jak zapobiec „sudo rm -rf /”

10

Kilka razy przypadkowo wykonałem polecenie sudo rm -rf /.

Czy istnieje sposób, aby uniemożliwić mi uruchomienie tego polecenia? Na przykład czy mogę jakoś wyłączyć go za pomocą pliku sudoers?

iProgram
źródło
2
Jak przypadkowo wpisać to polecenie, a następnie je wykonać?
fnord_ix
Jeśli wpisuję takie polecenie. sudo rm -rf / Applications/chess.appZwróć uwagę na odstęp między / a A. Tak właśnie jest
iProgram

Odpowiedzi:

14

Możesz dodać linię jak

%admin ALL = !/bin/rm -rf /

do sudoerspliku, aby uniemożliwić wykonanie polecenia z określonymi opcjami.

Lub jeśli chcesz wykluczyć kilka poleceń, możesz pracować z aliasami poleceń

Cmnd_Alias DANGEROUS_CMNDS=/bin/rm -rf /, /bin/rm -fr /
%admin ALL=!DANGEROUS_CMNDS

Możesz także spróbować zagrać w nią bezpiecznie, używając

Cmnd_Alias DANGEROUS_CMNDS=/bin/rm -rf /, /bin/rm -fr /, /bin/rm / *, /bin/rm * /, /bin/rm -rf / *, /bin/rm -rf * /, /bin/rm -fr / *, /bin/rm -fr* /
%admin ALL=!DANGEROUS_CMNDS

ale nadal mogą istnieć inne sposoby strzelania sobie w stopę, rmwięc i tak bądź ostrożny .

Należy jednak pamiętać, że całe dopasowanie odbywa się na pełnym ciągu polecenia, więc sudo rm -rf /Volumesnadal będzie działać (tak jak cd /; sudo rm -rf .).

PS: Jak najbardziej, użyj sudo visudodo edycji sudoerspliku i NIGDY nie edytuj go bezpośrednio

PPS: Oczywiście nie testowałem tego rm(tylko z /bin/echozamiast)

nohillside
źródło
Komentarze nie są przeznaczone do rozszerzonej dyskusji; ta rozmowa została przeniesiona do czatu .
bmike
6

Wiem, że sformułowałeś pytanie w sposób, który sprawia, że ​​podejrzewam, że nie chcesz słyszeć tej odpowiedzi, ale naprawdę powinieneś usunąć się z pliku sudoers, jeśli masz skłonność do powtarzania tego samego błędu w kółko.

Podstawowym problemem jest to, że nie masz aliasu, rmaby przenieść się do kosza (to jest sposób, w jaki go używasz obecnie i w przeszłości) lub w inny sposób zmuszony rm -rdo zmuszenia dorm -ri

alias rm='/bin/rm -i'

Zawsze możesz ominąć alias, command rm -rf whatevergdy po wytrenowaniu umysłu, kiedy mierzysz dwa razy, wytnij raz jest potrzebny do rm -rfużycia.

bmike
źródło
Dzięki za tę wskazówkę. Zastanawiałem się nad utworzeniem ukrytego konta administratora (aby uzyskać dostęp tylko do terminala) i konta standardowego do zwykłego użytku. Mógłbym też zmusić opakowanie do przeniesienia do kosza. Dzięki za tę wskazówkę. Myślę, że zapobieganie sudo może być bezpieczniejszym krokiem. Nadal upewnię się, że mogę uzyskać do niego dostęp, logując się do ukrytego administratora.
iProgram
Nie oznaczono, że jest tak jak odpowiedź, ponieważ nie odpowiada na powyższe. To jednak wciąż dobra rada
iProgram