rm -rf * verhinder

Moderator
Einfach /usr/bin/rm löschen ;-)

Oder /usr/bin/rm umbennen und ein Skript namens rm schreiben, das die
genannten Fälle abfängt.

rm -rf /

geht normaler sowieso nicht (nur in Verbindung mit der Option
--no-preserve-root).
Gast
Hab ich vor über 20 Jahren mal bei einem Kollegen gesehe. Da ist eine 
ganze SAP Instanz mit verschwunden und der Kunde war echt sauer. Auch 
wenn man's nicht selber war, als root ist man danach extrem vorsichtig.
Gast
Läubi .. schrieb:
> Die -rf Option ständig anzugeben (egal ob nötig oder nicht) ist sowieso
> eine Unsitte ...

Tja, genauso gibt es ja Exemplare, die ein "chmod -R 777 *" als 
Allheilmittel gegen Fehler jeglicher Art einsetzen.

Was will man da machen, wenn das Grundverständnis fehlt und keine Lust 
bzw. kein Interesse an Nachdenken (über den Befehl an sich, dessen 
Parameter und die möglichen Folgen) besteht...
Gast
du kannst einen alias machen z.b.

alias rm="rm -i"

dann wird wenigstens vorher gefragt
oder du lenkst mit alias auf ein script um welches die Parameter prüft.
Gast
Es gab in der Vergangenheit genug kommerzielle Software, die wenn sie
das Verzeichnis das zu löschen war nicht fand, eine Ebene darunter
platt machte.

Da war dann usr einfach weg :-)

Um SAP ists sowieso nicht schade.
Die daranhägende Datenbank wär viel schlimmer.
Bei BSD gibts für diesen Zweck das User Immutable und das System 
Immutable Flag.

"An immutable file may not be changed, moved, or deleted.  An 
append-only file is immutable except that data may be appended to it."

man chflags
http://www.openbsd.org/cgi-bin/man.cgi?query=chflags

Vergleiche dazu auch securelevel(7)
http://www.openbsd.org/cgi-bin/man.cgi?query=securelevel&sektion=7&arch=&apropos=0&manpath=OpenBSD+Current

fchk
Gast
Pete K. schrieb:
> noch besser ist rm -rf .*  :-)

Darauf bin ich auch mal reingefallen, nachdem ich gemerkt hatte, daß rm 
* die versteckten Files nicht mitgelöscht hat. Den Fehler macht man aber 
nur einmal.

Rapsberry iP schrieb:
> Wie kann ich unter Linux grundsätzlich verhindern, daß Befehle wie
> rm -rf *
> oder
> rm -rf /
> ausgeführt werden(auch für sudo)?

Am besten, indem du sie nicht ausführst ;-)
Ich hab mal zu DOS-Zeiten ein "format c: /y" abgeschickt.
Der Kommentar des OS nach der Aktion war "command.com not found", womit 
es ja Recht hatte.

Die aktuellen Windowse sind aber verrammelt und verriegelt, da wehrt 
sich das OS mit Händen und Füßen gehen eifrige Löscher. Viele 
System-Ordner sind mit einem Schloß versehen.
Und hat man so einen Ordner mit "cacls" umständlich entriegelt, sind die 
Unterordner natürlich weiterhin verriegelt.
Gast
So wie Yalu vorgeschlagen hat.
Aber ich würde /usr/bin/rm nach /usr/sbin/rm verschieben.
Dann kann man, wenn man's braucht, mit /usr/sbin/rm -rf immer noch 
benützen. Für den täglichen Gebrauch nützt man das entschärfte Skript.
Gast
Rapsberry iP schrieb:
> Wie kann ich unter Linux grundsätzlich verhindern, daß Befehle wie
> rm -rf *
> oder
> rm -rf /
> ausgeführt werden(auch für sudo)?

