Utenti virtuali su vsftpd
Inviato da Matteo Mattei / 4th febbraio 2011
Sono solito configurare vsftp come FTP server sui web server per permettere un accesso FTP sulla base del nome a dominio. Qualche giorno fa un mio cliente mi ha chiesto di creare multipli utenti ftp per un singolo dominio, ognuno con una root differente all’interno dello stesso dominio.
Questa è sempre stata la configurazione base di vsftpd (/etc/vsftpd.conf) che utilizzo:
listen=YES anonymous_enable=NO local_enable=YES virtual_use_local_privs=YES write_enable=YES connect_from_port_20=YES xferlog_enable=YES pam_service_name=vsftpd guest_enable=YES guest_username=www-data user_sub_token=$USER local_root=/var/www/$USER chroot_local_user=YES hide_ids=YES force_dot_files=YES ftpd_banner=Welcome to my private FTP service. local_umask=022
e questo è il mio /etc/pam.d/vsftpd
auth required pam_pwdfile.so pwdfile /etc/ftpd.passwd account required pam_permit.so
La prima volta ho creato il file /etc/ftpd.passwd in questo modo:
htpasswd -c -d -b /etc/ftpd.passwd domain1.com <password>
Per gli utenti futuri, semplicemente va evitato il parametro ‘-c’:
htpasswd -d -b /etc/ftpd.passwd domain2.com <password>
Con questa configurazione tutti gli utenti hanno le seguenti credenziali:
- host: domain1.com
- username: domain1.com
- password: password
- port: 21
- Root folder: /var/www/domain1/
Adesso il punto è: come possiamo creare utenti multipli per un singolo dominio e ognuno con una cartella root diversa?
La risposta è abbastanza semplice, seguitemi!
Create la directory /var/www/users e aggiungete la seguente linea alla fine di /etc/vsftpd.conf:
user_config_dir=/var/www/users
All’interno della directory /var/www/users create un file per ogni utente virtuale (per esempio per l’utente user1.domain1.com) contenente una linea con la directory base per quell’utente:
echo "local_root=/var/www/domain1.com/pub/user1" > /var/www/users/user1.domain1.com
Adesso aggiungete il nuovo nome utente e password al file /etc/ftpd.passwd come al solito:
htpasswd -d -b /etc/ftpd.passwd user1.domain1.com <password>
Riavviate il demone vsftpd e testate la vostra nuova configurazione!