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).
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.
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 ...
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...
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.
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.
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.
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.
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 ;-)
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.
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 ...
unixadmin schrieb:> Dann wird aber dringend benötigter Platz nicht sofort frei ...
Dringend benötigter Platz - bei heutigen Festplatten mit drölfzig
Exabyte? ;-)
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.
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,
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: ‘..’
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?
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.
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 :-)