chattr

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:

Dieser Artikel ist größtenteils für alle Ubuntu-Versionen gültig.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. ⚓︎ Ein Terminal öffnen

  2. ⚓︎ Dateisysteme

  3. ⚓︎ Root-Rechte

Inhaltsverzeichnis
  1. Installation
  2. Aufruf lsattr
  3. Aufruf chattr
  4. Attribute
  5. Beispiele
  6. Dokumentation
  7. Links

Wiki/Icons/terminal.png Einige Dateisysteme[2] stellen für jede Datei einige Bits (flags) für Attribute bereit, dies gilt insbesondere für das Dateisystem ext2 und dessen Nachfolger ext3 und ext4. Zur Anzeige dieser Attribute dient das im Zuge von ext2 mit entwickelte Programm lsattr, und chattr ermöglicht die Änderung dieser Flags. Das funktioniert auch für weitere bei Linux übliche Typen von Dateisystemen lt. Tabelle 1:

  1. 12 Bits werden für Dateiberechtigungen verwendet. ▶ Dateirechte

  2. Weitere Bits werden für spezielle Aufgaben verwendet und dienen zur Steuerung des Dateisystemtreibers. Nur diese behandelt dieser Artikel. Dabei kennen die einzelnen Typen von Dateisystemen unterschiedlich viele Attribute und teilweise auch mit unterschiedlicher Bedeutung. Dieser Artikel fokussiert sich auf das Dateisystem ext4.

  3. Manche Dateisysteme, beispielsweise FAT, exFAT und NTFS kennen konzeptionell ähnliche Dateiattribute (RHSDVA in Tabelle 1, z.B. READONLY, HIDDEN, ARCHIVE u.a.), die aber mit den Attributen aus Sicht von Linux nicht kompatibel sind und daher in diesem Artikel auch nicht weiter behandelt werden. Sie sind teilweise über Optionen für die Dateisystemtreiber zugänglich. Das alte Programm fatattr aus dem gleichnamigen Paket kann bei Dateisystemen vom Typ FAT mit ihnen umgehen.

Es gibt auch noch sogenannte „erweiterte Attribute“ in Form von Paaren der Form Name=Wert. Diese werden nicht hier besprochen, sondern z.B. in diesem Artikel 🇩🇪 vorgestellt. Leider wird im Sprachgebrauch der Ausdruck „erweiterte Attribute“ sehr uneinheitlich verwendet, manchmal versteht man darunter doch die hier besprochenen Attribute oder auch zusätzliche Attribute bei Dateisystemen von MS WIndows lt. obigem Punkt 3.

Installation

Die Programme chattr und lsattr sind im essentiellen Paket

von Ubuntu enthalten und deshalb auf jedem System installiert.

Aufruf lsattr

Des Programm lsattr (list attributes) zeigt die (nur Unix-) Attribute von regulären Dateien; bei Ordnern werden entweder die Attribute der darin enthaltenen Dateien oder die Attribute des Ordners selbst angezeigt. Das funktioniert abhängig vom Typ des Dateisystems lt. Tabelle 1 unterschiedlich gut oder auch gar nicht. Attribute von anderen Dateitypen wie beispielsweise symbolische Links oder Gerätedateien kann das Programm nicht anzeigen, statt dessen erscheint eine Fehlermeldung auf dem Standard-Fehlerkanal.

Man startet das Programm im Terminal[1] mit dieser generellen Syntax:

lsattr OPTIONen DATEIen 

Beispiele

Aufruf chattr

Das Programm chattr (change attributes} ändert (nur Unix-) Attribute von Dateien oder Ordnern in unterstützten Dateisystemen lt. folgender Tabelle.

⚓︎

Tabelle 1: Unterstützte Dateisysteme
DateisystemUnterstützung durchAttribute
TypTreiberlsattrchattrUnixWindowsBemerkungen
ext2 ext4 jajaaA dD i Su
ext3 ext4 jajaaA dD ij Su
ext4 ext4 jajaaA dDeij Su
BtrfsbtrfsjajaaAcCdD i mS V
XFS xfs jajaaA d i S
JFS jfs jajaa i
FAT12/16/32 vfatneinnein RHSVDA
exFAT exfatneinnein RHSVDA
NTFS ntfs3 ja nein RHSVDA
&
weitere 9
lsattr zeigt zwar etwas an, es ist aber völlig unklar, wie die Attribute gesetzt werden können.
ntfs-3g
Weitere siehe Dokumentation.

Man startet das Programm im Terminal[1] mit dieser generellen Syntax:

chattr OPTIONen MODUS DATEIen 

Beispiele

Attribute

Die Attribute lt. folgender Tabelle 2 können vom Besitzer der Datei mit chattr verändert werden, sofern nicht extra etwas anderes gesagt wird:

