Hinweis:
- Dieses Tutorial ist in einer von Oracle bereitgestellten kostenlosen Übungsumgebung verfügbar.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Ersetzen Sie diese Werte durch die für Ihre Cloud-Umgebung spezifischen Werte.
SELinux bei Oracle Linux verwenden
Einführung
SELinux ist eine Reihe von Kernelmods und User Space Tools, die eine weitere Schicht aus Systemsicherheit, präziser Zugriffskontrolle, systemweit definierten Admin-Richtlinien und verbesserter Schutz vor Angriffen auf Berechtigungserweiterung bieten.
Dieses Tutorial führt Sie durch die Verwendung dieser Tools für den Benutzerbereich, damit Ihr System im Enforcing-Modus ausgeführt werden kann.
Ziele
In dieser Übung lernen Sie Folgendes:
- SELinux-Modus und -Status prüfen
- SELinux-Sicherheitslabels verstehen
- Mit SELinux-Netzwerkservices arbeiten
- SELinux-Benutzer verwenden
- SELinux-Booleans ändern
- SELinux-Dateikontexte auswerten
Voraussetzungen
- Ein System mit Oracle Linux 8 wird mit der folgenden Konfiguration installiert:
- ein Nicht-Root-Benutzer mit
sudo
-Berechtigungen
- ein Nicht-Root-Benutzer mit
Laborumgebung einrichten
Hinweis: Wenn Sie die kostenlose Übungsumgebung verwenden, finden Sie unter Oracle Linux Lab - Grundlagen Informationen zu Verbindungen und anderen Nutzungsanweisungen.
Benutzer erstellen
Ein zusätzlicher Benutzer kann die Zuweisung eines SELinux-Benutzers später in dieser Übung testen.
-
Wenn noch nicht geschehen, öffnen Sie ein Terminal, und stellen Sie eine Verbindung über SSH zum ol8-server-System her.
ssh oracle@<ip_address_of_ol8-server>
-
Erstellen Sie einen Benutzer, und legen Sie ein Kennwort fest.
sudo useradd -u 8000 ralph echo "ralph:oracle" | sudo chpasswd
-
SSH-Verbindungen zulassen.
Kopieren Sie den SSH-Schlüssel aus dem Benutzeraccount
oracle
.sudo mkdir /home/ralph/.ssh sudo cp /home/oracle/.ssh/authorized_keys /home/ralph/.ssh/authorized_keys sudo chown -R ralph:ralph /home/ralph/.ssh sudo chmod 700 /home/ralph/.ssh sudo chmod 600 /home/ralph/.ssh/authorized_keys
-
Öffnen Sie ein neues Terminal, und prüfen Sie, ob die SSH-Verbindung funktioniert.
ssh ralph@<ip_address_of_ol8-server>
Danach
exit
Sie die Session, und schließen Sie das Terminalfenster.
SELinux-Modus und -Status
Oracle Linux installiert SELinux standardmäßig und wird im Enforcing
-Modus ausgeführt.
-
Bestätigen Sie den SELinux-Modus, indem Sie ihn prüfen.
Er muss auf
Enforcing
gesetzt werden.getenforce
-
Prüfen Sie die SELinux-Status und -Modi.
sestatus
Die Ausgabe des Befehls
sestatus
zeigt den SELinux-Status, die Policy und den Modus an.Beispielausgabe:
SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing Mode from config file: enforcing Policy MLS status: enabled Policy deny_unknown status: allowed Memory protection checking: actual (secure) Max kernel policy version: 31
SELinux-Sicherheitslabels
Jede Prozess- und Systemressource unter SELinux hat ein Sicherheitslabel, das als SELinux-Kontext bezeichnet wird. Der SELinux-Kontext, auch als SELinux-Label bezeichnet, konzentriert sich auf die Sicherheitseigenschaften und stellt eine konsistente Möglichkeit sicher, Objekte in der SELinux-Policy zu referenzieren.
-
Zeigen Sie das SELinux-Sicherheitslabel für eine Datei an.
ls -ldZ /etc/passwd
Beispielausgabe:
-rw-r--r--. 1 root root system_u:object_r:passwd_file_t:s0 1892 Apr 13 14:39 /etc/passwd
Die Ausgabe
ls
mit der Option-Z
zeigt die vier SELinux-Attributfelder an:- Benutzer:
system_u
- Rolle:
object_r
- Typ:
passwd_file_t
- Sicherheit:
s0
Das Wichtigste ist der SELinux-Typ, da die meisten SELinux
targeted
-Policy-Regeln SELinux-Typen verwenden, um die zulässige Interaktion zwischen einem Objekt (z.B. Prozess) und einem anderen Objekt (z.B. Datei) zu definieren. - Benutzer:
-
Hier finden Sie eine Liste der verfügbaren SELinux-Typen.
seinfo --type | head
- Der Befehl
head
begrenzt die Ausgabe auf nur die ersten zehn Ausgabezeilen.
Die vollständige Ausgabe zeigt, dass SELinux-Typen für viele verschiedene Befehle und Services vorhanden sind, wie
ssh
undsshd
. - Der Befehl
-
Hier finden Sie eine Liste bestimmter SELinux-Typen.
Mit
grep
wird die Ausgabe auf die Typen begrenzt, die das Wortssh
enthalten.seinfo -t | grep ssh
-
Listen Sie die Sicherheitslables für bestimmte Prozesse und Konfigurationsdateien auf.
Wenn Sie
ps
verwenden, werden die Sicherheitslabels für die Prozesse abgerufen.ps -efZ | grep sshd
Beispielausgabe:
system_u:system_r:sshd_t:s0-s0:c0.c1023 root 2535 1 0 14:37 ? 00:00:00 /usr/sbin/sshd -D system_u:system_r:sshd_t:s0-s0:c0.c1023 root 18514 2535 0 15:21 ? 00:00:00 sshd: oracle [priv] unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 oracle 18528 18514 0 15:21 ? 00:00:00 sshd: oracle@pts/0 unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 oracle 23611 18529 0 15:41 pts/0 00:00:00 grep --color=auto sshd
Wenn Sie
ls
verwenden, werden die Sicherheitslabels für die Konfigurationsdateien abgerufen.ls -lZ /etc/ssh/
Beispielausgabe:
total 600 -rw-r--r--. 1 root root system_u:object_r:etc_t:s0 577388 Oct 9 2021 moduli -rw-r--r--. 1 root root system_u:object_r:etc_t:s0 1770 Oct 9 2021 ssh_config drwxr-xr-x. 2 root root system_u:object_r:etc_t:s0 28 Feb 18 08:51 ssh_config.d -rw-------. 1 root root system_u:object_r:etc_t:s0 4268 Apr 13 14:37 sshd_config -rw-r-----. 1 root ssh_keys system_u:object_r:sshd_key_t:s0 537 Apr 13 14:37 ssh_host_ecdsa_key -rw-r--r--. 1 root root system_u:object_r:sshd_key_t:s0 197 Apr 13 14:37 ssh_host_ecdsa_key.pub -rw-r-----. 1 root ssh_keys system_u:object_r:sshd_key_t:s0 432 Apr 13 14:37 ssh_host_ed25519_key -rw-r--r--. 1 root root system_u:object_r:sshd_key_t:s0 117 Apr 13 14:37 ssh_host_ed25519_key.pub -rw-r-----. 1 root ssh_keys system_u:object_r:sshd_key_t:s0 2635 Apr 13 14:37 ssh_host_rsa_key -rw-r--r--. 1 root root system_u:object_r:sshd_key_t:s0 589 Apr 13 14:37 ssh_host_rsa_key.pub
Der Daemon-Prozess
sshd
verwendet den Typsshd_t
. Daher wird in der Policy targeted eine Regel für das SELinux-Attributsshd_t
erwartet, mit der Objekte mitsshd_t
auf Objekte mit dem folgenden Sicherheitsattribut zugreifen können:etc_t
sshd_key_t
- ...
Wenn der Befehl
ssh
geprüft werden soll, können wir eine ähnliche Zuordnung zwischenssh_home_t
undssh_exec_t
ermitteln.ls -lZ /usr/bin/ssh
Beispielausgabe:
-rwxr-xr-x. 1 root root system_u:object_r:ssh_exec_t:s0 775720 Oct 9 2021 /usr/bin/ssh
ls -lZ ~/.ssh
Beispielausgabe:
total 4 -rw-------. 1 oracle oracle unconfined_u:object_r:ssh_home_t:s0 404 Apr 13 14:39 authorized_keys
-
Sicherheitskontext eines Benutzers abrufen.
Der andere Kontexttyp ist
unconfined_t
. Objekte mit diesem SELinux-Typ, wie Benutzer, haben uneingeschränkten Zugriff. Durch diese Zugriffsebene schränkt SELinux nicht die möglichen Aktionen der Benutzer ein und hemmt sie nur durch DAC-Berechtigungen. DAC (Individual Access Control) ist die Sicherheitsrichtlinie, die von traditionellen Benutzern, Gruppen und anderen Berechtigungen verarbeitet wird.Beispiel: Zeigen Sie die Sicherheitsattribute für den Benutzer
oracle
an.whoami
id -Z
Beispielausgabe:
[oracle@ol-selinux ~]$ whoami oracle [oracle@ol-selinux ~]$ id -Z unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
SELinux- und Netzwerkdienste
SELinux verfolgt die Konfigurationen für die am häufigsten verwendeten netzwerkbasierten Softwarepackages innerhalb der internen Datenbank. Mit diesem Tracking kann SELinux das System vor extern zugänglichen Services schützen, die anfällig für Angriffe sind.
Aus diesem Grund kann SELinux verhindern, dass ein Service funktioniert, wenn Sie die Software so konfigurieren, dass ein nicht standardmäßiges Verzeichnis oder Port verwendet wird.
Um zu zeigen, was SELinux über die Standardports eines Systems weiß, müssen Sie das SELinux-Utility semanage
verwenden. Oracle Linux installiert das Utility nicht standardmäßig. Installieren Sie es also.
-
Stellen Sie fest, welches Paket das Dienstprogramm bereitstellt.
sudo dnf whatprovides semanage
Die Ergebnisse zeigen, dass
/usr/sbin/semanage
Teil despolicycoreutils-python-utils
-Packages ist. -
Installieren Sie das Package und alle Abhängigkeiten.
sudo dnf install -y policycoreutils-python-utils
-
Prüfen Sie, welche Ports SELinux für
sshd
zulassen.sudo semanage port -l | grep ssh
Beispielausgabe:
ssh_port_t tcp 22
-
Fügen Sie der SELinux-Policy einen neuen Port hinzu.
Wenn Sie den Port ändern möchten, den der SSH-Daemon auf 2222 empfängt, oder die Standardkonfiguration dort ändern, wo er gespeichert wird. Dann müssen Sie SELinux darüber informieren, dass diese Änderungen gewünscht werden. Sie können
semanage
erneut verwenden, um einen benutzerdefinierten Port zuzulassen, indem Sie eine neue Policy-Regel hinzufügen.sudo sudo semanage port -a -t ssh_port_t -p tcp 2222
- Mit der Option
-a
wird eine neue Policy-Regel vom Typ-t
hinzugefügt.
- Mit der Option
-
Prüfen Sie, welche Ports SELinux jetzt zulässt.
sudo semanage port -l | grep ssh
Beispielausgabe:
ssh_port_t tcp 2222, 22
-
Ändern Sie einen Port in der SELinux-Policy.
Angenommen, Sie möchten den SSH-Daemon Port 443 zuordnen. Wiederholen Sie denselben Befehl, aber mit einer Meldung, dass der Port bereits verwendet wird, wird ein Fehler ausgegeben.
sudo semanage port -a -t ssh_port_t -p tcp 443
Beispielausgabe:
ValueError: Port tcp/443 already defined
Der Fehler ist aufgetreten, weil wir versuchen, Port 443 vom Typ
http_port_t
in den Typssh_port_t
zu wechseln. Dazu verwenden Sie die Option-m
, mit der der der Portobjektdatensatz geändert wird.sudo semanage port -m -t ssh_port_t -p tcp 443
SELinux-Benutzer
Jeder Linux-Benutzer wird mit einer SELinux-Policy einem SELinux-Benutzer zugeordnet. Dadurch können Linux-Benutzer basierend auf ihrer SELinux-Benutzerzuordnung Einschränkungen erben. Die Standardzuordnung in Oracle Linux ist die __default__
-Anmeldung, die dem SELinux-Benutzer unconfined_u
zugeordnet ist.
-
Hier finden Sie eine Liste aller aktuellen Linux-Benutzerzuordnungen.
sudo semanage login -l
- Beachten Sie, dass der Benutzer
oracle
nicht aufgeführt und somit dem Benutzerunconfined_u
zugeordnet wird.
- Beachten Sie, dass der Benutzer
-
Hier erhalten Sie eine Liste der SELinux-Benutzer.
seinfo -u
-
Schränken Sie die Aktionen eines Benutzers ein.
Auch wenn ein Linux-Standardbenutzer uneingeschränkt ausgeführt wird, können durch die Aktionen des Benutzers Beschränkungen basierend auf einer Anwendung
domain
verursacht werden.domain
ist eine Reihe von Objekten mit demselben SELinux-Typ.Was geschieht, wenn Benutzer das X Window-System,
sudo
und das Netzwerk blockieren möchten?SELinux hat dafür einen Benutzer.
Um dies zu überprüfen, benötigen wir einen anderen Linux-Benutzer. Wir verwenden den Benutzer "ralph".
-
Erstellen Sie die neue Zuordnung zu
guest_u
.sudo semanage login -a -s guest_u ralph
-
Prüfen Sie die Zuordnung.
sudo semanage login -l
-
Testen Sie, ob ralph nicht auf das Netzwerk zugreifen kann.
Die von
guest_u
geerbten Einschränkungen treten erst nach der Anmeldung auf und nicht durchsudo
odersu
.Öffnen Sie ein neues Terminal, und stellen Sie als ralph-Benutzer eine SSH-Verbindung zum System ol8-server her.
ssh ralph@<ip_address_of_ol8-server>
-
Prüfen Sie den Kontext des Benutzers.
id; id -Z
Beispielausgabe:
uid=8000(ralph) gid=8000(ralph) groups=8000(ralph) context=guest_u:guest_r:guest_t:s0 guest_u:guest_r:guest_t:s0
-
Zeigen Sie den Sicherheitskontext der aktuellen Prozesse des Benutzers an:
ps axZ
Die Ausgabe zeigt den Benutzer ralph, der
guest_u
zugeordnet ist, und kann sich anmelden. ralph sollte jedoch nicht auf das Netzwerk zugreifen können. -
Testen Sie die Netzwerkkonnektivität mit
ping
.ping localhost
Beispielausgabe:
ping: socket: Permission denied
-
Testen Sie das Netzwerk außerdem mit
curl
.curl ifconfig.me
Beispielausgabe:
curl: (6) Could not resolve host: ifconfig.me
Die Nachricht gibt an, dass
curl
den DNS-Namenifconfig.me
nicht in eine IP-Adresse auflösen kann. DNS, ein Linux-Netzwerkservice, erfordert das Öffnen eines Sockets, damit der SELinux-Benutzerguest_u
es blockiert. -
Schließen Sie das aktuelle Terminalfenster.
Das Testen wurde mit dem Benutzer ralph abgeschlossen. Schließen Sie dieses Terminalfenster.
exit
-
SELinux-Booleans
SELinux-Booleans ermöglichen bestimmte Policy-Änderungen zur Laufzeit, ohne zu wissen, wie SELinux-Policys geschrieben werden. Oracle Linux stellt viele integrierte Booleans bereit, oder Administratoren, die mit SELinux-Policys vertraut sind, können ihre eigenen erstellen. Administratoren wird empfohlen, Policys als Booleans zu schreiben, wenn die implementierte Policy optional ist.
-
Holen Sie sich eine Liste von Booleans zusammen mit ihrer Bedeutung.
Wechseln Sie zurück zum Terminal, bei dem Sie als oracle angemeldet sind, und führen Sie den folgenden Befehl aus.
sudo semanage boolean -l
Beispielausgabe:
SELinux boolean State Default Description abrt_anon_write (off , off) Allow abrt to anon write abrt_handle_event (off , off) Allow abrt to handle event abrt_upload_watch_anon_write (on , on) Allow abrt to upload watch anon write antivirus_can_scan_system (off , off) Allow antivirus to can scan system antivirus_use_jit (off , off) Allow antivirus to use jit auditadm_exec_content (on , on) Allow auditadm to exec content authlogin_nsswitch_use_ldap (off , off) Allow authlogin to nsswitch use ldap authlogin_radius (off , off) Allow authlogin to radius ...
- Die Ausgabe erklärt, was jeder boolesche Wert tut und ob er aktiviert (
on
) oder deaktiviert ist (off
).
- Die Ausgabe erklärt, was jeder boolesche Wert tut und ob er aktiviert (
-
Holen Sie sich eine Liste der Booleans und deren Status.
sudo getsebool -a
Beispielausgabe:
abrt_anon_write --> off abrt_handle_event --> off abrt_upload_watch_anon_write --> on antivirus_can_scan_system --> off antivirus_use_jit --> off auditadm_exec_content --> on authlogin_nsswitch_use_ldap --> off authlogin_radius --> off authlogin_yubikey --> off ...
-
Rufen Sie den Status eines einzelnen booleschen Wertes ab.
Wenn der boolesche Name bekannt ist, übergeben Sie den Namen als Argument, um nur diesen Booleans-Status zu erhalten.
sudo getsebool virt_use_nfs
-
Fragen Sie die SELinux-Policy für einen booleschen Wert ab.
Haben Sie sich jemals gefragt, was ein boolescher Wert innerhalb der SELinux-Policy auslöst? SELinux stellt ein Utility zur Abfrage dieser Regeln bereit.
sesearch -b virt_use_nfs -A
Beispielausgabe:
allow fsdaemon_t autofs_t:dir { getattr open search }; [ virt_use_nfs ]:True allow fsdaemon_t nfs_t:dir { getattr ioctl lock open read search }; [ virt_use_nfs ]:True allow fsdaemon_t nfs_t:dir { getattr ioctl lock open read search }; [ virt_use_nfs ]:True allow fsdaemon_t nfs_t:dir { getattr ioctl lock open read search }; [ virt_use_nfs ]:True allow fsdaemon_t nfs_t:dir { getattr open search }; [ virt_use_nfs ]:True allow fsdaemon_t nfs_t:dir { getattr open search }; [ virt_use_nfs ]:True allow fsdaemon_t nfs_t:file { getattr ioctl lock open read }; [ virt_use_nfs ]:True allow fsdaemon_t nfs_t:lnk_file { getattr read }; [ virt_use_nfs ]:True ...
-
Abfrage, wenn ein boolescher Wert Zugriff zulässt
Wie wäre es, wenn ein bestimmter Zugriff basierend auf einem bedingten booleschen Wert zulässig ist? Beantworten Sie die Frage: Erlaubt der Benutzer-Ping den Übergang von einer Benutzerdomain (
user_t
) zur Ping-Domain (ping_t
)?sesearch -s user_t -t ping_t -c process -p transition -AT
Beispielausgabe:
allow user_t ping_t:process transition; [ selinuxuser_ping ]:True
- Der Übergang ist zulässig, wenn der boolesche Wert
user_ping
SELinux aktiviert ist.
- Der Übergang ist zulässig, wenn der boolesche Wert
-
Aktivieren Sie einen booleschen Wert.
Angenommen, wir möchten KVM erlauben, Bilder auf einer Samba-Freigabe zu speichern? Dafür gibt es auch einen booleschen Wert.
-
Suchen Sie den booleschen Wert.
sudo semanage boolean -l | grep virt | grep samba
Beispielausgabe:
virt_use_samba (off , off) Allow virt to use samba
-
Ändern Sie den booleschen Wert in "Aktiviert".
sudo setsebool virt_use_samba on
oder
sudo semanage boolean -m --on virt_use_samba
-
Prüfen Sie den aktuellen Status.
getsebool virt_use_samba
-
Stellen Sie sicher, dass die Änderung einen Neustart erhält.
sudo setsebool -P virt_use_samba on
-
-
Lokale SELinux-Policy-Anpassungen anzeigen.
Da die Standardeinstellungen geändert wurden, können diese lokalen Anpassungen angezeigt werden.
sudo semanage boolean -l -C
Beispielausgabe:
SELinux boolean State Default Description virt_use_samba (on , on) Allow virt to use samba
- Die Ausgabe zeigt, dass der Standardwert jetzt
on
lautet. Der Standardwert wurde geändert, nachdem der Switch dauerhaft gemacht und die ausstehenden Werte in die Policy-Datei auf dem Datenträger geschrieben wurden.
- Die Ausgabe zeigt, dass der Standardwert jetzt
SELinux-Dateikontext
Alle Dateien und Verzeichnisse werden beim Ausführen von SELinux mit einem SELinux-Kontext beschriftet. Es werden einige Befehle zur Verwaltung der Dateisystembeschriftung untersucht.
Ein bekanntes Beispiel ist das Erstellen eines neuen Verzeichnisses für die Nginx-Dokument-Root.
-
Erstellen Sie das neue Verzeichnis zusammen mit drei Dateien.
sudo mkdir -p /web sudo touch /web/file{1,2,3}
-
Prüfen Sie das neue Verzeichnis und die Dateibeschriftung.
ls -lZ /web
Beispielausgabe:
total 0 -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file1 -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file2 -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file3
- Der Kontexttyp des neuen Verzeichnisses und die Dateien sind
default_t
.
Hinweis: Neu erstellte Dateien und Verzeichnisse erben den SELinux-Typ ihrer übergeordneten Verzeichnisse.
- Der Kontexttyp des neuen Verzeichnisses und die Dateien sind
-
Nehmen Sie temporäre Labeländerungen vor.
Im Rahmen von Fehlerbehebung oder Tests können wir den Kontext vorübergehend ändern.
sudo chcon -R -t httpd_sys_content_t /web/
ls -lZ /web
-
Setzen Sie Labels auf die Standardeinstellungen zurück.
Wechseln Sie zum Standardkontexttyp zurück.
sudo restorecon -R -v /web/
Beispielausgabe:
[oracle@ol-selinux ~]$ sudo restorecon -R -v /web/ Relabeled /web from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:default_t:s0 Relabeled /web/file1 from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:default_t:s0 Relabeled /web/file2 from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:default_t:s0 Relabeled /web/file3 from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:default_t:s0 [oracle@ol-selinux ~]$ ls -lZ /web total 0 -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file1 -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file2 -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file3
-
Ändern Sie die Beschriftung dauerhaft.
Um die Änderungen dauerhaft zu speichern und einen Neustart zu überstehen, verwenden Sie den Befehl
semanage fcontext
. Die-a
fügt der Datei/etc/selinux/targeted/contexts/files/file_contexts.local
einen Datensatz hinzu, und-t
definiert den Typ.sudo semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?"
Hinweis: Wenn Sie den SELinux-Kontext in
semanage fcontext
ändern, wird empfohlen, den vollständigen Pfad zu der Datei oder dem Verzeichnis zu verwenden, um ein falsches Labeling von Dateien nach einer Neubezeichnung eines Dateisystems oder nach der Ausführung vonrestorecon
zu vermeiden. -
Prüfen Sie den Kontext.
ls -ldZ /web; ls -lZ /web
Beispielausgabe:
[oracle@ol-selinux ~]$ ls -ldZ /web; ls -lZ /web drwxr-xr-x. 2 root root unconfined_u:object_r:default_t:s0 45 Apr 14 19:00 /web total 0 -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file1 -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file2 -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file3
Beachten Sie, dass sich der Kontext nicht geändert hat, was wir erwartet haben.
-
Zeigen Sie den Kontext der neu erstellten Dateien und Verzeichnisse an.
sudo semanage fcontext -C -l
Beispielausgabe:
[oracle@ol-selinux ~]$ sudo semanage fcontext -C -l SELinux fcontext type Context /web(/.*)? all files system_u:object_r:httpd_sys_content_t:s0
-
Wenden Sie die Änderungen auf den Kontext an.
sudo restorecon -R -v /web
Beispielausgabe:
[oracle@ol-selinux ~]$ sudo restorecon -R -v /web Relabeled /web from unconfined_u:object_r:default_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0 Relabeled /web/file1 from unconfined_u:object_r:default_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0 Relabeled /web/file2 from unconfined_u:object_r:default_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0 Relabeled /web/file3 from unconfined_u:object_r:default_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
-
Entfernen Sie den neuen SELinux-Kontext.
sudo semanage fcontext -d "/web(/.*)?"
- Dieses Beispiel übergibt den regulären Ausdruck, der beim Erstellen des Kontexts verwendet wird, und platziert ihn am Anfang des Kontextdatensatzes in einer Datei. Da es sich um einen regulären Ausdruck handelt, setzen Sie ihn in Anführungszeichen.
-
Wenden Sie die Änderungen an, und prüfen Sie den Kontext, der an
default_t
zurückgegeben wird.sudo restorecon -R -v /web; ls -ldZ /web; ls -lZ /web
Sehen Sie sich die man
-Seiten für die angezeigten Utilitys an. Dann nutzen Sie, was Sie gelernt haben, um SELinux im Enforcing
-Modus zu halten.
Weitere Informationen
Weitere zugehörige Ressourcen anzeigen:
Weitere Lernressourcen
Sehen Sie sich andere Übungen auf der Website docs.oracle.com/learn an, oder greifen Sie auf Inhalte zu, die Sie über den Oracle Learning-Kanal YouTube benötigen. Besuchen Sie außerdem education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Produktdokumentation finden Sie unter Oracle Help Center.