Dateien vor versehentlichem Löschen schützen
Es gibt Dateien, die vor unbedachten Löschaktionen ganz sicher sein sollten – selbst wenn diese von root oder mittels „sudo“gestartet werden. Hierzu können Dokumente gehören oder auch wichtige Konfigurationsdateien sowie Datenbanken, deren Verlust verheerend wäre.
Die beste Strategie gegen Datenverlust ist natürlich ein regelmäßiges Backup. Aber auch das Zurückspielen von Sicherungen nimmt wertvolle Zeit in Anspruch, während der ein Server offline liegt. Eine Möglichkeit, Dateien und Verzeichnisse vor Löschaktionen zu schützen, ist vom verwendeten Dateisystem abhängig: Auf den Linuxdateisystemen Ext, XFS, JFS, BTRFS und F2FS können erweiterte Attribute ausgewählte Objekte vor Änderungen und vor dem Löschen schützen – selbst wenn dies der allmächtige root versuchen sollte. Der einschlägige Befehl „chattr“setzt oder entfernt erweiterte Attribute. Um beispielsweise eine Datei namens „config.php“unlöschbar sowie unveränderbar zu schalten, setzt das Kommando sudo chattr +i config.php das erweiterte Attribut „immutable“. Selbst root darf diese Datei jetzt nicht mehr löschen und ändern, solange dieses Attribut nicht wieder mit sudo chattr -i config.php zurückgesetzt wird. Das Kommando „lsattr“zeigt die Attribute aller Dateien und Unterordner im aktuellen Verzeichnis an. Wenn Dateien zwar beschreibbar und veränderbar bleiben, jedoch vor dem Löschen sicher sein sollen, dann sind erweiterte Attribute nicht die richtige Methode. Debian, Ubuntu und Raspberry-pi-os haben in ihren Paketquellen ein Austauschscript für den Löschbefehl „rm“, das die Definition geschützter Ordner und Dateien in einer Konfigurationsdatei erlaubt.
1. Die Installation erfolgt in den genannten Systemen durch diesen Befehl: sudo apt install safe-rm Das Perl-script wird dabei unter „/usr/share/safe-rm/bin/rm“eingerichtet.
2. Damit nun immer das Script statt dem eigentlichen rm-befehl aufgerufen wird, setzen Sie mit dem Befehl sudo ln -s /usr/share/ safe-rm/bin/rm /usr/ local/bin/rm einen symbolischen Link in das Verzeichnis „/usr/local/bin/rm“. 3. Die Liste der Dateien und Ordner, die das Kommando „rm“von nun an nicht mehr löschen darf, wird in der Konfigurationsdatei „/etc/safe-rm.conf“definiert. Jede Zeile entspricht einem Objekt, das mit seinem kompletten Pfad angegeben wird. Auch der Platzhalter „*“funktioniert. Folgender Eintrag /etc/nginx/sitesenabled/* verhindert also, dass „rm“eine der Dateien im Verzeichnis „/etc/ nginx/sites-enabled“löscht. Das Perl-script verweigert rm-löschaktionen für alle Einträge in der Konfigurationsdatei. Es ist aber weiterhin möglich, geschützte Dateien und Ordner zu löschen, indem der volle Pfad „/usr/bin/ rm“des Löschkommandos angegeben wird.