Forum: PC Hard- und Software rm -rf * verhinder


von Rapsberry iP (Gast)


Lesenswert?

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)?

: Verschoben durch Moderator
von Detlef K. (adenin)


Lesenswert?

Dazu ist ja Linux da.
Source an eigene Wünsche anpassen, compilieren, installieren, freuen.

von Yalu X. (yalu) (Moderator)


Lesenswert?

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).

: Bearbeitet durch Moderator
von Bastler (Gast)


Lesenswert?

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.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Bastler schrieb:
> Auch wenn man's nicht selber war, als root ist man danach extrem
> vorsichtig

Wäre es nicht besser vorher vorsichtig zu sein?

Die -rf Option ständig anzugeben (egal ob nötig oder nicht) ist sowieso 
eine Unsitte ...

von Pete K. (pete77)


Lesenswert?

noch besser ist rm -rf .*  :-)

von Patrick (Gast)


Lesenswert?

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...

von Luxxus (Gast)


Lesenswert?

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.

von Sempfdazugeber (Gast)


Lesenswert?

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.

von Frank K. (fchk)


Lesenswert?

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

von Rolf Magnus (Gast)


Lesenswert?

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 ;-)

von Peter D. (peda)


Lesenswert?

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.

von StinkyWinky (Gast)


Lesenswert?

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.

von Stefan Noack (Gast)


Lesenswert?

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 ;-)

von unixadmin (Gast)


Lesenswert?

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.

von Din O. (adnc)


Lesenswert?

Die eleganteste Lösung ist die von Luxxus und wird in vielen 
Distributionen mitgeliefert.

von Mark B. (markbrandis)


Lesenswert?

Manche Betriebssysteme haben einen Papierkorb, aus dem man gelöschte 
Dateien wieder hervorzaubern kann ;-)

von unixadmin (Gast)


Lesenswert?

Mark Brandis schrieb:
> Manche Betriebssysteme haben einen Papierkorb, aus dem man gelöschte
> Dateien wieder hervorzaubern kann ;-)


Dann wird aber dringend benötigter Platz nicht sofort frei ...

von Mark B. (markbrandis)


Lesenswert?

unixadmin schrieb:
> Dann wird aber dringend benötigter Platz nicht sofort frei ...

Dringend benötigter Platz - bei heutigen Festplatten mit drölfzig 
Exabyte? ;-)

von Rolf Magnus (Gast)


Lesenswert?

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.

von Fpgakuechle K. (Gast)


Lesenswert?

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,

von rm (Gast)


Lesenswert?

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: ‘..’

von Uhu U. (uhu)


Lesenswert?

Mark Brandis schrieb:
> Dringend benötigter Platz - bei heutigen Festplatten mit drölfzig
> Exabyte? ;-)

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

von Mark B. (markbrandis)


Lesenswert?

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 ;-)

von Uhu U. (uhu)


Lesenswert?

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?

von Erwin M. (nobodyy)


Lesenswert?

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.

: Bearbeitet durch User
von Mark B. (markbrandis)


Lesenswert?

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.

von Rolf Magnus (Gast)


Lesenswert?

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.

von Uhu U. (uhu)


Lesenswert?

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.

von Pete K. (pete77)


Lesenswert?

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 :-)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.