Como criar diretórios iniciais do ZFS usando pam_exec

Como criar diretórios iniciais do ZFS usando pam_exec

Como faço para que o pam_exec.so crie um novo conjunto de dados ZFS do diretório inicial para cada usuário que efetua login via GDM/LDAP? Estou executando o Ubuntu 20.04, usando GDM e nslcd para autenticação LDAP.

A biblioteca mkhomedir do pam ainda não tem suporte nativo para ZFS, então registrei uma solicitação de recurso para isso no github. Até que isso seja implementado, terei que hackear isso sozinho.

ATUALIZAÇÃO: Isso funciona ao fazer login no LDAP a partir do terminal, mas atualmente não funciona com gdm (ou lightdm).

UPDATE2: Funcionou! Atualizei esta postagem apropriadamente.

Adicionei a seguinte linha ao 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

Acabamos usando lightdm em vez de gdm, então substitua gdm por lightdm se você estiver usando lightdm também.

A execução de mkzfshome.sh requer permissões sudo/root, portanto, configuraremos o sudo para dar a todos os membros do grupo isdads-user permissão para executar este script como root e sem inserir uma senha, executando visudo e adicionando uma linha como:

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

Para o arquivo sudoers, onde isdads-user é um grupo do qual todos os usuários que precisarão executar mkzfshome.sh no login são membros.

informação relacionada