Chi hosta diversi siti ha la necessità che i propri clienti possano accedere solo ed esclusivamente ai propri file. Un modo semplice è quello di dare loro l’accesso ftp aggiungendo gli utenti e assegnando loro cartelle specifiche del proprio server. Procediamo quindi con l’installazione del server ftp, con la creazione di un ipotetico nuovo utente denominato “NOMEUTENTE” e a cui assegneremo una cartella chiamata “CARTELLADESTINAZIONEFTP”:

apt-get install vsftpd
useradd -g www-data -d /var/www/cartelladidestinazioneftp -s /sbin/nologin nomeutente

NB: al posto di www-data potrebbe anche essere lighttpd oppure apache

chmod g+w /var/www/cartelladidestinazioneftp/
passwd nomeutente

La cosa è importante è che nel file /etc/vsftpd.conf sia presente la variabile pam_service_name=login ; inoltre è possibile modificare il file di configurazione /etc/vsftpd.conf per poter definire alcuni aspetti più particolari del nostro nuovo server:

#per impostare il messaggio di benvenuto alla prima connessione al server ftp
ftpd_banner=example.com FTP server
#abilitatelo per avere un log dettagliato di tutti gli accessi (upload/download). Lo trovate nella cartella /var/log/vsftpd.log ma se volete un'altra cartella di destinazione dovete impostare la variabile vsftpd_log_file
xferlog_enable=YES
#hide_ids serve per occultare gli attributi dei file che verranno mostrati come appartenenti al gruppo e all'utente denominato "ftp". (potreste abilitarlo per motivi di sicurezza)
hide_ids=YES
#impostate il numero massimo di client potrebbe essere utile per non collassare il server, tramite la variabile max_clients
max_clients=20
#max_per_ip limita il numero di connessioni per ip (Free Download Manager e GetRight vi dicono niente?)
max_per_ip=1
#anon_root è la variaibile che se impostata dichiara quale cartella mostrare in caso di accessi anonimi ftp
anon_root=/home/ftp
# disabilita/abilita accesso anonimo ftp
anonymous_enable=NO
# consenti la creazione di file e cartelle
write_enable=YES
#anon_upload_enable se impostata su YES consente l'upload ad utenti anonimi (a patto che write_enable=YES)
anon_upload_enable=NO
#anon_mkdir_write_enable consente la creazione di cartelle ad utenti anonimi (a patto che write_enable=YES)
anon_mkdir_write_enable=NO
# disabilita/abilita gli accessi utente FTP
local_enable=YES
# autentica utenti virtuali
pam_service_name=login
# gli utenti virtuali possono accedere solo alle aree a loro assegnate
chroot_local_user=YES
# avvia vsftpd in modalità stand alone
listen=YES
# porta di ascolto per le connessioni ftp
listen_port=60021
# porta di partenza per l'accesso tramite PASV
pasv_min_port=62222
# massimo indirizzo per l'accesso tramite PASV
pasv_max_port=63333
# abilita la connessione mediante la porta stanard 20 (ftp-data); cambiatela solo se sapete cosa state facendo (esempio: ragioni di sicurezza).
connect_from_port_20=YES
# umask utilizzato per la creazione dei file/cartelle
local_umask=022

In ogni caso per far leggere le modifiche è necessario riavviare il server:

/etc/init.d/vsftpd stop
/etc/init.d/vsftpd start

Per maggiori dettagli usate il comando man relativamente al file vsftpd.conf

Bibliografia:
http://linuxforfun.net/2008/04/15/vsftpd-virtual-users-another-approach/
http://www.unix-tutorials.com/go.php?id=852