Seit einigen Jahren wird das GNU- rm
Dienstprogramm nur gelöscht, /
wenn es mit der --no-preserve-root
Option aufgerufen wird . Das Kommando rm -rf /
ist jedoch schon seit langer Zeit im kollektiven Unterbewusstsein als gefährlich eingestuft und wird immer noch häufig als "beängstigendes" Kommando bezeichnet.
Ich habe mich gefragt, wann diese Regel, rm
die nicht gelöscht werden kann, zum /
ersten Mal angezeigt wurde . Ich habe die POSIX-Spezifikationen überprüft und kann feststellen, dass POSIX: 2008 diese Sicherheitsfunktion enthält, POSIX: 2001 jedoch nicht. Da die Online-Versionen der POSIX-Spezifikationen von Zeit zu Zeit mit jeder neuen Unterversion aktualisiert werden, habe ich auch die Wayback-Maschine überprüft und die entsprechende Seite von POSIX: 2008 aus dem Jahr 2010 gefunden und konnte bestätigen, dass die Regel rm
nicht entfernt werden kann /
war damals schon gelistet.
Meine Fragen lauten also:
- Wann wurde die Regel,
rm
die nicht entfernt werden kann,/
zu den POSIX-Spezifikationen hinzugefügt? War es in der ursprünglichen Ausgabe 2008 der Single UNIX Specification Version 4 oder wurde es in einer Revision hinzugefügt? - Wann wurde diese Einschränkung zu GNU hinzugefügt
rm
? Ich bin mir ziemlich sicher, dass es war, bevor es zu POSIX hinzugefügt wurde, aber wann ist es passiert?
Antworten:
Die HTML-Version aller Ausgaben von POSIX 2008 finden Sie online:
Das wurde in der Ausgabe 2008 hinzugefügt.
Technische Berichtigungen fügen im Allgemeinen keine neuen Funktionen hinzu.
In der vorherigen Version ( http://pubs.opengroup.org/onlinepubs/009695399/utilities/rm.html ) (POSIX 2004) war dieser Text nicht enthalten.
Der neue Text wurde auf der austin group conference 2003-05-09 zur Aufnahme in eine spätere Überarbeitung des Standards angenommen.
Es wurde im März desselben Jahres von John Beck von Sun Microsystems angefordert (Link erfordert Opengroup-Registrierung, siehe auch Enhancement Request Nr. 5 hier ).
GNU
rm
hinzugefügt--preserve-root
und--no-preserve-root
Optionen in diesem Commit vom 09.11.2003, wurden jedoch--preserve-root
erst in diesem Commit vom 03.09.2006 zum Standard , also in coreutils 6.2FreeBSD behält seit dem Commit vom 04.10.2004 einen Schrägstrich bei (mit dem Commit-Protokoll "Finde heraus, wie schwer entflammbar meine Unterwäsche wirklich ist" ), aber zunächst nicht , bis sie sich daran erinnerten, ein Jahrzehnt später zu prüfen, ob POSIX jetzt ist Geben Sie an, zu welchem Zeitpunkt dies auch im POSIX-Modus geschehen ist .
POSIXLY_CORRECT
Die anfängliche Zusage von FreeBSD besagt, dass Solaris dies bereits zu diesem Zeitpunkt tat.
@JdePB (im Kommentar unten) stellte fest, dass der Link zu einer Insider-Story von Sun weitere Details zum Solaris-Ursprung untermauert und angibt, dass Solaris die Sicherheitsvorkehrungen bereits getroffen hat, bevor die Anfrage an die Austin-Gruppe gestellt wurde.
Es erklärt die Gründe für das Hinzufügen dieses Ausschlusses. Während man sich nur die Schuld, wenn sie es tun
rm -rf /
, gibt es einen Fall , in dem ein Skript könnte es tun , wenn dadurch ,rm -rf -- "$1/$2"
dass ohne Prüfung$1
/$2
wurden zur Verfügung gestellt , welche die Sache , die einige Kunden von Sun schlecht getroffen ist , wenn ein Solaris Patch falsche Anwendung (gemäß diesem Link).Das Verbot der Löschung von
.
und..
wurde schon lange vorher hinzugefügt , um sich gegen mögliche Pannen abzusichern.rm
ist immer noch ein gefährlicher Befehl. Es macht, was es tun soll: Entfernen Sie, was Sie ihm sagen.Würde auch alles entfernen. Es ist bekannt, dass die Vervollständigung von Shell-Dateinamen solche Probleme verursacht
Erweitert auf:
Denn
something
so geschah es nicht, ein Verzeichnis zu sein.Shells wie
tcsh
oderzsh
fügen eine zusätzliche Eingabeaufforderung hinzu, wenn Sie versuchen,rm
mit einem*
Platzhalter anzurufen (tcsh
nicht standardmäßig).quelle
rm -rf .*
von seinem Heimatverzeichnis aus zu löschen . Kurz darauf leuchteten alle Telefonleitungen auf ...