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

9

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?

Abhi
fuente
No estoy seguro de si esto es relevante para su problema, pero me ha causado dolor en el pasado: linux.die.net/man/8/nfs_selinux
0xSheepdog

Respuestas:

4

Esa última sección con semanage fcontextes la forma correcta para fijar permanentemente el sí de contexto. Sin restoreconembargo, deberás correr para que surta efecto.

restorecon -Rv /data

restorecontomará en cuenta cualquier cosa /etc/selinux/targeted/contexts/files/file_contexts.localque contenga los fcontextos personalizados que acaba de agregar usandosemanage

Para establecer estos contextos temporalmente, consulte el chconcomando:

chcon -Rv -t home_root_t /data 
Patricio
fuente
1

Al reubicar directorios de inicio, la mejor solución es probablemente usar el mecanismo EQUAL de semanage fcontextcomo se describe en esta respuesta en caso de falla del servidor :

semanage fcontext -a -e /home /data

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

mnk
fuente