Pregunta Aplicación web RHEL 6.5 PAM AUTH pam_oddjob_mkhomedir


Tengo un RHEL 6.5 que se autentica contra un servidor de AD, ese lado está funcionando bien.

La máquina también está ejecutando una aplicación web que utiliza un módulo PAM para autenticarse.

Copié el inicio de sesión para hacer un módulo pam para uso de la aplicación web. (rstudio-server) y el inicio de sesión funciona perfectamente.

Sin embargo, si el usuario no ha iniciado sesión antes, pam_oddjob_mkhomedir no creará su directorio de inicio si I SU a ese usuario, el directorio de inicio se crea instantáneamente.

He configurado Selinux como permisivo hasta que lo solucioné, y estoy probando pam_mkhomedir.so y pam_oddjob_mkhomedir.so (ambos están en su lugar y el servicio impar de trabajo está funcionando)

no hay problema, creo ... no es el inicio de una sesión, es solo un proceso automático de PAM, así que trato de poner la línea que llama mkhomedir en auth, pero no funciona.

Pruebas con pamtester:

# pamtester rstudio 00064742 "authenticate"
Password: 
pamtester: successfully authenticated



# pamtester rstudio 00064742 "open_session"
Creating home directory for 00064742.
pamtester: sucessfully opened a session

Como puede ver, si se abre una sesión, se crea el directorio de inicio, pero no bajo autenticación.

Aquí está el archivo pam relevante.

pam.d]# cat rstudio
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth       required     pam_warn.so
auth       include      system-auth
#auth    optional     pam_mkhomedir.so skel=/etc/skel/ umask=0077
auth    optional     pam_oddjob_mkhomedir.so
account    required     pam_nologin.so
account    include      system-auth
password   include      system-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_oddjob_mkhomedir.so debug
session    optional     pam_mkhomedir.so skel=/etc/skel/ umask=0077
session    required     pam_loginuid.so
session    optional     pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      system-auth
#-session   optional     pam_ck_connector.so

Por mi vida, no puedo ver ninguna manera de hacer impares para crear homedir de usuarios hasta que se abra una sesión.

¿Alguien puede sugerir una manera de hacer que esto funcione?

Yo hubiera pensado que solo auth opcional pam_oddjob_mkhomedir.so

Lo habría hecho. Pero no tanto.

alguna verificación:

# service oddjobd status
oddjobd (pid  2427) is running...

# rpm -qa | grep oddjob
oddjob-0.30-5.el6.x86_64
oddjob-mkhomedir-0.30-5.el6.x86_64


# getenforce
Permissive

Otra idea que estoy intentando es usar pam_script.

He añadido esto al archivo pam rstudio:

auth       required     pam_script.so onerr=success dir=/etc/pam-script.d

Y he creado un archivo en /etc/pam-script.d y lo puse en él:

#!/bin/sh

dbus-send --system --dest=com.redhat.oddjob_mkhomedir --print-reply / com.redhat.oddjob_mkhomedir.mkhomedirfor string:"$PAM_USER"

En teoría, eso debería hacer el truco ... aunque no me gusta mucho hacerlo de esta manera. me ofende de alguna manera


5
2017-07-11 08:48


origen


¿Desea que se cree un directorio de inicio de usuario sin iniciar sesión? - c4f4t0r
Bueno, sí, nadie inicia sesión en este sistema a través de ningún otro método, pero yo mismo, todos usaremos rstudio, y rstudio-server requiere que los usuarios tengan un directorio principal, de lo contrario no tiene dónde almacenar sus archivos. - Frank Hauptle
Sobre el tema de pam_script, no funcionó, sin embargo pam_exec sí (con exactamente el mismo script) cuando se ejecuta usando pamtester con autorización, es decir: pamtester rstudio 00043212 "authorize" funciona ahora debido a que mi script pam_exec realiza la misma llamada a dbus Ese oddjob lo hace cuando corre. - Frank Hauptle
Sin embargo, cuando rstudio-server lo autoriza, todavía no crea el directorio de inicio, lo que me hace pensar que la última versión de rstudio no se está elevando cuando se autentica, ya que los documentos parecen sugerir que debería hacerlo. Pensar en editar el perfil de trabajo impar para mkhomedir para que permita a este usuario de bajo nivel de privilegio realizar el trabajo solo para ver si funciona. Si es así, creo que la respuesta es volver a una versión anterior de rstudio-server para ver si eso funciona mejor # ps aux | grep rserver 495 21934 0.1 0.0 212220 2260? Ssl 10:55 0:00 / usr / lib / rstudio-server / bin / rserver - Frank Hauptle
Encontré mi propia respuesta. use pam_exec.so y llámelo desde auth en lugar de session, apúntelo a un script que ejecute el comando del sistema dbus mkhomedirfor. / bin / dbus-send --sistema --dest = com.redhat.oddjob_mkhomedir --print-reply / com.redhat.oddjob_mkhomedir.mkhomedir para la cadena: "PAM_USER" pone: sleep 5 al final para asegurarse de que tenga tiempo de Crea el homedir antes de usar rstudio. ¡Bueno para ir! También podría modificar la fuente de un módulo de autenticación PAM y agregarle una llamada de sesión abierta. puede que tenga que editar el archivo / etc / dbus-1 / mkhomedir para permitir que el usuario rstudio_server ejecute el comando dbus. - Frank Hauptle


Respuestas:


Si desea que el directorio se cree cuando está utilizando su, así como al iniciar sesión, entonces puede valer la pena probar / agregar la siguiente línea a /etc/pam.d/su:

session optional pam_oddjob_mkhomedir.so


0
2018-03-08 16:42