Cuando un usuario inicia sesión en un sistema y no hay un directorio de inicio, nos gustaría crear el directorio de inicio del usuario utilizando pam_mkhomedir . Esta es una práctica común. Aquí hay una descripción rápida de pam_mkhomedir:
El módulo PAM pam_mkhomedir creará un directorio de inicio de usuarios si no existe cuando comienza la sesión. Esto permite a los usuarios estar presentes en la base de datos central (como NIS, kerberos o LDAP) sin usar un sistema de archivos distribuido o crear previamente una gran cantidad de directorios. El directorio de esqueleto (generalmente / etc / skel /) se usa para copiar archivos predeterminados y también establece una umask para la creación.
Sin embargo, este es un sistema FreeBSD 8.2 que ejecuta ZFS. Primero debemos ejecutar un comando ZFS, porque queremos un sistema de archivos ZFS por usuario . pam_mkhomedir
podemos hacer un mkdir
, pero necesitamos hacer algo como eso zfs create /zpool/home/$USER
.
¿Alguien sabe si es posible usar PAM para ejecutar comandos durante la primera sesión de inicio de sesión de un usuario?
Respuestas:
Hay un módulo PAM llamado
pam_exec
: si escribe una secuencia de comandos que comprueba y / o crea el volumen ZFS, puede encadenar esto en sus reglas PAM existentes y mantener las cosas bien sin asumir un inicio de sesión interactivo, shells predeterminados y directorios de esqueleto, etc. ejemplo, podrías tenero lo que se adapte a su configuración específica.
(Como Tom Shaw señaló en los comentarios, tener
session required pam_mkhomedir.so
sería redundante).fuente
Vale la pena señalar, como se le preguntó, su pregunta contiene una suposición inválida: incluso PAM no tiene idea si es el primer inicio de sesión del usuario; solo sabe si el usuario tiene un directorio de inicio o no.
Entonces, con esa advertencia en mente, no es PAM lo que lo hace, pero podría ejecutar fácilmente algo
/etc/bashrc
, con el comando precedido por una verificación y seguido de un archivo de puntos en el directorio de inicio del usuario. ¿Necesitas root privs? Essudo
probable que un binario bloqueado adecuadamente o un setuid funcione mejor para usted. Ambas opciones también le dan la opción de colocar el archivo de puntos en algún lugar donde el usuario no pueda modificarlo o eliminarlo (si le importa ese tipo de cosas).fuente
Entonces tienes dos opciones aquí:
1) modifique la fuente para pam_mkhomedir para crear el sistema de archivos zfs primero antes de crear el directorio. 2) deje que pam_mkhomedir se ejecute como lo haría normalmente, luego agregue un script para verificar y ver cuándo hay carpetas que no están en su propio sistema de archivos zfs donde el usuario se ha desconectado. Cuando detecte esos casos, mueva el directorio / home, cree el sistema de archivos y luego vuelva a mover los archivos al directorio.
Sospecho que dejar a un usuario en la página principal / principal durante un día inicial no causará demasiados problemas, por lo que elegiría la última opción, es más simple.
fuente