Server FTP di rete con ProFTPD e utenti virtuali: differenze tra le versioni

Verificata per Buster
(+ alcune direttive)
(Verificata per Buster)
 
(14 versioni intermedie di 2 utenti non mostrate)
Riga 1: Riga 1:
{{Versioni compatibili}}
{{Versioni compatibili|Wheezy|Jessie|Buster}}
== Introduzione ==
== Introduzione ==
In questa guida verrà spiegata la l'installazione e la configurazione di un server FTP all'interno della propria LAN utilizzando ProFTPD.<br/>
In questa guida verrà spiegata la l'installazione e la configurazione di un server FTP all'interno della propria LAN utilizzando ProFTPD.<br/>
Riga 39: Riga 39:
;--shell /bin/false:L'utente non avrà una shell di login.
;--shell /bin/false:L'utente non avrà una shell di login.
;--uid ''UID'': Numero che rappresenta l'[[UID]] per l'utente virtuale. Importante notare che è attraverso l'UID che ProFTPD identifica un utente e non attraverso il suo nome. Questo porta alla naturale conclusione che è possibile creare utenti virtuali che hanno lo stesso nome degli utenti reali (se presenti) con possibilità di login sul server.<br/>La scelta dell'UID non ha particolari limitazioni ma è fortemente consigliato evitare UID pari a 0 o UID uguale a quello di utenti reali (presenti in "etc/passwd"); è invece possibile avere utenti virtuali con lo stesso UID.
;--uid ''UID'': Numero che rappresenta l'[[UID]] per l'utente virtuale. Importante notare che è attraverso l'UID che ProFTPD identifica un utente e non attraverso il suo nome. Questo porta alla naturale conclusione che è possibile creare utenti virtuali che hanno lo stesso nome degli utenti reali (se presenti) con possibilità di login sul server.<br/>La scelta dell'UID non ha particolari limitazioni ma è fortemente consigliato evitare UID pari a 0 o UID uguale a quello di utenti reali (presenti in "etc/passwd"); è invece possibile avere utenti virtuali con lo stesso UID.
;--file /etc/proftpd/ftpd.passwd:Il percorso e il nome del file che conterrà le informazioni per ciascun utente virtuale.
;--file ''/etc/proftpd/ftpd.passwd'':Il percorso e il nome del file che conterrà le informazioni per ciascun utente virtuale.


Successivamente verrà chiesta la password di cui l'utente si servirà per l'accesso FTP.
Successivamente verrà chiesta la password di cui l'utente si servirà per l'accesso FTP.
Riga 83: Riga 83:
;--gid ''GID'':Il [[GID]] del gruppo. Valgono le stesse considerazioni scritte per l'UID.
;--gid ''GID'':Il [[GID]] del gruppo. Valgono le stesse considerazioni scritte per l'UID.


=== Cancellare un utente o un gruppo virtuale ===
=== Altre operazioni ===
;Cancellare un utente o un gruppo virtuale:
La rimozione di un utente o un gruppo virtuale può essere effettuata utilizzando l'opzione "--delete-user" o "--delete-group":
La rimozione di un utente o un gruppo virtuale può essere effettuata utilizzando l'opzione "--delete-user" o "--delete-group":
<pre>
<pre>
# ftpasswd --group --delete-group --name nomedelgruppo --file /etc/proftpd/ftpd.group
# ftpasswd --group --delete-group --name nomedelgruppo --file /etc/proftpd/ftpd.group
# ftpasswd --passwd --delete-user --name nomedutente --file /etc/proftpd/ftpd.passwd
# ftpasswd --passwd --delete-user --name nomeutente --file /etc/proftpd/ftpd.passwd
</pre>
</pre>


=== Aggiungere un utente a un gruppo ===
;Aggiungere un utente a un gruppo:
Per aggiungere un utente a un gruppo '''già esistente''' bisogna modificare il file ''ftpd.group''. I diversi utenti appartenenti al gruppo sono separati da una virgola.<br/>
Per aggiungere un utente a un gruppo '''già esistente''' bisogna modificare il file ''ftpd.group''. I diversi utenti appartenenti al gruppo sono separati da una virgola.<br/>
Aggiungiamo, ad esempio, ''paperino'' al gruppo ''ftp-users'':
Aggiungiamo, ad esempio, ''paperino'' al gruppo ''ftp-users'':
  ftp-users:x:3000:pippo,pluto,minnie''',paperino'''
  ftp-users:x:3000:pippo,pluto,minnie''',paperino'''
;Bloccare un utente:
Nel caso si voglia bloccare temporaneamente l'accesso al server FTP di un particolare utente:
<pre>
# ftpasswd --passwd -l --name nomeutente --file /etc/proftpd/ftpd.passwd
</pre>
Per sbloccarlo:
<pre>
# ftpasswd --passwd -u --name nomeutente --file /etc/proftpd/ftpd.passwd
</pre>


=== ''ftpd.passw'' e ''ftpd.group'' ===
=== ''ftpd.passw'' e ''ftpd.group'' ===
Riga 148: Riga 159:


