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 fcontext
es la forma correcta de establecer permanentemente el contexto, sí. Sin embargo , tendrás que ejecutarlo restorecon
para que surta efecto.
restorecon -Rv /data
restorecon
tendrá 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 chcon
comando:
chcon -Rv -t home_root_t /data
Respuesta2
Al reubicar directorios personales, la mejor solución probablemente sea utilizar el mecanismo EQUAL semanage fcontext
como 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.