Widziałem tutaj kilka pytań, w których ludzie przypadkowo robią rm -rf --no-preserve-root
lub rm -rf *
usuwają większość lub całość swojego systemu plików, zanim będą mogli zareagować.
Czy kiedykolwiek istnieje powód do korzystania --no-preserve-root
, zarówno podczas normalnego użytkowania, jako programisty lub administratora?
/
, ale »przypadek ogólny« jest nadal reprezentowany. Innymi słowy: »Powiedzenie mi, co mam robić, nie jest zadaniem mojego komputera.« I nie powinno tak być.Odpowiedzi:
WAŻNE: Nowoczesne systemy UEFI montują oprogramowanie układowe w
/sys
katalogu i udostępniają je systemowi operacyjnemu. NIE uruchamiaj tego polecenia na nowoczesnym systemie, ponieważ spowoduje to usunięcie tego oprogramowania układowego, co zasadniczo powoduje uszkodzenie komputera.Najprostszym scenariuszem, jaki mogę wymyślić, jest ktoś, kto chce usunąć wszystkie dane z dysku. Mogą istnieć całkowicie uzasadnione powody, aby to zrobić, a najprostszym sposobem, jaki mogę wymyślić, jest
Okazuje się, że ten jest podany jako przykład w
info rm
:Innym doskonałym powodem jest to, że chcesz usunąć zamontowany system plików, do którego się
chroot
zalogowałeś. W takim przypadkurm -rf --no-preserve-root /
usunie system wchroot
środowisku, ale pozostawi nienaruszony.Jestem pewien, że istnieje więcej możliwych powodów, ale ogólnie wydaje się bardzo rozsądnym podejściem, że mój system pozwala mi robić z nim wszystko, co chcę. Moim zadaniem jest być ostrożnym, system powinien umożliwiać mi tylko robienie tego, co chcę. Jeśli to, co chcę, jest głupie, to mój problem, a nie system operacyjny.
W każdym razie jest to stosunkowo nowe ograniczenie, zostało dodane w siódmej wersji specyfikacji POSIX ( poprzednia jest tutaj), zanim
rm -rf /
było to całkowicie poprawne polecenie. Z historycznego punktu widzenia,.
i..
katalogi były zawsze chronionerm
od 1979 roku, kiedy torm
po raz pierwszy nabył możliwość usuwania katalogów. Więcej na ten temat tutaj .źródło
/
.rm -rf /
pustego komputera może zostać na przykład wyczyszczone przez czyjeś połączenie NFS / CIFS / SSHFS.Istnienie
--no-preserve-root
przełącznika nie polega na dodaniu dodatkowej funkcjonalności, ale na zastąpieniu bardzo rozsądnego ograniczenia funkcjonalności. Ten przełącznik prawdopodobnie opiera się na filozofii, zgodnie z którą komputer powinien robić to, co mu powiedziano, a polecenia powinny być dostępne, aby wyrazić dowolne pożądane działanie. Ta zmiana jest wcześniejsza niż UEFI i na podstawie mojego doświadczenia mówię, że jest już przestarzała.We współczesnej praktyce bez tego przełącznika
rm
polecenie unika przypadkowego usunięcia katalogu głównego podczas korzystania z niezainicjowanej zmiennej lub zbłąkanego miejsca.Zabawny przypis: ochrona nie była jego intencją. Na blogu Sun Microsystems usunięcie
/
katalogu spowoduje domyślnie usunięcie bieżącego katalogu roboczego, co stanowi naruszenie szczególnej uwagi, którą już rozważono dla katalogów.
i..
. Dlatego komitet normalizacyjny zezwolił na ten wyjątek - nie w celu zapobiegania wypadkom. Ta zmiana została wprowadzona po raz pierwszy w wersji 36 systemu Solaris 10.http://archive.is/5lmc9
źródło
Być może nie jest to odpowiedź, której chce pierwotny pytający, ale istnieje przypadek użycia, który wymaga rekurencyjnego usunięcia wszystkich plików z katalogu głównego. Chociaż nie odbywa się to za pomocą
rm
polecenia, jest częścią procesu switch_root (8) podczas uruchamiania systemu Linux (niewbudowanego ).źródło