Tabelle 2: Kennbuchstaben von änderbaren Attributen und deren Bedeutung
AttributBedeutung
a Datei kann nur im append-Modus zum Schreiben geöffnet werden. Es kann also neuer Inhalt nur am Ende der Datei angefügt, aber vorhandener Inhalt nicht gelöscht oder überschrieben werden. Anm. 1, 2
A Zeitstempel atime für den Zeitpunkt des letzten Zugriffes wird nicht gepflegt.
c Datei wird vom Kernel beim Schreiben automatisch komprimiert und beim Lesen automatisch wieder entpackt. Anm. 3
C Schaltet in Dateisystemen mit Copy-on-write dieses für einzelne Dateien aus. Man sollte dieses Attribut nur für leere reguläre Dateien und Ordner setzen. Bei Ordnern erben es alle zukünftig darin abgelegten Dateien.
d Das Programm dump ignoriert die Datei.
D Nur sinnvoll bei Ordnern. Änderungen werden synchron auf den Datenträger geschrieben.
F Nur sinnvoll bei Ordnern. Jede Suche nach Dateien in einem so markierten Ordner ignoriert Groß-/Kleinschreibung. Das Attribut kann nur für leere Ordner geändert werden und natürlich nur in einem Dateisystem, welches es unterstützt und in dem es auch aktiviert wurde.
i Dies ist ein erweiterter Schreibschutz, der neben dem Inhalt auch die Verwaltungsdaten im Inode und im Ordner unveränderlich (immutable) macht. Dateien mit diesem Attribut können nicht umbenannt, nicht gelöscht und nicht modifiziert werden und man kann auch keinen weiteren Dateinamen (Hardlink) vergeben. Der Dateiinhalt kann auch nicht an eine andere Stelle im Dateisystem verlagert werden. Auch root kann vorgenannte Veränderungen nicht durchführen. Anm. 1
Kopieren und symbolische Links (Softlinks) sind weiterhin möglich.
j Nur relevant bei Dateisystemen mit Journal (wie z.B. ext3 oder ext4) bei Verwendung der Mount-Optionen date=ordered oder data=writeback. Bei Dateien mit diesem Attribut wird bei Änderungen des Dateiinhalts der vollständige neue Dateiinhalt zuerst in das Journal geschrieben und danach in die Datei selbst. Bei Verwendung der Mount-Option data=journal werden ohnehin alle Dateien so behandelt, und das Attribut bewirkt nichts. Anm. 1, 2
m In Dateisystemen, die Dateien automatisch komprimieren, dies für diese Datei abschalten.
P Nur sinnvoll bei Ordnern in Dateisystemen, welche eine Zuordnung von Datei zu Projekten unterstützen. Bei gesetztem Attribut werden die Restriktionen dieser Projektverwaltung beachtet.
s Beim Löschen einer Datei mit diesem Attribut wird ihr Inhalt mit Nullen überschrieben und nicht nur als überschreibbar markiert. Anm. 3
S Nicht sinnvoll bei Ordnern. Änderungen werden synchron auf den Datenträger geschrieben.
t Schaltet tail-merging ab. "Tail merging" bedeutet, dass freier Platz im letzten Cluster einer Datei für eine andere Datei verwendet werden kann. Das Dateisystem ext4 benutzt diese Technik generell nicht. Anm. 3
T Nur sinnvoll bei Ordnern. Ein gesetztes Attribut markiert den Ordner als Wurzel einer Hierarchie für den Orlov block allocator 🇬🇧. Unterschiedliche Hierarchien werden nach Möglichkeit in unterschiedlichen Blockgruppen, jedenfalls möglichst weit entfernt voneinander gespeichert; das kann Zugriffe beschleunigen.
u Beim Löschen der Datei wird ihr Inhalt ins Journal verschoben; aus diesem kann eine so gelöschte Datei wieder hergestellt werden. Anm. 3
x Schaltet DAX (direct access) 🇬🇧 ein, sofern der Kernel es unterstützt und es nicht per Mount-Option dax=never abgeschaltet wurde. Bei Ordnern gilt eine Aktivierung auch rekursiv für seinen Inhalt, aber nur für neue Einträge nach den Setzen des Attributs.

⚓︎ Anmerkungen:

  1. Attribut verändern erfordert Root-Rechte[3].

  2. Bei einer bereits geöffneten Datei bewirkt Setzen des Attributs nichts.

  3. Das Attribut ist zwar bei Dateisystemen ext2/3/4 implementiert, aber die Funktionalität selbst ist noch nicht freigegeben (Stand 2023) und funktioniert höchstens in experimentellen Versionen.

Die Attribute lt. folgender Tabelle 3 werden bei Bedarf automatisch vom Kernel gesetzt und können nicht mit chattr verändert werden.

Tabelle 3: Kennbuchstaben von abfragbaren Attributen und deren Bedeutung
AttributBedeutung
e Teile des Dateiinhalts sind in sog. extends gespeichert, das sind Gruppen von aufeinander folgenden Clustern, die als Gruppe und nicht als einzelne Cluster verwaltet werden.
E Veraltet: Vom Kernel komprimierte Datei mit Fehler.
Aktuell: Verschlüsselte (encrypted) reguläre Datei, Ordner oder symbolischer Link
I Nur sinnvoll bei Ordnern. Attribut gibt an, wie die Namen der im Ordner enthalten Dateien organisiert sind: Bei gelöschten Bit wird eine Liste der Namen (Klartext) sequentiell gelesen; bei gesetztem Bit wird in einem Baum Prüfsummen (hashes) der Dateinamen gesucht.
N Teile des Dateiinhaltes sind im Inode gespeichert.
V Die Datei ist schreibgeschützt und verifiziert, d.h. bei jedem Lesen des Inhalts wird dieser mit Hilfe einer Prüfsumme auf Veränderungen geprüft.
X Veraltet: Diese vom Kernel automatisch komprimierte Datei kann auch als solche, also ohne automatische Inflation gelesen werden.
Z Veraltet: Vom Kernel komprimierte Datei mit Fehler.

Beispiele

⚓︎

Dokumentation

Die Programme lsattr und chattr haben jeweils eine eigene Manpage:

man lsattr
man chattr 

Verwandte Befehle sind: