Wir verwenden SSSD, um Benutzer auf CentOS-Servern zu authentifizieren. oddjobd-mkhomedir funktioniert einwandfrei, wenn das Standard-Ausgangsverzeichnis / home ist, aber auf einem bestimmten Server mussten wir das Standard-Ausgangsverzeichnis in / data ändern, das sich auf einem SAN-Mount befindet.
Jedes Mal, wenn ein Benutzer versucht, sich anzumelden, wird er mit der folgenden Meldung in eine Bash-Shell verschoben.
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$
Ich sehe die folgende AVC-Ablehnungsnachricht für jeden Versuch:
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
Stellen Sie sicher, dass Sie den Kontext für / data ändern.
drwxr-xr-x. root root system_u:object_r:home_root_t:s0 data
Wenn / data denselben Kontext wie / home hat, warum beschränkt SELinux oddjobd auf die Erstellung von /data/XYlocal/first.last?
# 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 mir nicht sicher, ob dies der richtige Weg ist, um dies zu lösen, aber nach dem Hinzufügen der folgenden drei Einträge können sich Benutzer jetzt anmelden und zu ihren Home-Verzeichnissen gelangen. Für neue Benutzer werden Verzeichnisse basierend auf dem unten definierten Kontext 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?