ADMIN-Tipp: Rettung vor Totalverlust

Jede Woche erscheint in unserem Newsletter ein neuer ADMIN-Tipp. Eine Sammlung aller Tipps finden Sie im Archiv der ADMIN-Tipps.

Manche Kommandos sollten eigentlich jeden Admin reflexartig bremsen. Ein solches Kommando ist rm -rf *. Dennoch kommt es vor, dass man die sechs Zeichen bereut. Aber ganz schutzlos ist man nicht.

Ein Sicherheitsnetz gegen unbedachtes rekursives Löschen lässt sich aufspannen, indem man in allen wichtigen Verzeichnissen eine leere Datei namens -i anlegt. Das geht mit

jcb@hercules:~/test$ >-i

oder

jcb@hercules:~/test$ touch -- -i

Existiert eine solche Datei, expandiert die Shell ein rm -rf * automatisch so, als wäre -i als Option angegeben worden. rm wechselt in den interaktiven Modus
und fragt dann nach:

jcb@hercules:~/test$ rm -rf *
rm: Normale leere Datei »file1“ entfernen? 

Will man dann den Verzeichnisinhalt tatsächlich löschen und nicht jede Datei bestätigen, müsste man eigentlich zuerst das -i-File  entfernen.

jcb@hercules:~/test$ rm -- -i

Es geht aber auch einfacher und das ist gleichzeitig die Achillesferse des ganzen Verfahrens. Was nämlich nicht abgefangen wird ist:

jcb@hercules:~/test$ rm -rf ./*

Diese Form sollte man sich also besser abgewöhnen, damit die Versicherung greift.

10.12.2012

Ähnliche Artikel

  • ADMIN-Tipp: Der Klammer-Kniff

    Die Bash beherrscht einige weniger bekannte Tricks, die sehr nützlich sein können

  • ADMIN-Tipp: Mehr mit Meta

    Spezielle Tastenkombination, oft mit dem Meta-Key - per Default ist das [Alt] - entlocken der Bash nützliche Funktionen.

  • ADMIN-Tipp: Unlöschbare Files

    Per se ist kein Unix- oder Linux-File unangreifbar, zumindest einer Manipulation mit Rootrechten widerstehen die einfachen Schutzmechanismen nicht. Doch man kann eine Datei mit Bordmitteln durchaus so panzern, dass sich auch der allgewaltige Root daran die Zähne ausbeißt.

  • ADMIN-Tipp: Überraschendes cd

    Manchmal verbergen sich hinter den unscheinbarsten Dingen, bei denen es keiner erwartet, noch überraschend praktische Tipps. Beispielsweise ist cd sicher eins der häufigsten Shell-Kommandos überhaupt, seine Funktion ist in einem Satz erklärt und damit scheint alles gesagt. Trotzdem kann man hier noch weniger bekannte, nützliche Tricks finden.

  • ADMIN-Tipp: Neue Zeitrechnung

    "Weißt Du wieviel Sternlein stehen, an dem weiten Himmelszelt?" Es sind 2000 mit bloßem Auge sichtbare - unter guten Bedingungen. Wegen der Lichtverschmutzung besonders in Großstädten aber oft nur Hunderte. Gesetzt, man könnte einen pro Sekunde zählen - wie lange bräuchte man? Die Shell weiß es.

Comments

Nicht überzeugend

Hallo Herr Thommen,

vielen Dank für Ihren Kommentar. Selbstverständlich kann man das Verfahren unpraktisch finden, nur Ihre Argumente überzeugen mich nicht wirklich: Natürlich muss man nicht händisch in jedem Verzeichnis ein -i-File anlegen, denn das könnte im Bedarfsfall sehr einfach und schnell ein einfaches Mini-Skript erledigen. Und was spricht gegen ein sichtbares File ohne Inhalt? Auch muss man das File nicht jedesmal mit einem speziellen rm löschen, weil ja, wie gezeigt, rm -rf ./* immer funktioniert.

Ein rm-Alias ist eine andere, auch brauchbare Lösung. Und ein Linux-Papierkorb mit libtrash ist auch nicht schlecht. Alles hat seine kleinen Vor- und Nachteile, aber das Wunderbare an Unix (oder Linux) ist ja, dass es für ein Problem oft verschiedene Lösungsmöglichkeiten gibt und sich jeder die heraussuchen kann, die ihm am meisten zusagt.

libtrash

Die bequemste und schönste Möglichkeit Verlust durch rm zu verhindern ist libtrash. Man muss sich nur erstmal den Aufwand machen es zu konfigurieren & installieren.

Nicht wirklich praktikabel...

Dieser Tipp scheint mir nicht praktikabel.  a) will wohl niemand durch alle Verzeichnisse durchgehen und '-i'-Files anlegen b) ist es m.E. keine gute Idee, sichtbare Files zu haben, welche nicht eigentlich Daten sind.  Aber als ".-i" funktioniert die Sache natuerlich nicht.  Und jedesmal das File zu loeschen - wofuer man wieder eine spezielle Form von "rm" braucht - bevor das Verzeichnis geloescht werden kann, ist ebenfalls viel zu umstaendlich.  Deutlich besser scheint mir, einen Alias "rm" fuer "rm -i" anzulegen.  Will man dann doch mal ohne Nachfrage loeschen, benutzt man einfach "\rm".  So einfach :-)

comments powered by Disqus
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2023