Eu tenho uma solução alternativa usando o pam_exec, mas não sinto que a montagem de compartilhamentos de arquivos pertença ao framework pam.
Ao inserir as seguintes linhas em /etc/pam.d/password-auth, o script listado no final montará o homedir direito na autenticação de senha. Uma desmontagem lenta é executada em session_close, mas pode não ser a coisa certa a fazer.
Coloque isso em password-auth
auth optional pam_exec.so expose_authtok /usr/bin/pam_mount_cifs.s
e isso
session optional pam_exec.so /usr/bin/pam_mount_cifs.sh
as duas linhas devem ser inseridas após as linhas pam_mkhomedir inseridas pelo comando realm join.
Outra alternativa é usar o pam_mount, conforme descrito em esta postagem , mas você deve compilar e instalar o pam_mount manualmente, pois ele não é fornecido com o CentOS. (ou obtenha do repositório do Nux )
Aqui está o script, ele deve ser salvo como /usr/bin/pam_mount_cifs.sh
#!/bin/bash
# this script is called from pam by adding entries to /etc/pam.d/password-auth like this
#
# auth optional pam_exec.so expose_authtok /usr/bin/pam_mount_cifs.sh
#
# and
#
# session optional pam_exec.so /usr/bin/pam_mount_cifs.sh
# the script assumes that the home dir is already created by pam_mkhomedir and pam_oddjob_mkhomedir.
DOMAIN=my.domain
FILESERVER=fileserver.my.domain
MNTPNT=/home
# turn of globbing because getent returns as string containing a *
set -f
pwstring=$(getent passwd $PAM_USER)
userinfo=(${pwstring//:/ })
USER=$PAM_USER
# strip off @my.domain from user.
SHORTUSER=${USER%@$DOMAIN}
USERUID=${userinfo[2]}
USERGID=${userinfo[3]}
USERDIR=$MNTPNT/$USER
if [ -z "$PAM_TYPE" ]; then
echo this script should only be called from pam
exit 1
fi
if [ $PAM_TYPE = "open_session" ]; then
# nothing to do here, mount happened in auth.
exit 0
fi
if [ $PAM_TYPE = "close_session" ]; then
# this might cause problems if you have services that doesn't create procs in /home. (rstudio is one example)
umount -l $USERDIR
exit 0
fi
if [ ! -d $USERDIR ]; then
mkdir -p $USERDIR
# chown $USERID:$USERGID $USERDIR
fi
# skip if the share is already mounted.
mountpoint -q $USERDIR && exit 0
# make mount.cifs read password from stdin
export PASSWD_FD=0
mount -t cifs //$FILESERVER/$SHORTUSER $USERDIR -o user=$SHORTUSER,uid=$USERUID,gid=$USERGID,noserverino