Linux/Dateisystem/ext/Attribute: Unterschied zwischen den Versionen

Aus Foxwiki
Die Seite wurde neu angelegt: „== ext3-/ext4-Dateiattribute == <div style="margin-left:0cm;margin-right:0cm;">+ e</div> <div style="margin-left:0cm;margin-right:0cm;">Status?</div> == Zus…“
 
K Dirkwagner verschob die Seite Linux:Storage:Dateiattribute nach Entwuft:Dirkwagner:Linux:Storage:Dateiattribute, ohne dabei eine Weiterleitung anzulegen
(kein Unterschied)

Version vom 2. August 2020, 12:56 Uhr

ext3-/ext4-Dateiattribute

+ e


Status?

==

Zusätzlich zu der aus dem Dateisystemkonzept von Unix übernommenen Methode, die Datensicherheit durch Reglementierung der Zugriffsrechte zu erhöhen, bietet das ext2fs mit seinen Dateiattributen weitere Mechanismen an, die den Datenschutz in verschiedenen Richtungen verbessern.

Dateien lassen sich seit ext2-0.5a durch die Attribute a (append) und i (immutable) zusätzlich vor Verän­derungen schützen. In den I-Nodes des ext2fs steht ein vier Bytes großes Feld für „Flags zur Verfügung.

Von diesem 32 Bit großen Bereich ist zur Zeit nur die Bedeutung der ersten sieben bit für bestimmte Dateiattribute definiert, der Rest des Feldes steht für zukünftige Erweiterungen bereit. Selbst der erfahrene Linuxer ist vor Fehlern nicht gefeit. Man stelle sich nur vor, man wollte alle Dateien aus einem Unterverzeichnis löschen:

rm -rf ~/DirToDelete/ *

Das Beispiel sieht harmlos aus, birgt aber einen fatalen Fehler in sich: das Leerzeichen zwischen Pfadangabe und dem *. Verschwunden sind nicht die gewünschten Daten, sondern der komplette Inhalt des aktuellen Verzeichnisses (falls man die Berechtigung dazu besaß).

Linux bietet bekannterweise keine zuverlässige Methode des Wiederherstellens gelöschter Daten.

Dafür ermöglicht das Linux-Dateisystem ext2 die Vergabe von Attributen für Dateien und Verzeichnisse. Sicher wird man aus Bequemlichkeit meist auf diese verzichten, aber essentielle Daten lassen sich somit zuverlässig schützen.

Zum Setzen von Attributen dient das Kommando chattr, anzeigen lassen sie sich mittels lsattr.

Übersicht Datei-Attribute


a (append) Eine mit diesem Attribut gekennzeichnete Datei kann nur durch Anhängen zusätzlicher Daten ver­ändert werden. Das überschreiben der bereits gespeicherter Daten, das Löschen, Umbenennen oder Ver­schieben ist nicht möglich.
d (dump) Mit diesem Attribut können Dateien markiert werden, die von der inkrementellen Sicherung durch dump ausgenommen werden sollen.
i (immutable) Eine Datei, die mit diesem Attribut ausgestattet ist, läßt sich in keiner Weise verändern. Sie kann nicht gelöscht oder umbenannt werden, es können keine Links auf sie erzeugt werden und der Inhalt der Datei lässt sich nicht überschreiben oder erweitern. Zum Setzen oder Löschen dieses Attributs sind Rootprivilegien erforderlich.
s (secure) Durch dieses Attribut können Dateien, deren Inhalt besonders vor dem unberechtigten Zugriff an­derer Systembenutzer geschützt werden soll, zum sicheren Löschen markiert werden. Die Datenblöcke wer­den dann beim Löschen durch zufällige Daten überschrieben.
S (Sync) Dieses Attribut veranlaßt den Kernel, jede Veränderung der I-Node synchron durchzuführen. Die ver­änderten Daten werden ungepuffert sofort auf das Speichermedium geschrieben.
u (undelete) Noch ohne Funktion. Durch dieses Attribut soll eine Datei zukünftig auch nach dem Löschen noch intakt gehalten werden, damit das Retten der Daten durch die noch zu entwickelnde undelete-Funktion möglich ist.
c (compressed) Noch ohne Funktion. Dieses Attribut wird einmal den Kernel veranlassen, die entsprechende Datei komprimiert zu speichern.

Veränderungen an den Dateiat­tributen können nur die Benutzer vornehmen, die auch die Datei selbst ver­ändern dürfen (also schreibbe­rechtigt sind).

Nur Anhängen

Beim traditionellen System der Zugriffsregelung wird das Schreiben ganz allgemein entweder erlaubt oder verboten.

Die Erlaubnis erstreckt sich uneingeschränkt auf das Schreiben an jeder beliebigen Stelle der Datei.

