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

chattr-Befehlsbeispiele zum Ändern von Dateiattributen (Dateien unveränderlich machen)

Dateien können auch Attribute haben, die anders ausgedrückt werden als die Berechtigungen, die wir bisher gesehen haben. Ein Beispiel dafür ist, eine Datei unveränderlich zu machen (ein schickes Wort, was bedeutet, dass sie nicht geändert werden kann). Eine unveränderliche Datei hat immer noch normale Eigentums- und Gruppen- und RWX-Berechtigungen, erlaubt dem Benutzer jedoch nicht, sie zu ändern, selbst wenn sie die Schreibberechtigung enthält. Eine weitere Eigenschaft davon ist, dass die Datei nicht umbenannt werden kann.

In diesem Beitrag werden wir diskutieren, wie man den Befehl chattr verwendet, um Dateiattribute in Linux zu ändern und die wichtigen Dateien unveränderlich zu machen. chattr steht für Change Attribute. Der Chattr-Befehl ist ein sehr nützliches Tool in Linux und wird verwendet, um Dateiattribute zu ändern. Unveränderlich bedeutet, sobald ich das Attribut für eine Datei mit dem Chattr-Befehl festgelegt habe, können Sie die Datei nicht verschieben, löschen, einen Link zu der Datei erstellen oder die Datei bearbeiten, selbst wenn Sie vollen Zugriff auf diese Datei haben. Root-Benutzer können auch keine Änderungen an dieser Datei vornehmen, bis das Attribut angewendet wird. Sie können den Chattr-Befehl verwenden, um die Attribute der Datei zu setzen und zu löschen. Root-Benutzer haben nur Zugriff auf das Setzen oder Aufheben von Attributen von Dateien und Verzeichnissen mit dem Chattr-Befehl.

Schauen wir uns also einige Beispiele für den Chattr-Befehl zum Ändern von Dateiattributen an:

Setzen Sie das „i“-Attribut auf eine Datei

Angenommen, ich habe eine Datei namens geek.txt, auf die jeder zugreifen kann. Das bedeutet, dass jeder Benutzer kommen und diese Datei löschen, verschieben oder bearbeiten kann. Sehen Sie sich die Ausgabe unten an.

# ls -l geek.txt 
-rwxrwxrwx. 1 root root 0 Apr 24 03:59 geek.txt     # Everyone has full access to "geek.txt"
# rm geek.txt    # I am able to delete the file
rm: remove regular empty file `geek.txt'? y

Lassen Sie uns nun das Attribut mit dem Befehl chattr auf die Datei geek.txt setzen. Um das Attribut zu setzen, müssen wir das „+“-Zeichen verwenden und um das Attribut zu deaktivieren, müssen wir das „–“-Zeichen verwenden.

# chattr +i geek.txt       # Setting Attribute to a file

Wo,
ich – Steht für Unveränderlich.

Sie können auch -V verwenden Option, um die ausführliche Ausgabe zu überprüfen, während das Attribut auf eine Datei gesetzt wird.

# chattr -V +i geek.txt     # Setting attribute to a file with -V
chattr 1.41.12 (17-May-2010)
Flags of geek.txt set as ----i--------e-

Also setzen wir das Attribut auf die Datei geek.txt. Um dasselbe zu bestätigen, können Sie den Befehl lsattr verwenden. Siehe die Beispielausgabe unten. Sie werden ein i (hervorgehoben in roter Farbe) im Berechtigungsabschnitt der Datei bemerken.

# lsattr geek.txt    # confirm if attribute set or not
----i--------e- geek.txt

Versuchen wir nun, die Berechtigung der Datei zu entfernen, zu löschen, zu verschieben und zu ändern, und ich bin sicher, dass Sie nichts davon tun können.

1. Entfernen Sie die Datei:

# rm geek.txt        # Removing the File
rm: remove regular empty file `geek.txt'? y
rm: cannot remove `geek.txt': Operation not permitted
# You can also try to remove the file forcefully.
# rm -rf geek.txt  # Removing the file forcefully
rm: cannot remove `geek.txt': Operation not permitted

2. Verschieben Sie die Datei:

# mv geek.txt test.txt        # Move the file
mv: cannot move `geek.txt' to `test.txt': Operation not permitted

3. Bearbeiten Sie die Datei:

# cat >> geek.txt 
bash: geek.txt: Permission denied

