SELinux erlaubt es oddjobd-mkhomedir nicht, ein Benutzer-Home-Verzeichnis an einem nicht standardmäßigen Speicherort zu erstellen

SELinux erlaubt es oddjobd-mkhomedir nicht, ein Benutzer-Home-Verzeichnis an einem nicht standardmäßigen Speicherort zu erstellen

Wir verwenden SSSD, um Benutzer auf CentOS-Servern zu authentifizieren. oddjobd-mkhomedir funktioniert einwandfrei, wenn das Standard-Home-Verzeichnis /home ist, aber auf einem bestimmten Server mussten wir das Standard-Home-Verzeichnis in /data ändern, das sich auf einem SAN-Mount befindet.

Wenn ein Benutzer jetzt versucht, sich anzumelden, wird er in eine Bash-Shell mit der folgenden Meldung weitergeleitet.

Creating home directory for first.last.

Could not chdir to home directory /data/X.Y.local/first.last: No such file or directory

-bash-4.1$

Bei jedem Versuch wird mir die folgende AVC-Ablehnungsmeldung angezeigt:

type=AVC msg=audit(1492004159.114:1428): avc:  denied  { create } for  pid=2832 
comm="mkhomedir" name="x.y.local"
scontext=system_u:system_r:oddjob_mkhomedir_t:s0-s0:c0.c1023
tcontext=system_u:object_r:default_t:s0 tclass=dir

Habe darauf geachtet, den Kontext für /data zu ändern.

 drwxr-xr-x. root root system_u:object_r:home_root_t:s0 data

Wenn /data denselben Kontext wie /home hat, warum schränkt SELinux dann oddjobd ein, /data/XYlocal/first.last zu erstellen?

# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /selinux
Current mode:                   enforcing
Mode from config file:          enforcing
Policy version:                 24
Policy from config file:        targeted

[AKTUALISIEREN]

Ich bin nicht sicher, ob dies die richtige Lösung ist, aber nach dem Hinzufügen der folgenden drei Einträge können sich Benutzer jetzt anmelden und auf ihre Home-Verzeichnisse zugreifen. Für neue Benutzer werden Verzeichnisse basierend auf den unten definierten Kontexten erstellt.

semanage fcontext -a -t home_root_t /data
semanage fcontext -a -t user_home_dir_t /data/x.y.local
semanage fcontext -a -t user_home_t "/data/x.y.local(/.*)?"

Ist dies der richtige Weg, um dieses Problem zu umgehen?

Antwort1

Dieser letzte Abschnitt semanage fcontextist die richtige Methode, um den Kontext dauerhaft festzulegen. Sie müssen ihn restoreconjedoch ausführen, damit er wirksam wird.

restorecon -Rv /data

restoreconberücksichtigt alles in /etc/selinux/targeted/contexts/files/file_contexts.local, das Ihre benutzerdefinierten fcontexts enthalten sollte, die Sie gerade hinzugefügt haben mitsemanage

Um diese Kontexte vorübergehend festzulegen, verwenden Sie den folgenden chconBefehl:

chcon -Rv -t home_root_t /data 

Antwort2

Beim Verschieben von Home-Verzeichnissen ist die beste Lösung wahrscheinlich die Verwendung des EQUAL-Mechanismus, wie semanage fcontextindiese Antwort auf Serverfehler:

semanage fcontext -a -e /home /data

Damit wird sichergestellt, dass alle Regeln des ursprünglichen Heimatstandortes auch für den neuen gelten.

verwandte Informationen