Damit bedeutet Schreiben in diesem Sinne sowohl Schreiben als auch Überschreiben.

Das Betriebssystem kann, dem POSIX-Standard entsprechend, zwischen wahlfreiem Schreiben und dem ausschließlichen Schreiben am Ende einer Datei, also dem Anhängen von Daten, unterscheiden.

Das ext2-Dateisystem unterstreicht diese Unterscheidung und führt damit ein zusätzliches Sicherheits­merkmal ein. Durch das append-Attribut a wird jeder Schreibzugriff automatisch am Ende der Datei aus­geführt; es gibt dann keine Möglichkeit, die Schreibposition an eine andere Stelle zu setzen.

Zusätzlich kann eine durch dieses Attribut gesicherte Datei nicht gelöscht, gelinkt, umbenannt oder ver­schoben werden. Dieser Schutz läßt sich auch durch Rootprivilegien nicht umgehen.

Das append-Attribut kann jeder Benutzer für seine eigenen Dateien ändern. Mit Rootprivilegien ist auch das Ändern fremder Dateiattribute möglich.

Einfrieren

Allein die Superuserin kann eine Datei im ext2-Dateisystem völlig einfrieren.

Das immutable-Attribut ver­bietet jeden Schreibzugriff auf eine Datei. Zusätzlich sind wie beim append-Attribut Löschen, Linken, Um­benennen und Verschieben der Datei unmöglich.

Der normale Eigentümer einer Datei kann das immutable-Attribut nicht verändern.

Damit kann ihm durch dieses Attribut jede Veränderung wirksam verboten werden. Diese Restriktion macht für natürliche Sys­tembenutzer keinen Sinn.

Für news, mail und ähnliche Systemaccounts, die sich dadurch auszeichnen, daß viele Programme zur Laufzeit mit den Rechten dieser ``Eigentümer arbeiten, bietet immutable wirksam zusätzliche Sicherheit vor Mißbrauch.

Das immutable-Attribut selbst kann mit Rootprivilegien wieder gelöscht werden.

Einen absoluten Schutz vor unberechtigter Veränderung einer Datei bietet also auch dieses Attribut nicht.

Sicheres Löschen

Beim Löschen einer Datei wird in den Linux-Dateisystemen normalerweise der Verzeichniseintrag gelöscht und die Inode sowie die Datenblöcke freigegeben, wenn der Verzeichniseintrag der letzte für diese Datei war.

Die freigegebenen Datenblöcke werden bei irgendeiner Gelegenheit durch einen anderen Prozeß wieder belegt.

Es ist kein Geheimnis, daß der Inhalt solcher Datenblöcke von dem Prozeß, dem sie zugeteilt wor­den sind, auch gelesen werden kann.

Wenn ein Prozeß den Datenblock liest, bevor er eigene Daten hin­eingeschrieben hat, kann er fremde Daten darin finden.

Um diese unbeabsichtigte Weitergabe von Daten zu verhindern, bietet das ext2-Dateisystem die Möglich­keit, alle von einer Datei belegten Datenblöcke durch zufällige Zeichen zu überschreiben, bevor sie beim Löschen für andere Prozesse freigegeben werden.

Das secure-Attribut schickt die Dateien beim Löschen also durch einen elektronischen Reißwolf.

Sie sollten allerdings bedenken, daß häufig bei der Bearbeitung von Dateien durch andere Programme Ko­pien angelegt werden, die nicht automatisch mit dem secure-Attribut ausgestattet sind.

Synchrones Schreiben

Indem Linux einen Großteil des freien Arbeitsspeichers als Puffer für die relativ langsamen Festplattenzu­griffe nutzt, wird die Geschwindigkeit des System spürbar erhöht.

Diese erhebliche Leistungssteigerung geht zu Lasten der Datensicherheit. Wenn das System nämlich aus irgendeinem Grund abstürzen sollte, sind die im Puffer veränderten, aber noch nicht auf die Festplatte zu­rückgeschriebenen Daten verloren.

Besonders unangenehm wird es, wenn es sich bei den verlorenen Daten um Strukturinformation handelt.

In diesem Fall kann auch die bereits sicher auf der Festplatte befindliche Information unzugänglich wer­den.

Der Verzicht auf die Datenpufferung kommt nicht ernsthaft in Betracht.

Ein Betriebssystem, das mehrere Benutzer und viele Prozesse gleichzeitig bedienen soll, braucht ein sehr schnelles Dateisystem.

Um wenigstens die Sicherheit der bereits auf Festplatte gespeicherten Daten zu optimieren, bietet das ext2-Dateisystem die Möglichkeit, mit dem synchron-Attribut die ungepufferte Verwaltung der Metadaten einer Datei zu erreichen.

Verzeichnis und Inode werden unmittelbar nach ihrer Veränderung auf die Festplatte geschrieben.