4. Berechtigung der Datei ändern:

# chmod 755 geek.txt 
chmod: changing permissions of `geek.txt': Operation not permitted

Wie Sie an allen obigen Beispielen sehen können, können wir an dieser Datei keine Änderungen vornehmen.

Entfernen des Attributs -i (unveränderlich) aus den Dateien

Verwenden Sie den folgenden Befehl, um das „i“-Attribut zu entfernen.

# chattr -i geek.txt    # Unset "i" attribute

Nach dem Entfernen des Attributs sehen Sie, dass der Berechtigungsabschnitt leer wird.

# lsattr geek.txt     
--------------- geek.txt

Ein Verzeichnis mit chattr unveränderlich machen

Versuchen wir nun, ein Verzeichnis zu sichern, indem wir sein Attribut rekursiv mit dem Befehl chattr ändern. Hier habe ich ein Verzeichnis namens data und jeder hat rekursiv vollen Zugriff auf dieses Verzeichnis. Sehen Sie sich die Beispielausgabe unten an.

# mkdir data
# chmod -R 777 data/
# ls -l
total 4
drwxrwxrwx. 2 root root 4096 Apr 24 04:25 data

Setzen Sie nun das Attribut auf dieses Verzeichnis.

# chattr +i data/
# lsattr 
----i--------e- ./data

Sie können das Attribut auch rekursiv setzen, indem Sie die Option -R mit chattr.

verwenden
# chattr -R +i data/

Nachdem Sie das Attribut auf das Verzeichnis gesetzt haben, versuchen Sie nun, eine Datei zu löschen, zu verschieben oder zu erstellen. Ich bin sicher, dass Sie dies nicht tun dürfen. Sehen Sie sich die Beispielausgabe unten an.

# rmdir data/        # Deleting the Directory
rmdir: failed to remove `data/': Operation not permitted
# rm -rf data/        # Deletiing the Directory Forcefully
rm: cannot remove `data': Operation not permitted
# mv data/ mydata       # Moving the Directory
mv: cannot move `data/' to `mydata': Operation not permitted
# cd data/
# cat > test.txt       # Creating a File in the directory
bash: test.txt: Permission denied

Wo können wir den Chattr-Befehl tatsächlich verwenden?

Nehmen wir ein Beispiel:Als Linux-Administrator möchten Sie natürlich nicht, dass jemand auf Ihre Konfigurationsdateien zugreift, Änderungen an Dateien vornimmt oder Konfigurationsdateien entfernt oder sie missbraucht. Es liegt in Ihrer Verantwortung, es sicher zu machen und vor falschen Händen zu schützen, die nicht berechtigt sind, darauf zuzugreifen. Wir können unser gesamtes Konfigurationsmaterial mit dem Chattr-Befehl sichern.

Unter Linux werden alle Konfigurationsdateien im Verzeichnis /etc gespeichert. Wenn wir das Attribut auf das /etc-Verzeichnis setzen, kann niemand auf Ihre Konfigurationen zugreifen. Also lass uns das tun.

# chattr +i /etc/     # Setting attribute to /etc directory

Versuchen wir nun, einige Aufgaben zu erledigen:

Beispiele:1 Erstellen Sie eine Gruppe

# groupadd g5
groupadd: cannot lock /etc/group; try again later.

Beispiel:2 Legen Sie ein Passwort für einen beliebigen Benutzer fest

# passwd michelle
Changing password for user michelle.
New password: 
Retype new password: 
passwd: Authentication token manipulation error

Beispiel:3 Erstellen Sie einen neuen Benutzer

# useradd thegeekdiary
useradd: cannot lock /etc/passwd; try again later.

Wie Sie oben sehen können, können wir einige Aufgaben nicht ausführen, z. B. einen neuen Benutzer erstellen, ein Passwort für einen Benutzer festlegen oder eine neue Gruppe erstellen. Wir können nicht alle diese Aufgaben erledigen, denn wenn wir einen neuen Benutzer erstellen oder ein Passwort für einen Benutzer festlegen, werden die Dateien /etc/passwd und /etc/shadow aktualisiert, was hier nicht möglich ist, da wir das Attribut für das vollständige /etc-Verzeichnis festlegen.

