SELinux und Azure CycleCloud
Die meisten modernen Red Hat-basierten Linux-Distributionen (RHEL, CentOS) sind mit installierter Security Enhanced Linux (SELinux) installiert und standardmäßig festgelegt enforcing
. SELinux ist eine Sicherheitsverbesserung für Linux, die Administratoren mehr Kontrolle über die Zugriffssteuerung ermöglicht. Azure CycleCloud unterstützt STANDARDMÄßIG SELinux, aber um eine Reihe von HPC-Anwendungen zu unterstützen, ändert CycleCloud die SELinux-Umgebung im Namen des Administrators.
HPC-Cluster und SELinux
Viele Azure Cyclecloud HPC-Cluster verwenden ein freigegebenes NFS-Heimverzeichnis, um die Übermittlung von Aufträgen zu erleichtern und die Freigabe von Informationen zwischen Computeknoten zu erleichtern. Cluster, die ein freigegebenes Heimverzeichnis verwenden, umfassen PBS Pro, Grid Engine und Slurm.
Die Standardmäßige SELinux-Verzeichnisrichtlinie verhindert die Verwendung eines NFS-Mounts oder eines anderen Elements neben /home für ein Startverzeichnis. Aus diesem Grund führt CycleCloud automatisch die erforderlichen Befehle aus, um sowohl ein nicht standardmäßiges Heimverzeichnis /shared/home zuzulassen als auch NFS-Heimverzeichnisse zuzulassen.
Um ein nicht standardmäßiges Startverzeichnis zu aktivieren, werden die folgenden Befehle ausgeführt, um zuerst den Sicherheitskontext von /home nach /shared/home zu kopieren und dann den Sicherheitskontext rekursiv im neuen Startverzeichnis zurückzusetzen:
semanage fcontext -a -e /home /shared/home
restorecon -R /shared/home
Hinweis
Im Allgemeinen exportiert der master
Knoten in den meisten HPC-Clustern das Dateisystem, das als Startverzeichnis für alle execute
Knoten verwendet wird. In diesem Fall ist /shared/home kein NFS-Mount, master
sondern stattdessen ein Symlink zu /mnt/exports/shared/home , das das Verzeichnis ist, das über NFS exportiert wird.
Hinweis
Im Allgemeinen exportiert der scheduler
Knoten in den meisten HPC-Clustern das Dateisystem, das als Startverzeichnis für alle execute
Knoten verwendet wird. In diesem Fall ist /shared/home kein NFS-Mount, scheduler
sondern stattdessen ein Symlink zu /mnt/exports/shared/home , das das Verzeichnis ist, das über NFS exportiert wird.
Für VMs, die das freigegebene Dateisystem bereitstellen, müssen NFS-Heimverzeichnisse explizit aktiviert sein, damit benutzer sich bei der VM anmelden können:
setsebool -P use_nfs_home_dirs 1
Um die obigen Befehle auszuführen, werden einige Pakete installiert, wenn sie nicht bereits auf dem Betriebssystem installiert sind: policycoreutils
stellt die restorecon
Befehle bereit, setsebool
während policycoreutils-python
oder policycoreutils-python-utils
der semanage
Befehl abhängig von der Betriebssystemversion bereitgestellt wird.
Hinweis
Die meisten Azure CycleCloud-Cluster verwenden /shared/home als Startverzeichnis des Clusters, aber einige Konfigurationen verwenden möglicherweise einen anderen Pfad. Wenn dies der Fall ist, werden dieselben Befehle mit dem alternativen Pfad anstelle von /shared/home ausgeführt.
Deaktivieren von SELinux
In einigen Fällen funktioniert eine Anwendung aufgrund von SELinux möglicherweise nicht ordnungsgemäß. Um das Debuggen zu erleichtern, ermöglicht CycleCloud einem Clusteradministrator das Festlegen des SELinux-Modus auf permissive
oder disabled
über die Konfigurationsoption:
cyclecloud.selinux.policy = permissive # or `disabled`
Um die SELinux-Richtlinie auf Betriebssystemebene zu ändern, wird ein setenforce 0
Befehl ausgegeben, um SELinux vorübergehend auf permissive
den Modus festzulegen, und dann wird die Datei "/etc/selinux/config " geändert, um den SELinux-Modus dauerhaft zu ändern.
Um das Paket auszuführen setenforce
, wird das Paket installiert, wenn das Paket libselinux-utils
nicht bereits auf dem Betriebssystem installiert ist.
Wichtig
Nach dem Festlegen von SELinux auf deaktiviert ist ein Neustart der VM erforderlich, um SELinux vollständig zu deaktivieren. Der virtuelle Computer bleibt im unzulässigen Modus, bis er neu gestartet wurde.