
¿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.