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

10 Linux-restorecon-Befehlsbeispiele zum Wiederherstellen des SELinux-Kontexts

Auf Ihrem Linux-Server ist es sehr wichtig, dass der richtige SELinux-Sicherheitskontext für Dateien und Verzeichnisse vorhanden ist.

Wenn Sie Ihre benutzerdefinierte Datei einem Verzeichnis hinzufügen, das bereits von der SELinux-Richtlinie verwaltet wird, und Ihre benutzerdefinierte Datei nicht über den richtigen SELinux-Kontext verfügt, erhalten Sie nicht das erwartete Ergebnis.

restorecon steht für Restore SELinux Context.

Der Befehl restorecon setzt den SELinux-Sicherheitskontext für Dateien und Verzeichnisse auf seine Standardwerte zurück. Dadurch wird nur das Typattribut des SELinux-Kontexts zurückgesetzt.

In diesem Tutorial erklären wir anhand einiger praktischer Beispiele, wie der Befehl restorecon verwendet wird.

1. SELinux-Kontext einer Datei wiederherstellen

Im folgenden Beispiel hat die Datei index.html „user_home_t“ im SELinux-Kontext als Typ. Dies ist falsch und Apache kann diese Datei nicht bereitstellen. Im error_log für den Apache mit diesem Sicherheitskontext wird die Berechtigung verweigert angezeigt.

# cd /var/www/html

# ls -lZ index.html 
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 index.html

Hinweis:Die Option Z (großes Z) im obigen ls-Befehl zeigt den SELinux-Kontext für eine bestimmte Datei an.

Wenn wir den Befehl restorecon verwenden, müssen wir den korrekten ursprünglichen Sicherheitskontext für die Datei wirklich nicht kennen. restorecon findet das automatisch für uns heraus.

Das folgende Beispiel stellt den Sicherheitskontext von index.html auf den richtigen Wert wieder her. Wie Sie unten sehen, wurde der Typteil des SELinux-Kontexts auf „httpd_sys_content_t“ zurückgesetzt. Das ist der richtige Typ. Jetzt kann Apache diese Datei ohne Fehler bereitstellen.

# restorecon index.html

# ls -lZ index.html 
-rw-rw-r--. centos centos unconfined_u:object_r:httpd_sys_content_t:s0 index.html

2. Änderung des Sicherheitskontexts auf dem Bildschirm anzeigen

Wenn Sie den Befehl restorecon ausführen, werden Sie standardmäßig nicht darüber informiert, ob der Linux-Sicherheitskontext der Datei geändert wurde.

v steht für verbose. Die Option -v zeigt auf dem Bildschirm den vorherigen Sicherheitskontext und den neu geänderten Selinux-Kontext an, wie unten gezeigt.

# restorecon -v index.html 
restorecon reset /var/www/html/index.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

3. Platzhalter verwenden, um mehrere Objekte zu verarbeiten

Wie bei jedem anderen Linux-Befehl können Sie auch Platzhalter für Dateinamen verwenden, wie unten gezeigt.

Dies wirkt sich auf alle Dateien aus, die mit der Erweiterung .html im aktuellen Verzeichnis enden

restorecon -v *.html

Dies wirkt sich auf alle Dateien im aktuellen Verzeichnis aus.

restorecon -v *

Dies wirkt sich auf alle Dateien im Verzeichnis /var/www/html aus.

