Consegui fazê-lo funcionar usando o pam_exec:
-
Crie um script para configurar o ecryptfs para todos os novos usuários em
/etc/security/ecryptfs
:#!/bin/bash home='eval echo ~$PAM_USER' ecryptfs=/home/.ecryptfs/$PAM_USER/.ecryptfs read password if [ -d $ecryptfs ]; then # ecryptfs is set echo "Ecryptfs is already configured" exit 0 elif [ 'id -u' == 0 ]; then # Setup ecryptfs and make home umask 077 mkdir -p $home group='id -gn $PAM_USER' chown $PAM_USER:$group $home ecryptfs-setup-private -u $PAM_USER -l "$password" -b --nopwcheck exit 0 else # NOT ROOT echo "Cannot login with 'su' for the first time" exit 1 fi
Verifique se o script é executável:
sudo chmod a+rx /etc/security/ecryptfs
-
Adicione uma entrada para executá-lo com pam_exec na autenticação:
sudo vim /etc/pam.d/common_auth
Adicione as seguintes linhas:
auth required pam_exec.so expose_authtok /etc/security/ecryptfs auth optional pam_ecryptfs.so unwrap
O
pam_exec
é definido como obrigatório, porque não será configurado o ecryptfs se o script não for executado como raiz. Esse é o caso sesu
for usado de um usuário não raiz. Portanto, se ecryptfs não for configurado esu
for usado (ou seja, quando o usuário tentar efetuar login pela primeira vez usandosu
), ele será recusado. Como tal, garantimos que o usuário não possa efetuar login sem uma configuração do ecryptfs. -
Crie outro script para preencher o diretório inicial no lugar de pam_mkhomedir
sudo vim /etc/security/mkhome
Este script irá copiar tudo em / etc / skel se o arquivo .donotremove não existir.
#!/bin/bash cd ~ if [ ! -f .donotremove ] ; then echo Copying /etc/skel cp -ra /etc/skel/* ~ touch .donotremove fi
Verifique também se este arquivo é executável:
sudo chmod a+rx /etc/security/mkhome
-
Adicione outra entrada para executar este script em uma sessão
sudo vim /etc/pam.d/common_session
Adicione as seguintes linhas:
session optional pam_ecryptfs.so unwrap session optional pam_exec.so seteuid /etc/security/mkhome
Agora, os usuários do LDAP podem efetuar login e ter um diretório inicial criptografado do ecryptfs.
Atualizar
Em vez de editar os arquivos em /etc/pam.d
diretamente (o que geralmente não é recomendado), é melhor aplicar as configurações como PAMConfig perfil.
Basta colar esse código em um novo arquivo /usr/share/pam-configs/ecryptfs-nonlocal
:
Name: Enable EcryptFS for users from remote directories such as LDAP.
Default: no
Priority: 0
Conflicts: ecryptfs-utils
Auth-Type: Additional
Auth-Final:
required pam_exec.so expose_authtok /etc/security/ecryptfs
optional pam_ecryptfs.so unwrap
Session-Type: Additional
Session-Final:
optional pam_ecryptfs.so unwrap
optional pam_exec.so seteuid /etc/security/mkhome
Password-Type: Additional
Password-Final:
optional pam_ecryptfs.so
E, em seguida, execute pam-auth-update
:
Verifique Enable EcryptFS for users from remote directories such as LDAP.
e certifique-se de que eCryptfs Key/Mount Management
esteja desmarcado . Deixe todas as outras opções de acordo com suas preferências.
Isso garante que as configurações relevantes em /etc/pam.d
sejam aplicadas e permaneçam lá.