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

9

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?

Abhi
quelle
Ich bin
0xSheepdog

Antworten:

4

Dieser letzte Abschnitt mit semanage fcontextist der richtige Weg, um den Kontext dauerhaft auf Ja zu setzen. Sie müssen jedoch ausgeführt werden restorecon, damit es wirksam wird.

restorecon -Rv /data

restoreconberücksichtigt alles in /etc/selinux/targeted/contexts/files/file_contexts.local, was Ihre benutzerdefinierten Kontexte haben sollte, die Sie gerade mit hinzugefügt habensemanage

Informationen zum vorübergehenden Festlegen dieser Kontexte finden Sie im folgenden chconBefehl:

chcon -Rv -t home_root_t /data 
Patrick
quelle
1

Beim Verschieben von Home-Verzeichnissen besteht die beste Lösung wahrscheinlich darin, den EQUAL-Mechanismus zu verwenden, der semanage fcontextin dieser Antwort bei Serverfehlern beschrieben ist :

semanage fcontext -a -e /home /data

Damit soll sichergestellt werden, dass alle Regeln des ursprünglichen Heimatorts auch auf den neuen angewendet werden.

mnk
quelle