== Configurazione ==
== Configurazione ==
Una volta creati gli utenti e i gruppi virtuali, è necessario modificare la configurazione di ProFTPD per consentirne l'accesso al server FTP.<br/>
Una volta creati gli utenti e i gruppi virtuali, è necessario modificare la configurazione di ProFTPD per consentirgli l'accesso al server FTP.<br/>
La configurazione avverrà lasciando praticamente inalterato il file <code>/etc/proftpd/proftpd.conf</code> (il file di configurazione principale) e creando file di configurazione separati all'interno della directory <code>/etc/proftpd/conf.d/</code>: questo permetterà di mantenere ordinata la configurazione e renderla più leggibile in futuro.
La configurazione avverrà lasciando praticamente inalterato il file <code>/etc/proftpd/proftpd.conf</code> (il file di configurazione principale) e creando file di configurazione separati all'interno della directory <code>/etc/proftpd/conf.d/</code>: questo permetterà di mantenere ordinata la configurazione e renderla più leggibile in futuro.


Riga 183: Riga 194:
</Limit>
</Limit>
</pre>
</pre>
La prima direttiva permette l'accesso solo agli indirizzi IP "192.168.x.x" mentre la seconda permette il login solo al grupp ''ftp-users''. Un client che non soddisfa entrambe le condizioni non ha accesso al server FTP.<br/>
La prima direttiva permette l'accesso solo agli indirizzi IP "192.168.x.x" mentre la seconda permette il login solo al gruppo ''ftp-users''. Un client che non soddisfa entrambe le condizioni non ha accesso al server FTP.<br/>
Chiaramente adattate questa configurazione al vostro caso.
Chiaramente adattate questa configurazione al vostro caso.


