J'ai intégré VSFTPD avec pam_mysql, ce qui me permet de me connecter avec succès à un serveur FTP en utilisant des comptes conservés dans une base de données mysql.
Je dois créer automatiquement un répertoire pour l'utilisateur si c'est la première fois qu'il se connecte au serveur. J'ai vu des suggestions d'utiliser pam_script ou pam_exec pour y parvenir.
À titre d'essai, j'ai révisé mon /etc/pam.d/vsftpd
pour inclure la ligne suivante :
account optional pam_exec.so debug log=/tmp/pam_exec.log /etc/pam-script/test.sh
Le script fait juste écho à l'utilisateur :
#!/bin/sh
echo $PAM_USER
Sur /var/log/auth.log
Je peux voir que le script est appelé :
Jan 16 17:15:44 ip-172-31-8-61 vsftpd: pam_exec(vsftpd:auth): Calling /etc/pam-script/dir.sh ...
Cependant, la connexion FTP ne se fait pas. La connexion se bloque. Toutes les connexions suivantes échouent et je dois redémarrer le service pour qu'il réponde.
J'ai exclu les problèmes avec la configuration/script en modifiant également la configuration PAM pour les connexions SSHD, ce qui semble fonctionner correctement.
J'ai également testé cela en utilisant le module pam_script et j'obtiens des résultats similaires lorsque le module pam_script_auth
script est appelé.
Le problème semble être que VSFTP n'est pas capable de terminer une connexion s'il y a des étapes supplémentaires dans la configuration de PAM. J'ai essayé différents paramètres (auth, account) et différents niveaux d'exigence (optional, required) sans succès.
Quelqu'un a une idée ?
Mise à jour : Ubuntu 12.04. En utilisant une version modifiée de VSFTP comme décrit ici