GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Chattr-Befehl in Linux (unveränderliches Bit setzen)

Chattr (Attribut ändern) ist ein Befehlszeilen-Linux-Dienstprogramm, das zum Ändern der Dateiattribute verwendet wird. Es kann bestimmte Attribute für eine Datei im Linux-System festlegen und zurücksetzen, um ein versehentliches Löschen oder Ändern wichtiger Dateien und Ordner zu verhindern, selbst wenn Sie als Root-Benutzer angemeldet sind.

Mit dem Befehl chattr machen Sie die Datei also unveränderlich. Mit anderen Worten bedeutet dies, dass es verwendet wird, um das versehentliche Löschen von Dateien und Verzeichnissen zu stoppen. Sie können die über das Chattr-Attribut gesicherten Dateien nicht löschen, obwohl Sie die volle Berechtigung für Dateien haben.

Dies ist sehr nützlich in Systemdateien wie shadow- und passwd-Dateien, die alle Benutzerinformationen und Passwörter enthalten. Diese Attribute können nur für Dateien und Verzeichnisse gesetzt werden, die sich in einem ext2-, ext3- oder ext4-Dateisystem befinden.

Syntax des Chattr-Befehls und Verwendung

Unten ist die Syntax für den Chattr-Befehl:

       chattr [ -RVf ] [ -v version ] [ mode ] files...

Dateiattribute, die wir mit dem Chattr-Befehl verwenden können:

  • a - Die Datei kann nur im Append-Modus zum Schreiben geöffnet werden.
  • A - Der Zeiteintrag der Datei wird nicht geändert. Dies vermeidet eine gewisse Menge an Festplatten-I/O für Laptop-Systeme.
  • c - Die Datei wird vom Kernel automatisch auf der Festplatte komprimiert. Ein Lesevorgang aus dieser Datei gibt unkomprimierte Daten zurück. Ein Schreibvorgang in diese Datei komprimiert Daten, bevor sie auf der Festplatte gespeichert werden.
  • C - Die Datei unterliegt keinen Copy-on-Write-Updates. Dieses Flag wird nur auf Dateisystemen unterstützt, die Copy-on-Write ausführen. Wenn das 'C'-Flag auf ein Verzeichnis gesetzt ist, hat es keine Auswirkung auf das Verzeichnis
  • d - Die Datei ist kein Backup-Kandidat, wenn das Dump-Programm ausgeführt wird.
  • D - Wenn ein Verzeichnis geändert wird, werden die Änderungen synchron auf die Platte geschrieben; dies entspricht der Einhängeoption 'dirsync', die auf eine Teilmenge der Dateien angewendet wird.
  • i - Datei kann nicht geändert, gelöscht oder umbenannt werden, es kann keine Verknüpfung zu dieser Datei hergestellt werden und es können keine Daten in die Datei geschrieben werden. Nur der Superuser kann dieses Attribut setzen oder löschen.
  • j - Alle Daten der Datei werden in das ext3- oder ext4-Journal geschrieben, bevor sie in die Datei selbst geschrieben werden,
  • s - Wenn die Datei gelöscht wird, werden ihre Blöcke genullt und auf die Festplatte zurückgeschrieben.
  • S - wenn die Datei geändert wird, werden die Änderungen synchron auf die Platte geschrieben; dies entspricht der Einhängeoption 'sync', die auf eine Teilmenge der Dateien angewendet wird.
  • t - Die Datei hat kein partielles Blockfragment am Ende der Datei, die mit anderen Dateien zusammengeführt wird
  • T - Das Verzeichnis wird für die Zwecke des Orlov-Blockzuordners als die Spitze der Verzeichnishierarchien betrachtet.
  • u - sorgt dafür, dass beim Löschen einer Datei deren Inhalt gespeichert wird. Dadurch kann der Benutzer die Wiederherstellung verlangen

1) So setzen Sie das Dateiattribut (Setze unveränderliches Bit)

Um ein Dateiattribut festzulegen, verwenden wir den Chattr-Befehl mit + Operator gefolgt vom Attributnamen.

Lassen Sie uns anhand von Beispielen überprüfen, wie Sie ein unveränderliches Attribut für eine Datei festlegen. Nur root oder Benutzer mit sudo-Berechtigung können das unveränderliche Flag für eine Datei setzen und entfernen.

Eine Datei mit einem unveränderlichen Attribut:

  • Kann nicht geändert, gelöscht oder umbenannt werden
  • Kein weicher oder fester Link kann von irgendjemandem erstellt werden, einschließlich des Root-Benutzers.
  • Es können keine Daten in die Datei geschrieben werden

Lassen Sie uns eine leere Datei mit dem Touch-Befehl wie folgt erstellen:

$ touch file1

Sehen wir uns nun an, wie Attribute der Datei mit lsattr aufgelistet werden Befehl:

$ lsattr 
-------------e-- ./nagios-cookbook-tutorial
-------------e-- ./chefdk_1.3.40-1_amd64.deb
-------------e-- ./file1

Fügen Sie der Datei mit dem Echo-Befehl etwas Inhalt hinzu:

