Linux/SELinux/04/09 Dateisysteme: Unterschied zwischen den Versionen
K Dirkwagner verschob die Seite Linux/SELinux/DOC/04 Arbeiten mit Linux/SELinux/Einbinden von Dateisystemen nach Linux/SELinux/DOC/04/09 Dateisysteme, ohne dabei eine Weiterleitung anzulegen |
K Dirkwagner verschob die Seite Linux/SELinux/DOC/04/09 Dateisysteme nach Linux/SELinux/04/09 Dateisysteme: Textersetzung - „Linux/SELinux/DOC/0“ durch „Linux/SELinux/0“ |
||
(kein Unterschied)
| |||
Version vom 28. März 2026, 09:57 Uhr
Einbinden von Dateisystemen
Standardmäßig wird beim Einbinden eines Dateisystems, das erweiterte Attribute unterstützt, der Sicherheitskontext für jede Datei aus dem ‚'security.selinux‘'
erweiterten Attribut der Datei
- Dateien in Dateisystemen, die keine erweiterten Attribute unterstützen, wird ein einziger Standard-Sicherheitskontext aus der Richtlinienkonfiguration zugewiesen, basierend auf dem Dateisystemtyp
Verwenden Sie den Befehl mount -o context, um vorhandene erweiterte Attribute zu überschreiben oder einen anderen Standardkontext für Dateisysteme festzulegen, die keine erweiterten Attribute unterstützen
- Dies ist nützlich, wenn Sie nicht darauf vertrauen, dass ein Dateisystem die richtigen Attribute bereitstellt, beispielsweise bei Wechselmedien, die in mehreren Systemen verwendet werden
- Der Befehl mount -o context kann auch verwendet werden, um die Kennzeichnung für Dateisysteme zu unterstützen, die keine erweiterten Attribute unterstützen, wie z. B. File Allocation Table (FAT) oder NFS-Volumes
- Der mit der Option context angegebene Kontext wird nicht auf die Festplatte geschrieben
die ursprünglichen Kontexte bleiben erhalten und sind beim Einbinden ohne context sichtbar, sofern das Dateisystem ursprünglich über erweiterte Attribute verfügte
Weitere Informationen zur Dateisystem-Kennzeichnung finden Sie in James Morris' Artikel „Filesystem Labeling in SELinux“ http://www.linuxjournal.com/article/7426
Kontext-Mounts
Um ein Dateisystem mit dem angegebenen Kontext zu mounten – wobei vorhandene Kontexte überschrieben werden, falls vorhanden – oder um einen anderen Standardkontext für ein Dateisystem festzulegen, das keine erweiterten Attribute unterstützt, verwenden Sie als Root-Benutzer den mount -o context=‚'SELinux_user:role:type:level‘' beim Einhängen des gewünschten Dateisystems
- Kontextänderungen werden nicht auf die Festplatte geschrieben
- Standardmäßig werden NFS-Einhängungen auf der Client-Seite mit einem Standardkontext gekennzeichnet, der durch die Richtlinie für NFS-Volumes definiert ist
- In gängigen Richtlinien verwendet dieser Standardkontext den Typ nfs_t
- Ohne zusätzliche Mount-Optionen kann dies die Freigabe von NFS-Volumes über andere Dienste, wie den Apache-HTTP-Server, verhindern
- Das folgende Beispiel mountet ein NFS-Volume so, dass es über den Apache-HTTP-Server freigegeben werden kann
sudo mount server:/export /local/mount/point -o \ context="system_u:object_r:httpd_sys_content_t:s0"
Neu erstellte Dateien und Verzeichnisse auf diesem Dateisystem scheinen den mit -o context angegebenen SELinux-Kontext zu haben
- Da diese Änderungen jedoch nicht auf die Festplatte geschrieben werden, bleibt der mit dieser Option angegebene Kontext zwischen den Mountvorgängen nicht erhalten
- Daher muss diese Option bei jedem Mountvorgang mit demselben Kontext verwendet werden, um den erforderlichen Kontext beizubehalten
- Informationen dazu, wie man Kontext-Mounts dauerhaft macht, finden Sie im Abschnitt „Kontext-Mounts dauerhaft machen“
Die Typen-Durchsetzung ist die wichtigste Berechtigungssteuerung, die in der SELinux-Targeted-Policy verwendet wird
- In den meisten Fällen können SELinux-Benutzer und -Rollen ignoriert werden. Verwenden Sie daher beim Überschreiben des SELinux-Kontexts mit -o context den SELinux-Benutzer system_u und die Rolle object_r und konzentrieren Sie sich auf den Typ
- Wenn Sie nicht die MLS-Policy oder die Multi-Kategorie-Sicherheit verwenden, verwenden Sie die s0-Ebene
- Hinweis
Wenn ein Dateisystem mit einer context-Option eingebunden wird, sind Kontextänderungen durch Benutzer und Prozesse untersagt
- Wenn Sie beispielsweise den Befehl chcon auf einem mit einer context-Option eingebundenen Dateisystem ausführen, führt dies zu einem Fehler Operation not supported
Ändern des Standardkontexts
Wie in Abschnitt 4.8, „Die Typen file_t und default_t“ , wird auf Dateisystemen, die erweiterte Attribute unterstützen, beim Zugriff auf eine Datei, der auf der Festplatte ein SELinux-Kontext fehlt, so behandelt, als hätte sie einen Standardkontext, wie er durch die SELinux-Richtlinie definiert ist
- In gängigen Richtlinien verwendet dieser Standardkontext den Typ file_t
- Wenn ein anderer Standardkontext verwendet werden soll, mounten Sie das Dateisystem mit der Option defcontext
Das folgende Beispiel mountet ein neu erstelltes Dateisystem auf [[/ dev/sda2]] in das neu erstellte Verzeichnis test/ ein
- Dabei wird davon ausgegangen, dass es in /etc/selinux/targeted/contexts/files/ keine Regeln gibt, die einen Kontext für das Verzeichnis test/ definieren
sudo mount /dev/sda2 /test/ -o defcontext="system_u:object_r:samba_share_t:s0"
In diesem Beispiel
- definiert die Option defcontext, dass system_u:object_r:samba_share_t:s0 „der Standard-Sicherheitskontext für nicht gekennzeichnete Dateien“ ist[5]
- wird das Stammverzeichnis (test/) des Dateisystems nach dem Einbinden so behandelt, als wäre es mit dem durch defcontext angegebenen Kontext gekennzeichnet (diese Kennzeichnung wird nicht auf der Festplatte gespeichert)
- Dies wirkt sich auf die Kennzeichnung von Dateien aus, die unter test/ erstellt werden
neue Dateien erben den Typ samba_share_t, und diese Kennzeichnungen werden auf der Festplatte gespeichert
- Dateien, die unter test/ erstellt wurden, während das Dateisystem mit der Option defcontext eingebunden war, behalten ihre Kennzeichnungen
Einbinden eines NFS-Volumes
Standardmäßig werden NFS-Einbindungen auf der Client-Seite mit einem Standardkontext gekennzeichnet, der durch die Richtlinie für NFS-Volumes definiert ist
- In gängigen Richtlinien verwendet dieser Standardkontext den Typ nfs_t
- Je nach Richtlinienkonfiguration können Dienste wie der Apache-HTTP-Server und MariaDB möglicherweise keine Dateien lesen, die mit dem Typ nfs_t gekennzeichnet sind
- Dies kann verhindern, dass Dateisysteme, die mit diesem Typ gekennzeichnet sind, eingebunden und anschließend von anderen Diensten gelesen oder exportiert werden
Wenn Sie ein NFS-Volume mounten und dieses Dateisystem mit einem anderen Dienst lesen oder exportieren möchten, verwenden Sie beim Mounten die Option context, um den Typ nfs_t zu überschreiben
- Verwenden Sie die folgende context-Option, um NFS-Volumes so einzuhängen, dass sie über den Apache-HTTP-Server freigegeben werden können
sudo mount server:/export /local/mount/point -o context="system_u:object_r:httpd_sys_content_t:s0"
Da diese Änderungen nicht auf die Festplatte geschrieben werden, bleibt der mit dieser Option angegebene Kontext zwischen den Einhängevorgängen nicht erhalten
- Daher muss diese Option bei jedem Einbinden mit demselben Kontext verwendet werden, um den erforderlichen Kontext beizubehalten
- Informationen dazu, wie Kontext-Mounts dauerhaft gemacht werden können, finden Sie im Abschnitt „Kontext-Mounts dauerhaft machen“
Als Alternative zum Einbinden von Dateisystemen mit context-Optionen können Boolesche Werte aktiviert werden, um Diensten den Zugriff auf Dateisysteme zu ermöglichen, die mit dem Typ [ [nfs_t]] gekennzeichnet sind
- Siehe Teil II, „Verwaltung eingeschränkter Dienste“ für Anweisungen zur Konfiguration von Booleans, um Diensten den Zugriff auf den Typ nfs_t zu ermöglichen
Mehrere NFS-Mounts
Wenn mehrere Mounts aus demselben NFS-Export durchgeführt werden und versucht wird, den SELinux-Kontext jedes Mounts durch einen anderen Kontext zu überschreiben, führen nachfolgende Mount-Befehle zu Fehlern
- Im folgenden Beispiel verfügt der NFS-Server über einen einzigen Export, export/, der zwei Unterverzeichnisse enthält: [ [web/]] und database/
- Die folgenden Befehle versuchen zwei Mounts von einem einzigen NFS-Export und versuchen, den Kontext für jeden einzelnen zu überschreiben
sudo mount server:/export/web /local/web -o context="system_u:object_r:httpd_sys_content_t:s0" sudo mount server:/export/database /local/database -o context="system_u:object_r:mysqld_db_t:s0"
Der zweite Mount-Befehl schlägt fehl, und Folgendes wird in /var/log/messages protokolliert kernel SELinux mount invalid
- Gleicher Superblock, unterschiedliche Sicherheitseinstellungen für (dev 0:15, Typ nfs)
Um mehrere Mounts aus einem einzigen NFS-Export durchzuführen, wobei jeder Mount einen anderen Kontext hat, verwenden Sie die -o nosharecache,context-Optionen
- Das folgende Beispiel mountet mehrere Mounts aus einem einzigen NFS-Export, wobei jeder Mount einen anderen Kontext hat (wodurch ein einzelner Dienst auf jeden einzelnen zugreifen kann)
sudo mount server:/export/web /local/web -o nosharecache,context=„system_u:object_r:httpd_sys_content_t:s0“ sudo mount server:/export/database /local/database -o \ nosharecache,context=„system_u:object_r:mysqld_db_t:s0“
In diesem Beispiel wird server:/export/web lokal im Verzeichnis /local/web/ eingebunden, wobei alle Dateien mit dem Typ httpd_sys_content_t gekennzeichnet sind, was dem Apache-HTTP-Server Zugriff gewährt. server:/export/database wird lokal in /local/database/ eingebunden, wobei alle Dateien mit dem Typ [ [mysqld_db_t]] gekennzeichnet, was MariaDB den Zugriff ermöglicht
- Diese Typänderungen werden nicht auf die Festplatte geschrieben
- Wichtig
Die Option nosharecache ermöglicht es Ihnen, dasselbe Unterverzeichnis eines Exports mehrfach mit unterschiedlichen Kontexten einzuhängen, beispielsweise /export/web/ mehrfach
- Hängen Sie dasselbe Unterverzeichnis eines Exports nicht mehrfach mit unterschiedlichen Kontexten ein, da dies zu einer überlappenden Einbindung führt, bei der Dateien unter zwei verschiedenen Kontexten zugänglich sind
Kontext-Einbindungen dauerhaft machen
Um Kontext-Mounts über erneutes Mounten und Neustarts hinweg persistent zu machen, fügen Sie Einträge für die Dateisysteme in die Datei /etc/fstab oder eine Automounter-Zuordnung ein und verwenden Sie den erforderlichen Kontext als Mount-Option
Das folgende Beispiel fügt einen Eintrag in /etc/fstab für eine NFS-Kontext-Einbindung hinzu
server:/export /local/mount/ nfs context="system_u:object_r:httpd_sys_content_t:s0" 0 0