SELinux no permite que oddjobd-mkhomedir cree el directorio de inicio del usuario en una ubicación no estándar

SELinux no permite que oddjobd-mkhomedir cree el directorio de inicio del usuario en una ubicación no estándar

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 le coloca 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 para 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

Me 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 de inicio. Para los directorios de nuevos usuarios, se crean según el contexto definido 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?

Respuesta1

Esa última sección semanage fcontextes la forma correcta de establecer permanentemente el contexto, sí. Sin embargo , tendrás que ejecutarlo restoreconpara que surta efecto.

restorecon -Rv /data

restorecontendrá en cuenta cualquier cosa en /etc/selinux/targeted/contexts/files/file_contexts.local, que debería tener sus contextos personalizados que acaba de agregar usandosemanage

Para configurar estos contextos temporalmente, consulte el chconcomando:

chcon -Rv -t home_root_t /data 

Respuesta2

Al reubicar directorios personales, la mejor solución probablemente sea utilizar el mecanismo EQUAL semanage fcontextcomo se describe enesta respuesta sobre falla del servidor:

semanage fcontext -a -e /home /data

Esto es para garantizar que todas las reglas de la ubicación original también se apliquen a la nueva.

información relacionada