Riga 220: Riga 231:
# ftpasswd --group --name ftp-downonly --file /etc/proftpd/ftpd.group -m paperino --gid 4000
# ftpasswd --group --name ftp-downonly --file /etc/proftpd/ftpd.group -m paperino --gid 4000
</pre>
</pre>
Bisognerà aggiungere ''paperino'' anche al gruppo ''ftp-users'' (come spiegato [[#Aggiungere un utente a un gruppo|nel paragrafo precedente]]) per consentirgli un accesso FTP al server.
Bisognerà aggiungere ''paperino'' anche al gruppo ''ftp-users'' (come spiegato [[#Altre operazioni|nel paragrafo precedente (Aggiungere un utente a un gruppo)]]) per permettergli un accesso FTP al server.


Successivamente è necessario modificare il file ''02Direttive.conf'' aggiungendo la riga:
Successivamente è necessario modificare il file ''02Direttive.conf'' aggiungendo la riga:
Riga 242: Riga 253:
# service proftpd restart
# service proftpd restart
</pre>
</pre>
== Quote ==
L'attivazione delle quote potrebbe rivelarsi indispensabile per limitare lo spazio utilizzabile da ciascun utente per conservare i propri file sul server; infatti di default, non c'è nessun limite ai byte o ai file che è possibile inviare al server FTP.<br/>
Nel caso in cui l'amministratore del server abbia già implementato le quote sul filesystem (quindi *non* le quote di ProFTPD), questa configurazione andrebbe bypassata oppure, per non incorrere in problemi, si dovrebbe evitare la creazione di utenti virtuali con lo stesso UID.
Leggere anche la guida [[Installare un server FTP con ProFTPD]] per maggiori informazioni sulla gestione delle quote e le pagine di documentazione lì riportate.
=== Le tabelle ===
Prima di tutto è indispensabile creare le due tabelle necessarie a ProFTPD:
<pre>
# ftpquota --create-table --table-path /etc/proftpd/ftpquota.limittab --type=limit
# ftpquota --create-table --table-path /etc/proftpd/ftpquota.tallytab --type=tally
</pre>
Quindi è il momento di decidere che tipo di quote assegnare e a quali utenti. In questo caso si assegnerà ad ogni utente un limite di 60 MB per i byte inviati (upload):
<pre>
# ftpquota --add-record --type limit --limit-type hard --quota-type user --name pippo --bytes-upload 60 --units Mb --table-path /etc/proftpd/ftpquota.limittab
# ftpquota --add-record --type limit --limit-type hard --quota-type user --name pluto --bytes-upload 60 --units Mb --table-path /etc/proftpd/ftpquota.limittab
# ftpquota --add-record --type limit --limit-type hard --quota-type user --name minnie --bytes-upload 60 --units Mb --table-path /etc/proftpd/ftpquota.limittab
</pre>
Si possono vedere gli effetti del comando precedente con:
<pre>
# ftpquota --show-records --type limit --units Mb --table-path /etc/proftpd/ftpquota.limittab
</pre>
che visualizzerà:
<pre>
-------------------------------------------
  Name: pippo
  Quota Type: User
  Per Session: False
  Limit Type: Hard
    Uploaded Mb:        60.00
    Downloaded Mb:      unlimited
    Transferred Mb:    unlimited
    Uploaded files:    unlimited
    Downloaded files:  unlimited
    Transferred files:  unlimited
-------------------------------------------
  Name: pluto
  Quota Type: User
  Per Session: False
  Limit Type: Hard
    Uploaded Mb:        60.00
    Downloaded Mb:      unlimited
    Transferred Mb:    unlimited
    Uploaded files:    unlimited
    Downloaded files:  unlimited
    Transferred files:  unlimited
-------------------------------------------
  Name: minnie
  Quota Type: User
  Per Session: False
  Limit Type: Hard
    Uploaded Mb:        60.00
    Downloaded Mb:      unlimited
    Transferred Mb:    unlimited
    Uploaded files:    unlimited
    Downloaded files:  unlimited
    Transferred files:  unlimited
</pre>
Il contenuto di <code>ftpquota.tallytab</code> può essere mostrato in modo simile:
<pre>
# ftpquota --show-records --type tally --units Mb --table-path /etc/proftpd/ftpquota.tallytab
ftpquota: (empty table)
</pre>
=== Direttive ===
Assicurasi che nel file <code>proftpd.conf</code> ci siano:
<pre>
<IfModule mod_quotatab.c>
QuotaEngine on
</IfModule>
</pre>
e poi creare il file <code>/etc/proftpd/conf.d/04Quota.conf</code> con:
<pre>
QuotaLimitTable file:/etc/proftpd/ftpquota.limittab
QuotaTallyTable file:/etc/proftpd/ftpquota.tallytab
QuotaDisplayUnits Mb
</pre>
Riavviare ProFTPD:
<pre>
# service proftpd restart
</pre>
=== Test ===
Da un client proviamo a inviare qualche file al server FTP utilizzando, ad esempio, l'utente ''pippo'' e poi controlliamo la tabella "ftpquota.tallytab":
<pre>
# ftpquota --show-records --type tally --units Mb --table-path /etc/proftpd/ftpquota.tallytab
-------------------------------------------
  Name: pippo
  Quota Type: User
    Uploaded Mb:        1.61
    Downloaded Mb:      unlimited
    Transferred Mb:    unlimited
    Uploaded files:    0
    Downloaded files:  0
    Transferred files:  0
</pre>
Il comando mostra i byte inviati da ciascun utente (in questo caso solo ''pippo'' ha, per ora, inviato dati).
È utile sapere che anche il client può conoscere i byte inviati eseguendo il comando "site quota":
<pre>
ftp>site quota
200-La quota corrente per questa sessione è [corrente/limite]
200-Nome: pippo
200-Tipo Quota: Utente
200-Tipo Limite: Hard
200- Inviato Mb:   1.61/60.00
200- Scaricato Mb: illimitato
200- Trasferito Mb: illimitato
200- Inviato file: illimitato
200- Scaricato file: illimitato
200- Trasferito file: illimitato
</pre>
Proviamo anche a cancellare qualche file e rieseguiamo il controllo della quota disponibile per assicurarci che lo spazio utilizzato venga decrementato correttamente:
ftp>delete filevecchio
250 comando DELE eseguito con successo
ftp>site quota
200-La quota corrente per questa sessione è [corrente/limite]
200-Nome: pippo
200-Tipo Quota: Utente
200-Tipo Limite: Hard
200- Inviato Mb:   <span style="color:red">'''1.03'''</span>/60.00
200- Scaricato Mb: illimitato
200- Trasferito Mb: illimitato
200- Inviato file: illimitato
200- Scaricato file: illimitato
200- Trasferito file: illimitato
=== Rimuovere le quote ===
* Cancellare le tabelle <code>ftpquota.limittab</code> e <code>ftpquota.tallytab</code>
* Cancellare il file <code>04Quota.conf</code>
* Disabilitare la gestione delle quote con "QuotaEngine off" in <code>proftpd.conf</code>


== Eliminare la configurazione ==
== Eliminare la configurazione ==
Per eliminare tutta la configurazione ottenuta leggendo questa guida e ritornare ad un server ProFTPD con configurazione iniziale, si può procedere facilmente sfruttando il fatto che le modifiche non hanno toccato minimamente il file principale ''proftpd.conf'':
Per eliminare la configurazione ottenuta leggendo questa guida e ritornare ad un server ProFTPD con configurazione iniziale, si può procedere facilmente sfruttando il fatto che le modifiche hanno toccato poco o nulla il file principale ''proftpd.conf'':
* Cancellare i file creati in ''/etc/proftpd/conf.d/''
* Cancellare i file creati in ''/etc/proftpd/conf.d/''
* Cancellare il file ''/etc/proftpd/ftpd.group''
* Cancellare il file ''/etc/proftpd/ftpd.group''
* Cancellare il file ''/etc/proftpd/ftpd.passwd''
* Cancellare il file ''/etc/proftpd/ftpd.passwd''
* Rimuovere le modifiche eventualemten eseguite in ''/etc/proftpd/proftpd.conf''
* Riavviare ProFTPD:<pre># service proftpd restart</pre>
* Riavviare ProFTPD:<pre># service proftpd restart</pre>


6 999

contributi