Falls schon mal jemand "aus Versehen" `/bin' gelöscht hat, weiß er was ich meine. :-) Einige Dateien sollten einfach nicht mal "kurz" löschbar sein. Auch nicht von `root'. Ich hab mir das in zwei Schritten gelöst:
Es werden von allen wichtigen Dateien hard links in ein spezielles Verzeichnis gelegt. Hardlinks sind anders als die normalerweise benutzten symbolischen Links, sie zeigen nämlich auf die gleichen Sektoren der Festplatte wie der "Original"eintrag im Dateisystem. Unter DOS würde scandisk sowas als crosslink oder querverbundene Dateien bemängeln, also zwei Einträge im Dateisystem zeigen auf die selben Daten. Unter Linux (allgemein Unix) ist sowas problemlos möglich und u.U. gewollt. Wenn man dann einen Eintrag löscht, macht man halt vom hardlink wieder einen (hard)Link zurück -- fertig. Also:
$ mkdir /.hardlinks $ chmod 000 /.hardlinks # keiner darf da rein $ cp -Rvl /bin /sbin /etc /.hardlinks
Sollte funktionieren. Fehlermeldungen von wegen "cannot hard link directories" kann man ignorieren. Falls man mal sendmail neu konfigurieren will und/oder die `aliases' Datenbank, muß man für `/etc/aliases*' die Hardlinks (vorübergehend) wieder entfernen -- denn manche Programme sehen hard links als Sicherheitslücke an. Das ext2-Dateisystem bietet noch eine Reihe von zusätzlichen Attributen an, die hier benutzt werden könnten. Ich denke da an das i Attribut. (für weitere Infos "man chattr" oder "man lsattr"). Also:
# for X in bin sbin ; do > chattr +i /$X/* > done
Andreas.Huennebeck@bruker.de hat dazu noch einen Kommentar losgelassen: Man kann in den Verzeichnissen, die man vor Radikalschlaegen (wie z.B. rm * schuetzen moechte, eine leere Datei namens -i erzeugen; das geht mit touch ./-i. Die Shell expandiert dann den * aus rm * in eine Liste von Namen, an deren erster Stelle -i steht. rm interpretiert das dann als Option, d.h. es fragt bei jeder Datei nach, ob sie wirklich geloescht werden soll.