Utilisateurs virtuels pure-FTPd et répertoires web
J’ai récemment eu besoin de donner accès à des utilisateurs virtuels de pure-FTPd (installé en suivant ce billet) à l’arborescence d’un serveur web Apache.
Ces utilisateurs virtuels sont associés au compte unix local ftpuser et au groupe ftpgroup. Le problème est que cet utilisateur ftpuser n’a qu’un accès très limité à la racine /var/www du serveur web (lecture seule), qui est la propriété de l’utilisateur www-data.
Apparemment, plusieurs solutions +/- propres existent :
- changer le propriétaire avec chown ou les droits avec chmod
- exécuter Apache comme ftpuser:ftpgroup ou pure-FTPd comme www-data:www-data
2 méthodes un peu borderline d’un point de vue sécurité.
Une solution simple (trouvée sur ce forum anglais) consiste à associer à l’utilisateur virtuel le compte local www-data. Ça fonctionne mais sans autre manipulation, le serveur ftp renverra systématiquement une erreur 530.
Il est alors nécessaire de paramétrer pure-FTPd pour autoriser les connexions d’utilisateurs virtuels associés à des comptes inférieurs à l’UID 1000. Pour cela, éditer le fichier de configuration /etc/pure-ftpd/conf/MinUID.
sudo vim /etc/pure-ftpd/conf/MinUID
Remplacer la valeur 1000 par 33 (qui correspond à l’UID de l’utilisateur www-data) puis redémarrer ensuite le serveur ftp.
sidney_v@core:~$ sudo /etc/init.d/pure-ftpd restart
Restarting ftp server: Running: /usr/sbin/pure-ftpd -l pam -l puredb:/etc/pure-ftpd/pureftpd.pdb -A -O clf:/var/log/pure-ftpd/transfer.log -u 33 -E -B
Pour interdire l’accès des comptes unix au ftp, mettre à no la valeur des fichiers PAMAuthentication et UnixAuthentication situés dans /etc/pure-ftpd/conf.
Si cette méthode présente une faille ou peut être optimisée, n’hésitez pas à réagir !