rm (Unix)

rm (Unix)

rm (Abkürzung für „remove“) ist der in der UNIX-Welt übliche Befehl zum Löschen von Dateien und Verzeichnisbäumen. Im Gegensatz zu anderen Betriebssystemen, z. B. MS-DOS, ist der Löschbefehl in UNIX als unabhängiges Programm und nicht im Kommandozeileninterpreter realisiert. Dank des vermeintlichen Fehlens einer Papierkorb-Funktion sowie der berühmten Parameterwahl rm -rf / erlangt rm überdurchschnittlich viel Aufmerksamkeit nicht nur bei Unix-Neulingen, sondern generell in der Netzkultur.

Inhaltsverzeichnis

rm und unlink

Genaugenommen löscht das Kommando rm eine Datei unter Unix gar nicht. Das Unix-Dateisystem unterscheidet zwischen Daten, die durch eine Inode beschrieben werden, und Pfadnamen, die innerhalb von Verzeichnissen auf die Inodes verweisen. Eine Inode kann dabei mehrere Pfadnamen haben, was in der Unix-Terminologie (hard) Link genannt wird.

rm ruft intern bei nicht-Directory Dateien den Systemaufruf unlink auf, der einen solchen Link und den zugehörigen Pfadnamen entfernt. Die Inode und die Datenblöcke werden aber erst freigegeben, wenn

  1. der letzte Link auf eine Inode entfernt wird und
  2. kein Prozess mehr auf die Daten zugreift.

Dies bedeutet, dass man rm auch dann problemlos aufrufen kann, wenn ein Prozess auf die Daten zugreift. Dieser kann die Daten ohne Störung bis zum Ende lesen. War es der letzte Link und Prozess, werden die Daten beim Schließen der Datei durch den Prozess automatisch vom Betriebssystem freigegeben.

Der Befehl unlink verwendet immer den Systemaufruf unlink und kann daher wenn er durch einen privilegierten Benutzer aufgerufen wurde unter Umständen auch nicht-leere Directories löschen.

Sicheres Löschen

Hauptartikel: Datenvernichtung

Das Betriebssystem gibt nach rm nur die Datenblöcke frei, die Daten bleiben aber unter Umständen noch einige Zeit physikalisch gespeichert. Sensible Daten (z. B. Passwörter oder Kreditkartennummern) sollten aber nicht mehr gelesen werden können. Zum sicheren Löschen muss man daher die Datei öffnen und alle Blöcke überschreiben. Auch manche Dateisysteme bieten die Option, freigewordene Blöcke sofort zu überschreiben. Dies kostet jedoch Zeit und wird daher nur in Ausnahmefällen angewendet.

Die weit verbreitete Meinung, dass sich die Daten nach einmaligem Überschreiben noch mit großem Aufwand, etwa durch Messungen mit Elektronenmikroskopen, wiederherstellen lassen ist jedoch falsch; ein einmaliges Überschreiben ist vollkommen ausreichend; wichtiger ist es, alle Kopien und automatisch erstellte Backups zu beseitigen.[1]

Siehe auch: shred oder Wipe

Dateiwiederherstellung

Unix unterstützt normalerweise nicht die Wiederherstellung von Dateien. Freigewordene Datenblöcke werden unter Umständen sofort von neuen Daten anderer Prozesse belegt.

Es existieren jedoch Dateisysteme, die eine Wiederherstellung unterstützen. Obwohl es bereits seit einigen Jahren entsprechende Entwicklungen gibt, hat sich das „undelete“ noch nicht durchgesetzt.

Syntax

rm [optionaler Zusatzparameter] Dateiname

Beispiel:

rm test.txt

Die Datei „test.txt“ wird aus dem Verzeichnis gelöscht, in dem man gerade ist.

optionale Zusatzparameter: (Auswahl) Es gibt eine Reihe von optionalen Parametern. Einige davon werden von POSIX gefordert (-fiRr und --), das GNU-rm kennt eine erweiterte Parameterliste (-dfirvR, --help, --version und --). Details über die in einem System installierte Variante erfährt man durch einen Blick in die man page (man rm).

-f
(force) Lösche Datei ohne Rückfrage, und gib keine Beschwerde aus, falls eine Datei gar nicht existiert.
-i
(interactive) Für jede Datei wird rückgefragt, ob diese gelöscht werden soll.
-r
(recursive) lösche ein vollständiges Verzeichnis rekursiv.
-v
(verbose) zeige die Namen aller gelöschten Dateien an.

rm -rf /

