Isto é exatamente o que pam_mkhomedir
foi feito.
O pam_mkhomedir
módulo pode criar o diretório inicial do usuário no login, se esse diretório não existir.
Como instalá-lo depende da sua distribuição. Mas você precisaria colocá-lo em um ou mais arquivos /etc/pam.d
.
Por exemplo, no meu sistema, tenho o /etc/pam.d/system-login
que está incluído em todos os outros serviços que realizam login (ssh, gdm, etc).
Eu colocaria pam_mkhomedir.so
na session
pilha, como:
session optional pam_loginuid.so
session required pam_env.so
session optional pam_lastlog.so
session include system-auth
session optional pam_mkhomedir.so # <<< right here
session optional pam_ck_connector.so nox11
session optional pam_gnome_keyring.so auto_start
session optional pam_motd.so motd=/etc/motd
Onde você coloca, é totalmente dependente do que mais há na pilha. Mas você deve colocá-lo antes de qualquer outra coisa que possa precisar do diretório inicial.
Veja man 8 pam_mkhomedir
as opções que ele suporta.