Das geht mit folgendem Befehl:
1
sudo rm -rf /*

Dadurch wird das Ausführen schädlicher Kommandos konsquent unterbunden.

SCNR ;-)
Gast
Ein leidiges Thema,

aber es wird nur durch Einsatz von Hirn besser,
da wenn man es mal weiss, auch aliase umgehen kann.

In meinen bisherigen Tätigkeiten musste ich schon mehrfach Kunden aus 
der "rm"-Patsche helfen.


Angefangen bei rsh root@serverb "cd /directory/das/nicht/existiert; rm 
-rf *"
Der Kunde meinte am Morgen "uns ist da was passiert" ...
Danach war das ganze OS weg, war damals ein Ultrix. Bei Linux ist der 
Flurschaden kleiner, aber auch noch nervig genug, da dann mindestens das 
home-directory von root leer ist.
Hat mir damals einen Vormittag im Keller sitzen beschert um das Ultrix 
neu zu installieren.

Oder Kollegen die mal einen ganzen Dateibaum löschen wollten, allerdings 
war da auch ein NFS-Volume gemountet, somit waren nicht nur lokale Daten 
weg wie gewünscht, sondern auch der halbe NFS-Server leer.

Es gibt genug Situationen in denen auch entsprechende Passagen 
geskriptet sind und somit keiner wirklich den interaktiven Modus von rm 
herbeisehnt.
Der Alias greift ja auch nur bei interaktiven Sessions und nicht in 
Skripten.

Es gibt durchaus andere Alternativen. Aber wer unbedingt möchte bekommt 
das auch hin was falsch zu machen.
Gast
StinkyWinky schrieb:
> So wie Yalu vorgeschlagen hat.
> Aber ich würde /usr/bin/rm nach /usr/sbin/rm verschieben.

rm gehört nach /bin, nicht nach /usr/bin. Und ob noch alle Skripte 
richtig tun, wenn man das wo anders hinschiebt?

Mark Brandis schrieb:
> unixadmin schrieb:
>> Dann wird aber dringend benötigter Platz nicht sofort frei ...
>
> Dringend benötigter Platz - bei heutigen Festplatten mit drölfzig
> Exabyte? ;-)

Nun, wenn der Platz nicht benötigt wird, braucht man ja auch die Dateien 
nicht zu löschen.
Gast
Rapsberry iP schrieb:
> Wie kann ich unter Linux grundsätzlich verhindern, daß Befehle wie
>
>
1
rm -rf *
>
> oder
>
>
1
rm -rf /
>
> ausgeführt werden(auch für sudo)?

das device  readonly mounten

der bereitsvorgeschlagene alias zu rm -i war Standard auf ner SUN. IMHO 
eine elegamte Weise das Hirn des Nutzers in kritischen Situationen 
wieder einzuschalten.

Dann könnte man rm auch euf ein script verweisen lassen, das kritische 
cmd-linee options wegparst und dann das standard rm aufruft. Könnte ein 
kleiner 5-Zeiler sein, substitute im sed  mit geschickten regexp könnte 
das schaffen.

MfG,
Gast
Rolf Magnus schrieb:
>> noch besser ist rm -rf .*  :-)
>
> Darauf bin ich auch mal reingefallen, nachdem ich gemerkt hatte, daß rm
> * die versteckten Files nicht mitgelöscht hat. Den Fehler macht man aber
> nur einmal.

Wovon redet ihr?
Wird bei euch das aktuelle Verzeichnis und rekursiv alle 
Elternverzeichnisse gelöscht?

Bei mir nicht:

user@host:/tmp/x$ rm -rf .*
rm: cannot remove directory: ‘.’
rm: cannot remove directory: ‘..’
Rolf Magnus schrieb:
> Nun, wenn der Platz nicht benötigt wird, braucht man ja auch die Dateien
> nicht zu löschen.

Es gibt ja auch noch den Fall, dass man die Dateien nicht mehr braucht, 
den Platz aber aktuell auch nicht.

Uhu Uhuhu schrieb:
> Hast du noch nicht gemerkt, daß Festplatten - unabhängig von der Größe -
> immer zu klein sind?

Ja - weil Menschen Jäger&Sammler sind und einen Haufen unnützen Schrott 
horten ;-)
Mark Brandis schrieb:
> Ja - weil Menschen Jäger&Sammler sind und einen Haufen unnützen Schrott
> horten ;-)

Und wenn man was gelöscht hat, was sich hinterher doch nicht als Schrott 
entpuppt, ist die Hektik groß... Oder weißt du bei 300.000 Dateien in 
einem System, von jeder einzelnen ganz genau, ob und wozu sie noch 
gebraucht wird?
Rapsberry iP schrieb:
> Wie kann ich unter Linux grundsätzlich verhindern, daß Befehle wie
>
>
1
rm -rf *
>
> oder
>
>
1
rm -rf /
>
> ausgeführt werden(auch für sudo)?

Ganz einfach:

a) Niemanden ranlassen, also keinerlei Logings zulassen

b) / readonly mounten, z. B. als Livefilesystem, geht von 
CD/DVD/USB-Speicherstick mit Schreibschutz

Aber zum erfolgreichen

rm -rf /

muss man ohnehin die Option --no-preserve-root angeben und auch mit 
dieser Option bleiben alle Verzeichnisse erhalten, die ein gemountetes 
Dateisystem enthalten; rm weigert sich mit der Fehlermeldung "Device or 
resource busy" und terminiert dann.
Zum Frühjahrsputz empfiehlt sich deshalb für die lokalen Datenträger:

cd /dev
for i in $(ls hd? sd? fd0 fd1)
do
    badblocks -fw -t random "$i" &
done

Und um auch die Netzlaufwerke zu säubern kann man diese Schleife 
anhängen:

find / -type f | while read file
do
  >"$file"
done

Da hilft dann auch kein undelte, weil Badblocks überschreibt und die 
find-Schleife nur die Dateilänge auf Null setzt, also nur ändert aber 
nicht löscht.
Uhu Uhuhu schrieb:
> Und wenn man was gelöscht hat, was sich hinterher doch nicht als Schrott
> entpuppt, ist die Hektik groß... Oder weißt du bei 300.000 Dateien in
> einem System, von jeder einzelnen ganz genau, ob und wozu sie noch
> gebraucht wird?

Das "Festplatten sind immer zu klein" bezieht sich aber wohl eher nicht 
auf das Betriebssystem an sich, sondern eher auf Filme, Musik, Spiele... 
das sind meines Erachtens die wahren Speicherfresser.
Gast
rm schrieb:
> Rolf Magnus schrieb:
>>> noch besser ist rm -rf .*  :-)
>>
>> Darauf bin ich auch mal reingefallen, nachdem ich gemerkt hatte, daß rm
>> * die versteckten Files nicht mitgelöscht hat. Den Fehler macht man aber
>> nur einmal.
>
> Wovon redet ihr?
> Wird bei euch das aktuelle Verzeichnis und rekursiv alle
> Elternverzeichnisse gelöscht?

Nein. Ich bin mir allerdings relativ sicher, daß das damals (ist schon 
etliche Jahre her) anders war und ich auf diese Weise einige Files 
verloren habe.
Mark Brandis schrieb:
> Das "Festplatten sind immer zu klein" bezieht sich aber wohl eher nicht
> auf das Betriebssystem an sich, sondern eher auf Filme, Musik, Spiele...
> das sind meines Erachtens die wahren Speicherfresser.

Die genannte Zahl ist ohne OS - das sichere ich nicht - und Musik und 
Filme machen nicht so wahnsinnig viel aus. Zu einem großen Teil - 
zumindest zahlenmäßig - sind es Dateien in alten Projekten. Da geht man 
lieber nicht mit der Axt dran.
Rolf Magnus schrieb:
>> Rolf Magnus schrieb:
>>>> noch besser ist rm -rf .*  :-)
>>>
>>> Darauf bin ich auch mal reingefallen, nachdem ich gemerkt hatte, daß rm
>>> * die versteckten Files nicht mitgelöscht hat. Den Fehler macht man aber
>>> nur einmal.
>>
>> Wovon redet ihr?
>> Wird bei euch das aktuelle Verzeichnis und rekursiv alle
>> Elternverzeichnisse gelöscht?
>
> Nein. Ich bin mir allerdings relativ sicher, daß das damals (ist schon
> etliche Jahre her) anders war und ich auf diese Weise einige Files
> verloren habe.

Habe das damals auf einer SUN ausgeführt. Danach bin ich erst einmal aus 
dem Raum gegangen, habe mir einen großen Kaffee geschnappt und die 
Installationsmedien gesucht.

Ja, es wurden alle Unterverzeichnisse und Elternverzeichnisse (".*" 
enthält auch "..") mit gelöscht. Habe das danach nie wieder auf 
aktuellen Distris probiert :-)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 12 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.