É exatamente para isso que pam_mkhomedir foi feito.
O módulo pam_mkhomedir pode criar o diretório pessoal 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 em /etc/pam.d .
Por exemplo, no meu sistema eu tenho /etc/pam.d/system-login , que é incluído por todos os outros serviços que realizam login (ssh, gdm, etc).
Eu colocaria pam_mkhomedir.so na pilha session , 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 está na pilha. Mas você deve colocá-lo antes de qualquer coisa que possa precisar do diretório pessoal.
Veja man 8 pam_mkhomedir para as opções que ele suporta.