Hinweis :Hier setze ich Attribute auf das komplette /etc-Verzeichnis, um es Ihnen nur als Beispiel zu erklären. Sie können Dateiattribute jedoch nach Bedarf festlegen, wenn Sie beispielsweise nur die Benutzer- und Gruppenverwaltung steuern möchten, müssen Sie das Attribut nicht für das vollständige /etc-Verzeichnis festlegen, sondern nur für /etc/passwd und /etc/shadow und für Gruppen Attribut für /etc/group setzen. Wenn Sie die Dateisystemtabelle steuern möchten, setzen Sie das Attribut für /etc/fstab und so weiter.

Nehmen wir nun ein weiteres Beispiel und hängen ein Dateisystem aus. Sehen Sie sich die Beispielausgabe unten an.

Beispiel:4 Unmounten eines Dateisystems

# umount /media/       # Unmounting a File System
can't create lock file /etc/mtab~2762: Permission denied (use -n flag to override)

Wir können auch kein Dateisystem aushängen. Um alle oben genannten Aufgaben zu erledigen, müssen wir Attribute zurücksetzen, die wir für das /etc-Verzeichnis angewendet haben.

Attribut mit chattr-Befehl zurücksetzen

Wir können das Attribut zurücksetzen, indem wir den Chattr-Befehl mit der Option -i verwenden.

# chattr -Vi /etc/         # Removing Attributes from directory
chattr 1.41.12 (17-May-2010)
Flags of /etc/ set as ----------I--e-

Ermöglichen Sie das Anhängen einer Datei mit dem Chattr-Befehl

Sie können einer Datei erlauben, Daten mit dem Befehl chattr mit der Option +a anzuhängen. Durch Anwenden dieses Attributs dürfen Sie nur Daten in diese Datei schreiben und nicht löschen und verschieben.

Hier erlaube ich Benutzern, Daten an die Datei thegeekdiary.txt anzuhängen.

# chattr +a thegeekdiary.txt         # Setting +a Attribute

Verwenden Sie den folgenden Befehl, um das angewendete Attribut zu überprüfen. Sie werden einen Berechtigungsabschnitt bemerken.

# lsattr thegeekdiary.txt 
-----a-------e- thegeekdiary.txt

Wie Sie unten sehen können, können wir den Inhalt der Datei sehen.

# cat thegeekdiary.txt 
Welcome to thegeekdiary.com

Versuchen wir nun, einige Daten in die Datei einzufügen.

# cat >> thegeekdiary.txt      # Writing some data
Here you will get Linux Tutorials

# Bestätigen Sie nun dasselbe mit dem cat-Befehl

# cat thegeekdiary.txt 
Welcome to thegeekdiary.com
Here you will get Linux Tutorials

So können wir erfolgreich Daten in thegeekdiary.txt anhängen. Versuchen wir nun, die Datei zu löschen.

# rm thegeekdiary.txt        # Deleting the File
rm: remove regular file `thegeekdiary.txt'? y
rm: cannot remove `thegeekdiary.txt': Operation not permitted
# rm -rf thegeekdiary.txt        # Deleting the File Forcefully
rm: cannot remove `thegeekdiary.txt': Operation not permitted

Für weitere Informationen zum Chattr-Befehl können Sie die folgenden Befehle auf Ihrem Linux-System verwenden.

# man chattr
# man lsattr

Sehen Sie sich einige nützliche Chattr-Befehlsoptionen an:

  • +i – Eine Datei mit dem Attribut +i kann nicht gelöscht, verschoben oder umbenannt werden. kurz gesagt kann nicht geändert werden.
  • -ich – Diese Option ermöglicht das Entfernen des i-Attributs aus der Datei.
  • -V – Um die Verbose-Ausgabe zu sehen
  • -a – Durch die Verwendung dieses Attributs können nur Daten an eine Datei angehängt und nicht gelöscht oder verschoben werden.


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

  2. 5 Wget-Befehlsbeispiele zum Herunterladen von Dateien unter Linux.

  3. 11 Linux diff3-Befehlsbeispiele (Vergleiche 3 Dateien Zeile für Zeile)

  4. ln-Befehlsbeispiele in Linux

  5. file Befehlsbeispiele in Linux

Chattr-Befehl in Linux (Dateiattribute)

lsof-Befehl unter Linux (10 Beispiele)

Touch-Befehl in Linux (5 Beispiele)

Linux-WC-Befehl mit Beispielen

Stat-Befehl:Attribute von Dateien und Verzeichnissen anzeigen

Linux-make-Befehl mit Beispielen