Ancora sulla gestione delle utenze in vsftpd

Un approfondimento relativo al recente post in cui si parlava della gestione degli utenti che possono accedere al servizio ftp di un server e su come usare utenti che non siano utenti di sistema.

vsftpd-logo

Ne abbiamo parlato recentemente, nel post Gestione delle utenze in vsftpd, dove si tratta l’argomento della configurazione di vsftpd con l’obiettivo di fare in modo che gli utenti possano accedere solo alla propria home directory.

Giustamente qualcuno mi ha chiesto (e non siate timidi, i messaggi potete inserirli nei commenti, non solo mandarmeli in privato ;) ) come potere ottenere lo stesso risultato senza però creare utenti di sistema.
Quindi lo scopo di questo approfondimento è come avere degli utenti specifici di vsftpd, altrimenti detti utenti virtuali, che non possano spostarsi dalla propria home directory.

Questo tipo di situazione è piuttosto comune quando si offre un servizio web in hosting e si hanno quindi clienti che amministrano il proprio sito. Non è quindi necessario che siano utenti altrimenti abilitati e si trovano tutti ad accedere una serie di sottodirectory di quella in cui si trova il vero web server, ma non devono potere andare l’uno nello spazio riservato dell’altro.La cosa è interessante e leggermente più complessa rispetto al caso precedente, vediamo nel dettaglio i passi necessari.

Supponiamo innanzitutto che lo spazio web di ogni utente si trovi a partire da una posizione che decidiamo essere /var/www/virtual. Al di sotto di questa si trovano le specifiche home directory in cui ogni utente inserisce i propri file per la pubblicazione.

Il primo punto è quello relativo alla creazione di un elenco di utenti -e della relativa password- visto che non sono definiti altrimenti.
Per fare questo creiamo un file di testo che chiamiamo `virtual-users.txt’ e che contiene, su righe alternato, i nomi e le password per gli utenti:

Alice
qwerty654
Bruno
asdfgh321
Carla
zxcvb987

Generiamo poi il file di database corrispondente:

# db_load -T -t hash -f virtual-users.txt /etc/vsftpd/virtual-users.db

Quindi creiamo un file PAM che utilizzi il database utenti appena creato:

auth required pam_userdb.so db=/etc/vsftpd/virtual-users
account required pam_userdb.so db=/etc/vsftpd/virtual-users

Passiamo poi alla configurazione di VSFTPD.
Creiamo il file /etc/vsftpd/vsftpd.conf, o modifichiamo quello esistente (in questo caso ne creiamo prima una copia di riserva !):

anonymous_enable=NO
local_enable=YES
guest_enable=YES
virtual_use_local_privs=YES
write_enable=YES
pam_service_name=vsftpd-virtual
user_sub_token=$USER
local_root=/var/www/virtual/$USER
chroot_local_user=YES
hide_ids=YES
listen=YES

Creazione delle home directory.
Se non sono già presenti, creiamo le specifiche directory per ogni utente e ne cambiamo il proprietario in modo che sia l’utente `ftp’:
# mkdir /var/www/virtual/Alice
# chown ftp:ftp /var/www/virtual/Alice

Attivare, o far ripartire, il servizio vsftpd e verificare il corretto funzionamento.

2 comments

  • k

    e per creare un nuovo utente virtuale? ricarico tutte le volte il file :(
    e per creare più utenti che puntino alla stessa home dir?

    • Mikis

      Puoi alimentare il file degli utenti virtuali direttamente (puoi anche cancellare o modificare utenti, fintantochè vengono rispettati gli altri dati, ad esempio i nomi delle directory).
      Un buon sistema per avere più utenti che usano la stessa directory è di creare delle directory di comodo, che in effetti sono dei link all(‘unica)a directory desiderata.

Lascia il tuo commento