restorecon -v /var/www/html/*

Dies wirkt sich auf alle Dateien aus, die entweder mit .htm (oder) .html (oder) .htm mit einem anderen einzelnen Zeichen am Ende enden.

restorecon -v *.htm?

4. Dateien und Verzeichnisse rekursiv verarbeiten

Sie können den Sicherheitskontext der Dateien auch rekursiv zurücksetzen. Verwenden Sie die Option -R wie unten gezeigt. Hier kombinieren wir R mit der Option v.

Dies setzt den Kontext oder alle Dateien in /var/www/html und seinen Unterverzeichnissen zurück.

# restorecon -vR /var/www/html
restorecon reset /var/www/html/sales/graph.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

Sie können auch den Kleinbuchstaben r für rekursiv verwenden. Der folgende Befehl ist genau derselbe wie der obige Befehl.

# restorecon -vr /var/www/html

5. Dateiliste mit falschem SELinux-Kontext speichern

Wenn Sie den SELinux-Kontext für eine große Menge von Dateien zurücksetzen und nur die geänderte Datei sehen möchten, können wir die Option -v wie zuvor erläutert verwenden. Dies zeigt es jedoch nur auf dem Bildschirm an.

Wenn Sie die Liste der Dateien mit falschem Sicherheitskontext in einer Ausgabedatei erfassen möchten, verwenden Sie die Option -o.

o steht für Ausgabedatei.

Im folgenden Beispiel speichern wir die Liste der Dateien, die vom Befehl restorecon betroffen sind, in der Datei „changed.log“.

# restorecon -vR -o changed.log /var/www/html
restorecon reset /var/www/html/about.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/contact.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/data.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/index.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/sales context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/sales/graph.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

Wie wir erwarten, enthält diese geänderte.log-Datei die Liste der betroffenen Dateinamen zusammen mit dem vollständigen Pfad, wie unten gezeigt.

# cat changed.log
/var/www/html/about.html
/var/www/html/contact.html
/var/www/html/data.html
/var/www/html/index.html
/var/www/html/sales
/var/www/html/sales/graph.html

6. Wiederherstellen des Kontexts basierend auf der Eingabedatei

Sie können auch den Sicherheitskontext einer Liste von Dateien wiederherstellen, die Sie aus einer Eingabedatei haben.

Im Folgenden haben alle diese Dateien im Verzeichnis /var/www/html derzeit einen falschen Sicherheitskontext.

# ls -lZ
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 about.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 contact.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 data.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 index.html
drwxrwxr-x. centos centos unconfined_u:object_r:user_home_t:s0 sales

Erstellen Sie eine input.txt-Datei wie unten gezeigt, die nur zwei Dateien enthält. Hier sollte der vollständige Pfad des Dateinamens einschließlich des Verzeichnisses angegeben werden.

# cat input.txt
/var/www/html/about.html
/var/www/html/data.html

Um diese Eingabedatei in der Wiederherstellung festzulegen, verwenden Sie die Option -f wie unten gezeigt. Dadurch wird der SELinux-Kontext nur für about.html und data.html wie unten gezeigt geändert.

# restorecon -vf input.txt 
restorecon reset /var/www/html/about.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/data.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

Verwenden Sie den Befehl ls -lZ, um zu überprüfen, ob nur der Sicherheitskontext dieser beiden Dateien geändert wird.

# ls -lZ
-rw-rw-r--. centos centos unconfined_u:object_r:httpd_sys_content_t:s0 about.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 contact.html
-rw-rw-r--. centos centos unconfined_u:object_r:httpd_sys_content_t:s0 data.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 index.html
-rw-r--r--. root   root   unconfined_u:object_r:httpd_sys_content_t:s0 input.txt
drwxrwxr-x. centos centos unconfined_u:object_r:user_home_t:s0 sales

Hinweis:Anstatt input.txt anzugeben, können Sie auch angeben – was nach einer Liste von Eingabedateien aus der Standardeingabe fragt.

7. Nicht vorhandene Dateien ignorieren

Im folgenden Beispiel haben wir eine input.txt erstellt, die eine Liste mehrerer Dateien enthält. Wir verwenden diese Liste, um den Sicherheitskontext zurückzusetzen.

# cat input.txt 
/var/www/html/about.html
/var/www/html/meeting.html
/var/www/html/directions.html
/var/www/html/data.html

Aber, wie unten gezeigt, zeigt dies die Fehlermeldung an, wenn eine bestimmte Datei in der obigen Liste nicht vorhanden ist.

# restorecon -f input.txt
restorecon:  lstat(/var/www/html/meeting.html) failed:  No such file or directory
restorecon:  lstat(/var/www/html/directions.html) failed:  No such file or directory

Um dies zu vermeiden, können Sie die Option -i verwenden. i steht für ignorieren. Wie Sie unten sehen, gibt der folgende Befehl mit der Option -i keine der oben genannten Fehlermeldungen über die fehlende Datei aus. Dadurch werden diese fehlenden Dateien einfach ignoriert und mit den restlichen Dateien in der input.txt fortgefahren.

# restorecon -if input.txt
#

8. Führen Sie nur einen Probelauf der Wiederherstellung des SELinux-Kontexts durch

Anstatt den SELinux-Kontext der Dateien wirklich zu ändern, können Sie einfach anzeigen, welche Dateien möglicherweise geändert werden, indem Sie die Option -n verwenden.

Die Option -n ist wie ein Probelauf.

Wenn Sie dies verwenden, wird es alle Schritte zur Ausführung des Befehls restorecon durchlaufen, aber nicht wirklich etwas tun.

Wie Sie unten sehen, haben wir die Wiederherstellung mit der Option -n für alle Dateien im Verzeichnis /var/www/html ausgeführt.

# restorecon -nv /var/www/html/*
restorecon reset /var/www/html/about.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/contact.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/data.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/index.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/sales context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

Obwohl die obige Ausgabe von restorecon zeigt, dass der SELinux-Kontext für mehrere Dateien geändert wurde, hat dies nicht wirklich etwas bewirkt, da wir die Option -n verwendet haben.

Wenn Sie ls -lZ wie unten gezeigt ausführen, können Sie sehen, dass der SELinux-Kontext nicht wirklich geändert wurde.

# ls -lZ /var/www/html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 about.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 contact.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 data.html
-rw-rw-r--. centos centos unconfined_u:object_r:user_home_t:s0 index.html
drwxrwxr-x. centos centos unconfined_u:object_r:user_home_t:s0 sales

9. Zeigen Sie den aktuellen Fortschritt während der großen Operation an

Wenn Sie den SELinux-Kontext mehrerer Dateien wiederherstellen, kann der Befehl einige Zeit dauern. Wenn Sie wissen möchten, was der Befehl gerade tut, können Sie -p Option.

verwenden

Die Option -p zeigt die Anzahl der bisher verarbeiteten Dateien in Schritten von 1000 Dateien an. p steht für Fortschritt.

Wie Sie unten sehen, setze ich hier den SELinux-Kontext aller Dateien im Verzeichnis /var rekursiv mit der Option -p zurück.

Dies zeigt, dass derzeit 2k Dateien (2000 Dateien) verarbeitet werden.

# restorecon -pr /var
2k

Hinweis:Wenn Sie den SELinux-Kontext für alle Dateien in Ihrem Betriebssystem mit der Option -p zurücksetzen, wird der aktuelle Fertigstellungsgrad in Prozent angezeigt.

10. Zu verarbeitende Verzeichnisse ausschließen

Sie können das zu verarbeitende Verzeichnis auch mit der Option -e ausschließen. e steht für Ausschließen.

Im folgenden Beispiel verarbeiten wir alle Dateien im Verzeichnis /var/www/html, aber ohne die Dateien aus dem Unterverzeichnis /var/www/html/sales.

# restorecon -e /var/www/html/sales -Rv /var/www/html
restorecon reset /var/www/html/about.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/contact.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/data.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0
restorecon reset /var/www/html/index.html context unconfined_u:object_r:user_home_t:s0->unconfined_u:object_r:httpd_sys_content_t:s0

Bitte beachten Sie, dass Sie den vollständigen Pfad des Verzeichnisses in der Option -e verwenden sollten. Wenn nicht, erhalten Sie die folgende Fehlermeldung.

# restorecon -e sales -Rv /var/www/html
Full path required for exclude: sales.

Sie können auch mehrere Verzeichnisse ausschließen, indem Sie mehrere -e-Optionen angeben, wie unten gezeigt.

Im Folgenden werden sowohl das Vertriebs- als auch das Marketingverzeichnis von der Verarbeitung ausgeschlossen.

restorecon -e /var/www/html/sales -e /var/www/html/marketing -Rv /var/www/html

Linux
  1. setenforce-Befehlsbeispiele in Linux

  2. rm-Befehlsbeispiele unter Linux

  3. ps-Befehlsbeispiele in Linux

  4. Beispiele für den Befehl restorecon unter Linux

  5. w Befehlsbeispiele unter Linux

10 Beispiele für iftop-Befehle unter Linux

16 Beispiele für Echo-Befehle unter Linux

9 Beispiele für tee-Befehle unter Linux

9 diff-Befehlsbeispiele in Linux

sestatus-Befehlsbeispiele in Linux

id-Befehlsbeispiele in Linux