Dateien und Verzeichnisse Read-Only setzen

Für die Verwaltung von Dateisystemen im Linux-Umfeld gibt es eine Menge Möglichkeiten, Zugriffsrechte für Dateien und Verzeichnisse zu ermöglichen. Zu den bekannteren Vertretern für diese Aufgabe gehören chmod (für die Anpassung der Lese-Schreib-Ausführ-Bits) und chown (um den/die Besitzer festzulegen). Ein eher Unbekannterer Kandidat aus diesem Segment heißt chattr (ausgeschrieben change attribute) und bietet die Möglichkeit, Dateien und Verzeichnisse read-only zu setzen, um beispielsweise deren Bearbeitung oder Löschung zu verhindern.
Ein kleiner Hinweis zu Beginn dieses Beitrags; Um dieses Tool verwenden zu können wird ein ext2-, ext3- oder ext4-Dateisystem vorausgesetzt.

Das Tool ist Teil des Programmpakets e2fsprogs und sollte bereits in allen gängigen Linux-Distributionen installiert sein. Falls dem nicht so ist, kann dies nachgeholt werden:

sudo apt install e2fsprogs

Mit dem nachfolgenden Befehl lassen sich die Attribute einer Datei anzeigen. Als Beispiel dient hier ein SSH private-key:

sudo lsattr /root/.ssh/id_rsa

Neben zahlreichen Strichen bekommen wir ein einsames e ausgegeben. Was dieses e in der langen Form bedeutet, können wir uns mit dem Zusatzparameter -l anzeigen lassen.

sudo lsattr -l /root/.ssh/id_rsa

Das Extents sieht schon etwas lesbarer. Was sich nun tatsächlich dahinter verbirgt, verrät uns die Manpage des Kommandos, aufrufbar hierüber:

man lsattr

### Auszug aus der lsattr-Manpage
e      The 'e' attribute indicates that the file is using extents for mapping the blocks on disk.  It may not be removed using chattr(1).

Dort aufgeführt sind auch all die anderen Möglichkeiten, die uns mit dem Tool chattr bereitstehen. Folgendermaßen können wir eine Datei nun read-only zu setzen:

sudo chattr +i /root/.ssh/id_rsa

Der Manpage Eintrag klärt uns auf, was dieser Befehl denn genau tut:

i - A  file  with the 'i' attribute cannot be modified: it cannot be deleted or renamed, no link can be created to this file, most of the file's metadata can not be modified, and the file cannot  be opened in write mode.  Only the superuser or a process possessing the CAP_LINUX_IMMUTABLE capability can set or clear this attribute.

Die modifizierte Datei ist nun Immun gegen Änderungen und lässt sich auch nicht mehr schreibend öffnen. Nur der Superuser hat die Möglichkeit, dieses Attribut wieder zu entfernen. Um den Status der Datei nochmals zu überprüfen, verwenden wir wieder lsattr.

sudo lsattr ~/.ssh/id_rsa

Das Attribut i hat sich nun also dazugesellt. Um dieses wieder zu entfernen, gehen wir denselben Weg wie eben, tauschen das + allerdings durch ein – aus:

sudo chattr -i /root/.ssh/id_rsa

Somit wäre diese Datei wieder änderbar (sofern natürlich die notwendigen Berechtigungen vorhanden sind 😉 ).
Um den Zugriff auf Dateien nicht gleich rigoros zu sperren sondern noch das hinzufügen weiterer Zeichen zu erlauben, gleichzeitig aber den bestehenden Inhalt noch zu schützen, bedienen wir uns eines anderen Parameters:

sudo chattr +a /root/.ssh/id_rsa

Somit wäre diese Datei vor dem Überschreiben geschützt, kann jedoch weiterhin erweitert werden. Nicht nur Dateien sondern auch Ordner lassen so anpassen:

sudo chattr +i /root/.ssh/

Sollen auch die darunter liegenden Dateien und Unterverzeichnisse erfasst werden, steht uns ein -R Parameter zur Verfügung. Wie es Rekursiv-Funktionen so an sich haben, sollte diese Option mit größter Vorsicht und klarem Verstand verwendet werden. Falsch angewandt, könnte viel Schaden angerichtet werden:

sudo chattr +i -R /root/.ssh/

Als letztes gibt es noch die Möglichkeit, das ausgeführte Kommando Verbose zu benutzen und um sich die Änderungen anzeigen zu lassen:

chattr +i -R -V /root/.ssh/ 

Fazit

chattr ist ein hilfreiches Tool, um Dateien und Ordner vor ungewollten Änderungen zu bewahren. Richtig angewandt, können auch Workarounds prima davon profitieren. Falsch angewandt jedoch, kann das anschließende Debugging in unermessliche Arbeit ausarten. Darum sollte die Verwendung dieses Tools bei klarem Verstand erfolgen und idealerweise auch dokumentiert werden.

Bild von OpenClipart-Vectors auf Pixabay
Bild von Perlinator auf Pixabay

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen