Linux/Dateisystem/ext/Attribute: Unterschied zwischen den Versionen
K Textersetzung - „:Linux:“ durch „/Linux/“ |
K Dirkwagner verschob die Seite Linux:Dateisystem:ext:Attribute nach Linux/Dateisystem:ext:Attribute, ohne dabei eine Weiterleitung anzulegen: Textersetzung - „Linux:“ durch „Linux/“ |
(kein Unterschied)
|
Version vom 22. März 2023, 16:15 Uhr
Beschreibung
- 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änderungen 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.
Übersicht
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 Verschieben 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 anderer Systembenutzer geschützt werden soll, zum sicheren Löschen markiert werden. Die Datenblöcke werden 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 Dateiattributen können nur die Benutzer vornehmen, die auch die Datei selbst verändern dürfen (also schreibberechtigt sind).
Anzeigen und ändern
- Zum Setzen von Attributen dient das Kommando chattr, anzeigen lassen sie sich mittels lsattr.
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 Sicherheitsmerkmal ein. Durch das append-Attribut a wird jeder Schreibzugriff automatisch am Ende der Datei ausgefü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 verschoben 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 verbietet jeden Schreibzugriff auf eine Datei. Zusätzlich sind wie beim append-Attribut Löschen, Linken, Umbenennen 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 Systembenutzer 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 worden sind, auch gelesen werden kann.
- Wenn ein Prozeß den Datenblock liest, bevor er eigene Daten hineingeschrieben hat, kann er fremde Daten darin finden.
- Um diese unbeabsichtigte Weitergabe von Daten zu verhindern, bietet das ext2-Dateisystem die Möglichkeit, 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 Kopien 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 Festplattenzugriffe 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 zurü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 werden.
- 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.