Cómo crear directorios de inicio ZFS usando pam_exec

Cómo crear directorios de inicio ZFS usando pam_exec

¿Cómo consigo que pam_exec.so cree un nuevo conjunto de datos ZFS del directorio de inicio para cada usuario que inicia sesión a través de GDM/LDAP? Estoy ejecutando Ubuntu 20.04, usando GDM y nslcd para la autenticación LDAP.

La biblioteca mkhomedir de pam aún no tiene soporte nativo para ZFS, así que presenté una solicitud de función para esto en github. Hasta que eso se implemente, tendré que solucionarlo yo mismo.

ACTUALIZACIÓN: Esto funciona al iniciar sesión en LDAP desde la terminal, pero actualmente no funciona con gdm (o lightdm).

ACTUALIZACIÓN2: ¡Lo tengo funcionando! Actualicé esta publicación apropiadamente.

Agregué la siguiente línea al final de /etc/pam.d/common-session

session     optional        pam_exec.so /usr/local/bin/mkzfshome.sh

/usr/local/bin/mkzfshome.sh

#!/bin/bash
if [ "$PAM_USER" != "gdm" ] && [ ! -d "/home/$PAM_USER" ] ; then
    zfs create -o mountpoint=/home/$PAM_USER astarray/home/$PAM_USER 
    chown $PAM_USER:1001 /home/$PAM_USER
    chmod go-rwx /home/$PAM_USER
fi

Terminamos usando lightdm en lugar de gdm, así que reemplaza gdm con lightdm si también estás usando lightdm.

La ejecución de mkzfshome.sh requiere permisos sudo/root, por lo que configuraremos sudo para otorgar permiso a todos los miembros del grupo de usuarios isdads para ejecutar este script como root y sin ingresar una contraseña ejecutando visudo y agregando una línea como:

%isdads-user ALL=(ALL) NOPASSWD: /usr/local/bin/mkzfshome.sh

Al archivo sudoers, donde isdads-user es un grupo del que son miembros todos los usuarios que necesitarán ejecutar mkzfshome.sh al iniciar sesión.

información relacionada