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.