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

Quote
mNessun oggetto della modifica
(Quote)
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 253: Riga 253:
# service proftpd restart
# service proftpd restart
</pre>
</pre>
== Quote ==
Le quote (''quota'') sono il meccanismo con cui ProFTPD impone dei limiti al numero di byte/file che possono essere inviati/trasferiti/scaricati da/al server FTP. Questo evita che le directory diventino luoghi in cui trovare un po' di tutto e, soprattutto, consumino senza alcun limite lo spazio disponibile sul disco.<br/>
Il meccanismo delle quote può essere implementato dall'amministratore direttamente a livello di filesystem: in questo caso si cerchi di evitare utenti virtuali con lo stesso UID per non incorrere in problemi.
=== Le tabelle ===
Prima di tutto è indispensabile creare le due tabelle necessarie a ProFTPD:
;''ftpquota.limittab'':permette a ProFTPD di conoscere che tipo di limite imporre e a chi (utente, gruppo, classe).
;''ftpquota.tallytab'':permette a ProFTPD di tener traccia dei byte/file trasferiti/inviati/scaricati dal server.
<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à un limite per i byte inviati (upload) per ogni utente:
<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>
;--add-record: aggiunge un record alla tabella specificata.
;--type limit: indica che si sta operando sulla tabella "ftpquota.limittab".
;--limit-type hard: il limite sarà "hard", cioè non sarà possibile inviare un file se, alla fine dell'operazione, viene superato il limite imposto.
;--quota-type user: necessario per operare sui limiti per gli utenti.
;--name ''nome'': il nome dell'utente interessato dal limite imposto.
;--bytes-upload 60 --units Mb: il tipo di limite (byte in upload) espresso in Megabyte, in questo caso ci sarà un limite di 60MB.
;--table-path ''/etc/proftpd/ftpquota.limittab'': il percorso e il nome della tabella su cui si sta agendo..
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>
Si può anche utilizzare lo stesso comando sulla tabella <code>ftpquota.tallytab</code>:
<pre>
# ftpquota --show-records --type tally --units Mb --table-path /etc/proftpd/ftpquota.tallytab
ftpquota: (empty table)
</pre>
inizialmente vuota.
=== 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>
per informare ProFTPD sui nomi e i percorsi delle due tabelle. La direttiva "QuotaDisplayUnits" serve solo a indicare la quota in Megabyte (anziché in byte) se il client ne fa richiesta.
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
300- Inviato file: illimitato
200- Scaricato file: illimitato
200- Trasferito file: illimitato
</pre>
=== 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