Das rm -rf /-Kommando wird wegen seiner desaströsen Wirkung bereits von der Netzkultur metaphorisch verwendet, ähnlich wie /dev/null. Der Aufruf von rm mit den Parametern r und f auf das Wurzelverzeichnis (Root-Verzeichnis) bewirkt, wie man der Syntaxbeschreibung bereits entnehmen kann, das rekursive Löschen aller Dateien auf dem ausführenden Computer (genauer: auf allen gemounteten Datenträgern) ohne Rückfrage. Führt man dieses Kommando als root aus, führt das prinzipiell zur unwiderruflichen Löschung des gesamten Systems; als normaler Benutzer löscht dies in der Regel alle Dateien, die dem ausführenden Benutzer gehören (siehe Unix-Dateirechte für Details zur Rechtehandhabung und dem Eigentum von Dateien).

Sun Microsystems führte einen „rm -rf /“-Schutz mit Solaris 10 ein (erster Release 2005). Beim Aufruf des besagten Kommandos bricht das Programm mit einer Fehlermeldung ab, dass das Löschen von / nicht erlaubt ist[2]. Kurz darauf wurde die gleiche Funktion in FreeBSD eingeführt. Die GNU-Version von rm bricht mit einer Fehlermeldung ab, wenn --preserve-root als Parameter angegeben wird, was seit Version 6.4. der GNU core utilities Standard ist (2006 veröffentlicht).

Weblinks

Einzelnachweise

  1. Sicheres Löschen: Einmal überschreiben genügt – Artikel bei heise online, vom 16. Januar 2009
  2. Meddling in the Affairs of Wizards (engl.)

Wikimedia Foundation.

Игры ⚽ Нужна курсовая?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Unix — (officially trademarked as UNIX, sometimes also written as Unix with small caps) is a computer operating system originally developed in 1969 by a group of AT T employees at Bell Labs, including Ken Thompson, Dennis Ritchie, Douglas McIlroy, and… …   Wikipedia

  • UNIX — Ken Thompson und Dennis Ritchie Basisdaten Entwickler …   Deutsch Wikipedia

  • Unix — Kommandozeile (Unix Prompt) Basisdaten Entwickler Ken Thompso …   Deutsch Wikipedia

  • Unix — (registrado oficialmente como UNIX®) es un sistema operativo portable, multitarea y multiusuario; desarrollado, en principio, en 1969 por un grupo de empleados de los laboratorios Bell de AT T, entre los que figuran Ken Thompson, Dennis Ritchie y …   Wikipedia Español

  • UNIX — UNIX, parfois écrit « Unix », avec des petites capitales, est un système d exploitation multitâche et multi utilisateur créé en 1969, conceptuellement ouvert et fondé sur une approche par laquelle il offre de nombreux petits outils… …   Wikipédia en Français

  • Unix — (marque déposée officiellement comme UNIX, parfois aussi écrit comme Unix avec les petites capitalisations) est le nom d un système d exploitation multitâche et multi utilisateur créé en 1969, conceptuellement ouvert et fondé sur une approche par …   Wikipédia en Français

  • Unix time — Unix time, or POSIX time, is a system for describing points in time, defined as the number of seconds elapsed since midnight Coordinated Universal Time (UTC) of January 1 1970, not counting leap seconds. It is widely used not only on Unix like… …   Wikipedia

  • Unix-подобная операционная система — Генеалогическое дерево UNIX подобных ОС UNIX подобная операционная система (иногда сокр. *nix)  система, которая образовалась под влиянием UNIX. Термин включает свободные/открытые операционные системы, образованные от UNIX компании …   Википедия

  • UNIX — 〈[ju:nıx] EDV〉 Betriebssystem für Computer, das zum großen Teil in der Programmiersprache C geschrieben ist [engl.] * * * UNIX   [ursprünglich UNICS, Abk. für Uniplexed Information and Computing System, dt. »nicht multiplextes (vielseitiges)… …   Universal-Lexikon

  • UNIX-Kommandos — Unix Systeme zeichnen sich durch eine Vielzahl von Kommandos aus, mit denen sich über eine Shell das Betriebssystem bedienen lässt. Die Syntax dieser Kommandos weicht unter den verschiedenen Systemen voneinander ab. Es existieren die beiden… …   Deutsch Wikipedia

  • Unix-Befehle — Unix Systeme zeichnen sich durch eine Vielzahl von Kommandos aus, mit denen sich über eine Shell das Betriebssystem bedienen lässt. Die Syntax dieser Kommandos weicht unter den verschiedenen Systemen voneinander ab. Es existieren die beiden… …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”