Estamos utilizando SSSD para autenticar usuarios en servidores CentOS. oddjobd-mkhomedir funciona perfectamente bien cuando el directorio de inicio predeterminado es / home, pero en un servidor en particular, tuvimos que cambiar el directorio de inicio predeterminado a / data, que está en un montaje SAN.
Ahora, cada vez que un usuario intenta iniciar sesión, se deja caer en un shell bash con el siguiente mensaje.
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$
Veo el siguiente mensaje de denegación de AVC por cada intento:
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
Se aseguró de cambiar el contexto de / data.
drwxr-xr-x. root root system_u:object_r:home_root_t:s0 data
Si / data tiene el mismo contexto que / home, ¿por qué SELinux restringe oddjobd para crear /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
[ACTUALIZAR]
No estoy seguro de si esta es la forma correcta de resolver esto, pero después de agregar las siguientes tres entradas, los usuarios ahora pueden iniciar sesión y acceder a sus directorios principales. Para los nuevos directorios de usuarios se crean en función del contexto que se define a continuación.
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(/.*)?"
¿Es esta la forma correcta de solucionar este problema?