Wie man den Befehl Chattr unter Linux verwendet

Der Befehl chattr (change attribute) in Linux ist ein mächtiges Werkzeug, um die Attribute von Dateien auf einem ext2, ext3 oder ext4 Dateisystem zu ändern. Er ermöglicht es, bestimmte Attribute zu setzen, die bestimmen, wie auf Dateien zugegriffen und sie verändert werden können. Mit der Option +i kann eine Datei zum Beispiel unveränderbar gemacht werden, d. h. sie kann nicht verändert, gelöscht oder umbenannt werden, auch nicht vom Root-Benutzer, bis das Attribut entfernt wird. Andere Attribute sind +a, mit dem eine Datei nur im Append-Modus geöffnet werden kann, und +c, das die Datei für die Komprimierung markiert. Dieser Befehl ist besonders nützlich für Systemadministratoren, die strenge Zugriffskontrollen durchsetzen und wichtige Systemdateien vor versehentlichen oder böswilligen Änderungen schützen müssen. Der Befehl chattr muss mit Vorsicht verwendet werden, da eine unsachgemäße Verwendung den Zugriff auf Dateien auf ungewollte Weise einschränken kann.

Voraussetzungen

  • Ein Server mit einem Linux-Betriebssystem.
  • Ein Root-Passwort ist auf dem Server konfiguriert.

Grundlegende Syntax

Die grundlegende Syntax des chattr-Befehls wird im Folgenden dargestellt:

chattr [OPTIONS] [OPERATOR][ATTRIBUTES] FILE

Im Folgenden werden die einzelnen Optionen kurz erklärt:

  • +: Wird verwendet, um die spezifischen Attribute zur Datei hinzuzufügen.
  • -: Wird verwendet, um bestimmte Attribute aus der Datei zu entfernen.
  • =: Wird verwendet, um die angegebenen Attribute als einzige Attribute festzulegen.
  • a: Kann nur im Append-Modus zum Schreiben geöffnet werden.
  • A: Der Zeitdatensatz wird nicht aktualisiert.
  • c: Wird die Datei automatisch komprimiert.
  • i: Schützt deine Datei vor versehentlichem Löschen.
  • S: Dateiänderungen werden synchron auf die Festplatte geschrieben.

Datei vor versehentlichem Löschen schützen

Das Sichern wichtiger Dateien ist für jeden Systemadministrator sehr wichtig. Du kannst den Befehl chattr verwenden, um deine Datei zu schützen, damit kein Benutzer sie löschen, umbenennen oder verändern kann.

Zum besseren Verständnis erstellst du mit dem folgenden Befehl ein Verzeichnis namens dir1 und eine Datei namens file1:

mkdir dir1
touch file1

Als Nächstes gibst du die Attribute von file1 und dir1 mit dem folgenden Befehl aus:

ls -l

Ausgabe:

drwxr-xr-x 2 root root 4096 May  3 11:56 dir1
-rw-r--r-- 1 root root    0 May  3 11:56 file1

Als Nächstes setzt du die Flags +i sowohl bei dir1 als auch bei file1, um zu verhindern, dass jemand eine Datei löscht.

chattr +i dir1
chattr +i file1

Als Nächstes überprüfst du die Attribute mit folgendem Befehl

ls -l

Ausgabe:

drwxr-xr-x 2 root root 4096 May  3 11:56 dir1
-rw-r--r-- 1 root root    0 May  3 11:56 file1

Versuche nun, Datei und Verzeichnis zu löschen:

rm -rf file1 dir1

Ausgabe:

rm: cannot remove ‘file1’: Operation not permitted
rm: cannot remove ‘dir1’: Operation not permitted

Versuche nun, die Datei umzubenennen:

mv file1 file2

Ausgabe:

mv: cannot move ‘file1’ to ‘file2’: Operation not permitted

Versuche jetzt, die Berechtigung der Datei zu ändern:

chmod 777 file1

Ausgabe:

chmod: changing permissions of ‘file1’: Operation not permitted

Attribute von Dateien zurücksetzen

Du kannst auch den Befehl chattr verwenden, um die Dateiattribute zurückzusetzen, die wir im vorherigen Schritt festgelegt haben. So kann jeder die Datei ändern und löschen.

Du kannst das Flag -i verwenden, um das Attribut aus der Datei und dem Verzeichnis zu entfernen:

chattr -i file1 dir1

Du kannst den Status der Datei und des Verzeichnisses nun mit dem folgenden Befehl überprüfen:

lsattr

Ausgabe:

-------------e-- ./dir1
-------------e-- ./file1

Erlauben, Daten anzuhängen, ohne bestehende Daten in einer Datei zu ändern

Wenn du allen Benutzern nur das Anhängen von Daten erlauben willst, ohne die bestehenden Daten zu ändern oder zu modifizieren. Dann kannst du das Flag +a in der Datei verwenden.

Erstellen wir eine neue Datei mit einigen Inhalten:

echo "Hi How Are You" > newfile.txt

Als Nächstes setzt du das Attribut +a für die Datei:

chattr +a newfile.txt

Versuche nun, den bereits vorhandenen Inhalt zu ersetzen:

echo "I am replacing" > newfile.txt

Du solltest die folgende Fehlermeldung erhalten:

bash: newfile.txt: Operation not permitted

Versuche nun, einen neuen Inhalt an eine bestehende Datei anzuhängen:

echo "This is new content" >> newfile.txt

Überprüfe jetzt den Inhalt einer Datei:

cat newfile.txt

Ausgabe:

Hi How Are You
This is new content

Verzeichnisse rekursiv schützen

Du kannst das Flag -R mit +i verwenden, um das Verzeichnis und die Unterverzeichnisse rekursiv zu schützen.

Erstelle zunächst ein Verzeichnis und Unterverzeichnisse mit dem folgenden Befehl:

mkdir -p test/dir1/dir2
mkdir -p test/dir3/dir4
mkdir -p test/dir5/dir6

Sichere nun das Testverzeichnis und alle Unterverzeichnisse mit dem folgenden Befehl:

chattr -R +i test

Versuche nun, das Testverzeichnis mit allen Unterverzeichnissen zu löschen:

rm -rf test/

Du solltest die folgende Fehlermeldung erhalten:

rm: cannot remove ‘test/dir1/dir2’: Permission denied
rm: cannot remove ‘test/dir5/dir6’: Permission denied
rm: cannot remove ‘test/dir3/dir4’: Permission denied

Setze nun das Attribut des Testverzeichnisses mit folgendem Befehl zurück:

chattr -R -i test

Du kannst nun das Testverzeichnis mit allen Unterverzeichnissen löschen.

Fazit

In der obigen Anleitung hast du gelernt, wie du Dateien und Verzeichnisse mit dem Befehl chattr schützen kannst. Ich hoffe, das hilft dir, deine wichtigen Konfigurationsdateien zu schützen.

Das könnte dich auch interessieren …