Das ext2/3-DateiSystem besitzt die Möglichkeit, Dateien und Verzeichnissen bestimmte Attribute anzuhängen, die das Verhalten bei verschiedenen Operationen steuern. Einige Attribute lassen sich auch global für das gesamte DateiSystem vorgeben.

Attribut

Beschreibung

mount-Option

a

a(ccess)time - letzte Zugriffszeit wird nicht gespeichert

-o noatime

c

compressed - Datei wird komprimiert gespeichert

-

d

dump - Datei wird beim Backup mit dump nicht berücksichtigt

-

i

immutable - Datei ist unveränderlich

-o ro

j

journal - Daten werden zuerst im Journal gespeichert

-o data=journal

s

sweep - Beim Löschen einer Datei wird der Speicherbereich mit Nullen überschrieben

-

S

Sync - Nach jeder Schreiboperation wird ein fsync ausgeführt

-o sync

t

tail - Dateienden, die keinen vollen Block bilden, werden nicht mit anderen Dateien zusammengefasst

-o notail

u

undelete - Dateien werden beim Löschen für ein Undelete gesichert

-

Mit lsattr kann man sich die Attribute anzeigen lassen, mit chattr kann man sie ändern.

Anmerkungen:

1) Diese Attribute vererben sich auf neu erzeugte dateien, wenn sie für das übergeordnete Verzeichnis gesetzt werden.

2) Die c-option scheint nicht zu funktionieren.

ToDo: Die Informationen unten sind hier im großen und ganze falsch platziert, bitte aufräumen.

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:

Hard links

Es werden von allen wichtigen Dateien HardLinks in ein spezielles Verzeichnis gelegt. Wenn man dann einen Eintrag löscht, macht man halt vom Hardlink wieder einen Hardlink 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, muss man für /etc/aliases* die Hardlinks (vorübergehend) wieder entfernen -- denn manche Programme sehen Hardlinks 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

Tipp von Andreas.Huennebeck@bruker.de:

Man kann in den Verzeichnissen, die man vor Radikalschlägen (wie z.B. rm * schützen möchte, 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 gelöscht werden soll.

Dieser Tipp ist allerdings hochgefährlich, da die Option -i so auch jedem anderen 'befehl *' angehängt wird, und je nach Befehl völlig anders interpretiert werden kann. Zudem kann man bei den meisten Kommandos mit -- die Liste der Optionen beenden, sprich die Datei -i lässt sich mit rm -- -i löschen, da nach dem -- keine Optionen mehr beachtet werden.

DateiAttribute (zuletzt geändert am 2008-02-28 15:54:46 durch p57B25415)