Se você quer que o diretório seja criado quando você su, assim como no login, então pode valer a pena testar / adicionar a seguinte linha em /etc/pam.d/su:
session optional pam_oddjob_mkhomedir.so
Eu tenho um RHEL 6.5 que autentica contra um servidor AD, esse lado está funcionando bem.
A máquina também está executando um aplicativo da web que usa um módulo PAM para autenticar.
Copiei o login para criar um módulo pam para uso pelo aplicativo da web. (rstudio-server) e o login está funcionando perfeitamente.
No entanto, se o usuário não tiver efetuado login antes, seu diretório pessoal não será criado por pam_oddjob_mkhomedir se eu for o SU para esse usuário, o diretório inicial será criado instantaneamente.
Eu configurei o selinux para permissivo até que eu consiga isso, e eu estou tentando tanto o pam_mkhomedir.so quanto o pam_oddjob_mkhomedir.so (ambos estão no lugar e o serviço está funcionando)
no prob Eu acho .. não está iniciando uma sessão é apenas authing do PAM então eu tento colocar a linha chamando mkhomedir em auth, mas não está funcionando.
testando com pamtester:
# pamtester rstudio 00064742 "authenticate"
Password:
pamtester: successfully authenticated
# pamtester rstudio 00064742 "open_session"
Creating home directory for 00064742.
pamtester: sucessfully opened a session
Como você pode ver, se uma sessão é aberta, o diretório home é criado, mas não sob auth.
Aqui está o arquivo pam relevante.
pam.d]# cat rstudio
#%PAM-1.0
auth [user_unknown=ignore success=ok ignore=ignore default=bad] pam_securetty.so
auth required pam_warn.so
auth include system-auth
#auth optional pam_mkhomedir.so skel=/etc/skel/ umask=0077
auth optional pam_oddjob_mkhomedir.so
account required pam_nologin.so
account include system-auth
password include system-auth
# pam_selinux.so close should be the first session rule
session required pam_selinux.so close
session required pam_oddjob_mkhomedir.so debug
session optional pam_mkhomedir.so skel=/etc/skel/ umask=0077
session required pam_loginuid.so
session optional pam_console.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session required pam_selinux.so open
session required pam_namespace.so
session optional pam_keyinit.so force revoke
session include system-auth
#-session optional pam_ck_connector.so
Eu não posso, para a vida de mim, ver qualquer maneira de conseguir um emprego estranho para criar o homedir do usuário até que uma sessão seja aberta.
Alguém pode sugerir uma maneira de fazer isso funcionar?
Eu teria pensado que apenas: auth opcional pam_oddjob_mkhomedir.so
Teria feito isso. mas não tanto.
alguma verificação:
# service oddjobd status
oddjobd (pid 2427) is running...
# rpm -qa | grep oddjob
oddjob-0.30-5.el6.x86_64
oddjob-mkhomedir-0.30-5.el6.x86_64
# getenforce
Permissive
Uma outra ideia que estou tentando é usar o pam_script.
Adicionei isso ao arquivo pam rstudio:
auth required pam_script.so onerr=success dir=/etc/pam-script.d
Eu criei um arquivo em /etc/pam-script.d e coloquei nele:
#!/bin/sh
dbus-send --system --dest=com.redhat.oddjob_mkhomedir --print-reply / com.redhat.oddjob_mkhomedir.mkhomedirfor string:"$PAM_USER"
Em teoria, isso deve dar certo. Eu não gosto muito de fazer isso dessa maneira. me ofende de alguma forma.
Se você quer que o diretório seja criado quando você su, assim como no login, então pode valer a pena testar / adicionar a seguinte linha em /etc/pam.d/su:
session optional pam_oddjob_mkhomedir.so
No Ubuntu 18 eu tive um problema semelhante, parece que a versão da comunidade R-Studio só respeita "auth" não "sessão"
A solução alternativa era introduzir o /etc/pam.d/rstudio da seguinte forma:
auth [success=ok new_authtok_reqd=ok ignore=ignore user_unknown=bad default=die] pam_exec.so /etc/pam.d/mkhome.sh
@include common-auth
@include common-account
@include common-password
@include common-session
com /etc/pam.d/mkhome.sh apenas / bin / su -l $ PAM_USER -c exit 2 > / dev / null