====== Install vsftpd ======
Après avoir longtemps utilisé pure-ftpd, dont je reste très content, je suis passé à vsftpd juste parce que pure-ftpd demande de modifier les "capabilites" des VM openvz, et vsftpd non... (mais pure-ftpd permet d'utiliser des quotas sur les users virtuels, sa conf est assez simple et il est aussi très sécure donc reste un excellent choix en général).
===== Conf en users virtuels only (txt file) =====
Pour mon usage, je préfère n'avoir que des users virtuels, et me passer de base de données pour l'authentification. On prendra donc la solution d'un fichier texte que l'on créé avec htpasswd (idem apache donc)
aptitude install vsftpd
# et on aura besoin de ça pour utiliser pam avec un fichier txt user/pass
aptitude install libpam-pwdfile
Configuration de base de /etc/vsftpd.conf
anonymous_enable=NO
# un user pour faire tourner le server
nopriv_user=ftpserver
#On definit le nombre maximum d’utilisateurs connectés
max_clients=20
#Nombre maximum d’utilisateurs par IP
max_per_ip=5
# mode passif autorisé
pasv_enable=YES
# avec check IP
pasv_promiscuous=NO
# On autorise les users virtuels
# on laisse virtual_use_local_privs à no ce qui donne à nos users virtuels les même droits que "anonyme" (quasi rien)
guest_enable=YES
guest_username=ftpguestuser
anon_umask=022
# on ajoute une racine par défaut et un rep par défaut (la connexion sera refusée s'il n'existe pas)
local_root=/var/ftp/$USER
user_sub_token=$USER
# le dossier des conf par user
user_config_dir=/etc/vsftpd.d/users_conf
(cf http://vsftpd.beasts.org/vsftpd_conf.html)
Reste à configurer l'autentification avec pam (cf http://howto.gumph.org/content/setup-virtual-users-and-directories-in-vsftpd/), dans /etc/pam.d/vsftpd on remplace la ligne auth par
auth required pam_pwdfile.so pwdfile /etc/vsftpd.d/passwd
account required pam_permit.so
Et on ajoute nos users avec les commandes classiques htpasswd (on peut d'ailleurs utiliser le même fichier htpasswd que celui d'un vhost apache, pour partager les user/pass entre l'authentif http et le ftp)
htpasswd /etc/vsftpd.d/passwd mon_nouveau_user
# et on créé son fichier de conf kivabien
echo 'local_root=/chemin/vers/rep/kivabien
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES' > /etc/vsftpd.d/users_conf/mon_nouveau_user