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 fcontext
ist die richtige Methode, um den Kontext dauerhaft festzulegen. Sie müssen ihn restorecon
jedoch ausführen, damit er wirksam wird.
restorecon -Rv /data
restorecon
berü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 chcon
Befehl:
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 fcontext
indiese 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.