GNU/Linux >> Znalost Linux >  >> Linux

Existuje scénář, kde je potřeba rm -rf -no-preserve-root?

DŮLEŽITÉ: Moderní systémy UEFI připojují firmware pod /sys adresář a zpřístupněte jej OS. NESPUŠTĚJTE tento příkaz na moderním systému, protože odstraní tento firmware a v podstatě zničí váš počítač.

Nejjednodušší scénář, který mě napadá, je někdo, kdo chce smazat všechna data ze svého disku. Mohou existovat zcela legitimní důvody, proč to udělat, a nejjednodušší způsob, který mě napadá, je

rm -rf --no-preserve-root /

Ukázalo se, že tento je ve skutečnosti uveden jako příklad v info rm :

`--no-preserve-root'
    Do not treat `/' specially when removing recursively.  This option
    is not recommended unless you really want to remove all the files
    on your computer. 

Dalším naprosto dobrým důvodem je, že chcete odstranit připojený souborový systém, který máte chroot -ed do. V takovém případě rm -rf --no-preserve-root / smaže systém v chroot prostředí, ale vaše zůstane nedotčeno.

Jsem si jistý, že existuje více možných důvodů, ale obecně se zdá velmi rozumný přístup, že mi můj systém umožňuje dělat si s ním, co chci. Mým úkolem je být opatrný, systém by mi měl umožnit dělat jen to, co chci. Pokud je to, co chci, hloupé, je to můj problém a ne OS.

Každopádně se jedná o relativně nové omezení, bylo přidáno v 7. verzi specifikace POSIX (předchozí je zde), předtím rm -rf / byl naprosto platný příkaz. Na historickou poznámku, . a .. adresáře byly vždy chráněny před rm , od roku 1979, kdy rm nejprve získal možnost mazat adresáře. Více o tom zde.


Existence --no-preserve-root přepínač není na přidat další funkce, ale k přepsání velmi rozumné snížení funkčnosti. Tento přepínač je pravděpodobně založen na filozofii, že počítač by měl dělat to, co mu bylo řečeno, a že příkazy by měly být k dispozici pro vyjádření jakékoli požadované akce. Tento přepínač je starší než UEFI a na základě svých zkušeností říkám, že je nyní zastaralý.

V moderní praxi, bez tohoto přepínače, rm příkaz zabrání náhodnému smazání kořenového adresáře při použití neinicializované proměnné nebo zbloudilého prostoru.

rm -rf /${my_directory}
rm -rf / var/log/httpd/*

Zábavná poznámka pod čarou:Ochrana nebyla jejím záměrem. Podle blogu Sun Microsystems odstranění / adresář implicitně odstraní aktuální pracovní adresář, což je porušení zvláštního zřetele, který již byl učiněn pro . a .. adresáře. To je důvod, proč jejich výbor pro standardy povolil tuto zvláštní výjimku - ne kvůli prevenci nehody. Tato změna byla poprvé představena s Solaris 10 sestavení 36.

http://archive.is/5lmc9


Linux
  1. Linux – Proč v systému není přítomen žádný souborový systém Rootfs?

  2. Rekurzivní Mkdir?

  3. Chown pouze tam, kde je potřeba / zrychlení Chown?

  1. Kde najdu zdrojový kód příkazu cp?

  2. Existuje souborový systém podobný git?

  3. Proč je v Linuxu potřeba upravovat tabulky systémových volání?

  1. Změna velikosti oddílu /var na vzdáleném systému (Linux Debian Lenny)

  2. Jak odstranit systém Linux?

  3. Linux:Kam umístit odkládací soubor