$ echo "Test of i attribute" > file1 
$ cat file1 
Test of i attribute

Jetzt können wir das unveränderliche Attribut mit +i setzen auf die Datei (Datei1).

$ sudo chattr +i file1
$ lsattr 
-------------e-- ./nagios-cookbook-tutorial
-------------e-- ./chefdk_1.3.40-1_amd64.deb
----i--------e-- ./file1

In den folgenden Befehlen werden wir versuchen, sowohl den normalen Benutzer als auch den Sudo-Benutzer (root) anzuhängen und zu löschen:

$ echo "Try to edit after set i attribute" >> file1 
-bash: file1: Permission denied
$ sudo echo "Try to edit after set i attribute" >> file1 
-bash: file1: Permission denied
$ rm -f file1 
rm: cannot remove 'file1': Operation not permitted
$ sudo rm -f file1 
rm: cannot remove 'file1': Operation not permitted

Wir können beobachten, dass vor allem Operationen nicht erlaubt sind.

Hinweis: Sie können wichtige Dateien als /etc/passwd schützen oder /etc/shadow , schützt sie vor versehentlichem Entfernen oder Manipulieren und deaktiviert die Erstellung von Benutzerkonten. Aber wenn Sie versuchen, einen neuen Systembenutzer zu erstellen, erhalten Sie eine Fehlermeldung, die besagt, dass /etc/passwd nicht geöffnet werden kann. Wenn Sie versuchen, das Passwort zu ändern, werden Sie aufgefordert, ein neues Passwort einzugeben, aber wenn Sie sich das nächste Mal anmelden, scheint das neue Passwort nicht gültig zu sein, Sie müssen das alte Passwort verwenden, um sich anzumelden.

2) So entfernen Sie Attribute (nicht gesetzt) ​​von Dateien

Um ein Attribut aus der Datei zu entfernen, müssen wir - verwenden Operator gefolgt vom Attributnamen.

Lassen Sie uns im folgenden Beispiel das unveränderliche Attribut der Datei (Datei1) zurücksetzen.

$ sudo chattr -i file1 
$ lsattr file1
-------------e-- ./file1

Sie sollten jetzt in der Lage sein, alle normalen Operationen mit der Datei durchzuführen.

3) Wie man Verzeichnisse mit dem 'i'-Attribut sichert

Um das Verzeichnis zu sichern, müssen wir das Attribut rekursiv (-R) mit + setzen Betreiber.

Der folgende Befehl setzt das unveränderliche Bit im Verzeichnis ('linoxide') rekursiv:

$ sudo chattr -R +i linoxide/ 
$ lsattr -d linoxide
----i--------e-- linoxide/

Zum Deaktivieren müssen Sie - verwenden Operator gefolgt von i Attribut.

$ sudo chattr -R -i linoxide/

4) Daten in der Datei anhängen, ohne bestehende Daten zu ändern

Mit dem a ist es möglich, jedem zu erlauben, einfach Daten an eine Datei anzuhängen, ohne bereits eingegebene Daten zu ändern oder zu modifizieren Attribut.

Das bedeutet, dass Sie Inhalte nur zur aktuellen Datei hinzufügen können, ohne bereits vorhandene Daten zu ändern.

Die folgenden Beispiele setzen das Attribut append an die Datei (file2).

$ sudo chattr +a file2

6) Wie man Dateiattribute auflistet

Um die aktuellen Attribute von Dateien oder Verzeichnissen aufzulisten, müssen wir den Befehl lsattr verwenden. Der folgende Befehl listet Dateiattribute für alle Dateien und Ordner im aktuellen Verzeichnis auf:

$ lsattr 
-------------e-- ./coreutils-8.22-18.el7.x86_64.rpm
-------------e-- ./pac
-------------e-- ./utils
-------------e-- ./linox

Sie können das Dateiattribut einer Single mit dem folgenden Befehl überprüfen:

$ lsattr coreutils-8.22-18.el7.x86_64.rpm 
-------------e-- coreutils-8.22-18.el7.x86_64.rpm

Um die Attribute eines Verzeichnisses zu prüfen, verwenden Sie -d Möglichkeit

$ lsattr -d test
-------------e-- test/

Schlussfolgerung

Jetzt wissen wir, wie wir unsere Dateien und Ordner mit dem Chattr-Befehl in Linux schützen können. Ich hoffe, dass Ihnen das Lesen dieses Tutorials gefallen hat, und hinterlassen Sie bitte Ihre Vorschläge im Kommentarbereich unten. Weitere Informationen finden Sie unter man chattr.


Linux
  1. chattr-Befehl unter Linux mit Beispielen

  2. Linux-wc-Befehl

  3. Linux grep-Befehl

  4. ln-Befehlsbeispiele in Linux

  5. file Befehlsbeispiele in Linux

Gzip-Befehl unter Linux

Befehl zum Aufheben der Verknüpfung in Linux (Datei entfernen)

Chmod-Befehl in Linux (Dateiberechtigungen)

Gunzip-Befehl unter Linux

Stat-Befehl unter Linux

Chattr-Befehl in Linux (Dateiattribute)