Jaminto ha fatto un ottimo lavoro nel rispondere alla domanda, ma di recente ho seguito personalmente il processo e volevo ampliare la risposta di Jaminto.
Suppongo che tu abbia già creato un'istanza EC2 e abbia associato un indirizzo IP elastico.
Passaggio 1: installare vsftpd
SSH sul tuo server EC2. Genere:
> sudo yum install vsftpd
Questo dovrebbe installare vsftpd.
Passaggio 2: aprire le porte FTP sull'istanza EC2
Successivamente, dovrai aprire le porte FTP sul tuo server EC2. Accedi alla Console di gestione AWS EC2 e seleziona Gruppi di sicurezza dall'albero di navigazione a sinistra. Seleziona il gruppo di sicurezza assegnato all'istanza EC2. Quindi selezionare la scheda In entrata, quindi fare clic su Modifica:
Aggiungi due regole TCP personalizzate con intervalli di porte 20-21 e 1024-1048. Per Sorgente, puoi selezionare "Ovunque". Se decidi di impostare Source sul tuo indirizzo IP, tieni presente che il tuo indirizzo IP potrebbe cambiare se viene assegnato tramite DHCP.
Passaggio 3: apportare aggiornamenti al file vsftpd.conf
Modifica il tuo file conf vsftpd digitando:
> sudo vi /etc/vsftpd/vsftpd.conf
Disabilita FTP anonimo modificando questa riga:
anonymous_enable=YES
per
anonymous_enable=NO
Quindi aggiungere le seguenti righe nella parte inferiore del file vsftpd.conf:
pasv_enable=YES
pasv_min_port=1024
pasv_max_port=1048
pasv_address=<Public IP of your instance>
Il tuo file vsftpd.conf dovrebbe essere simile al seguente - tranne assicurati di sostituire pasv_address con il tuo indirizzo IP pubblico:
Per salvare le modifiche, premi Esc, quindi digita :wq
, quindi premi Invio.
Passaggio 4: riavviare vsftpd
Riavvia vsftpd digitando:
> sudo /etc/init.d/vsftpd restart
Dovresti vedere un messaggio simile a:
Se questo non funziona, prova:
> sudo /sbin/service vsftpd restart
Passaggio 5: creare un utente FTP
Se dai un'occhiata a / etc / vsftpd / user_list, vedrai quanto segue:
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and
# do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd/ftpusers
# for users that are denied.
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody
Questo sta sostanzialmente dicendo "Non consentire l'accesso FTP a questi utenti". vsftpd consentirà l'accesso FTP a qualsiasi utente non presente in questo elenco.
Quindi, per creare un nuovo account FTP, potrebbe essere necessario creare un nuovo utente sul tuo server. (Oppure, se hai già un account utente che non è elencato in / etc / vsftpd / user_list, puoi saltare al passaggio successivo.)
La creazione di un nuovo utente su un'istanza EC2 è piuttosto semplice. Ad esempio, per creare l'utente "bret", digitare:
> sudo adduser bret
> sudo passwd bret
Ecco come sarà:
Passaggio n. 6: limitazione degli utenti alle loro home directory
A questo punto, i tuoi utenti FTP non sono limitati alle loro home directory. Non è molto sicuro, ma possiamo risolverlo abbastanza facilmente.
Modifica di nuovo il tuo file conf vsftpd digitando:
> sudo vi /etc/vsftpd/vsftpd.conf
Annulla commento dalla riga:
chroot_local_user=YES
Dovrebbe apparire così una volta finito:
Riavvia nuovamente il server vsftpd in questo modo:
> sudo /etc/init.d/vsftpd restart
Tutto fatto!
Appendice A: Sopravvivere al riavvio
vsftpd non si avvia automaticamente all'avvio del server. Se sei come me, ciò significa che dopo aver riavviato l'istanza di EC2, sentirai un momento di terrore quando FTP sembra essere rotto, ma in realtà non funziona! Ecco un modo pratico per risolvere il problema:
> sudo chkconfig --level 345 vsftpd on
In alternativa, se stai usando redhat, un altro modo per gestire i tuoi servizi è usare questa elegante interfaccia utente grafica per controllare quali servizi dovrebbero avviarsi automaticamente:
> sudo ntsysv
Ora vsftpd si avvierà automaticamente all'avvio del server.
Appendice B: modifica della home directory FTP di un utente
* NOTA: Iman Sedighi ha pubblicato una soluzione più elegante per limitare l'accesso degli utenti a una directory specifica. Si prega di fare riferimento alla sua eccellente soluzione pubblicata come risposta *
Potresti voler creare un utente e limitare il loro accesso FTP a una cartella specifica, come / var / www. Per fare ciò, dovrai cambiare la home directory predefinita dell'utente:
> sudo usermod -d /var/www/ username
In questo esempio specifico, è tipico assegnare all'utente le autorizzazioni per il gruppo "www", che è spesso associato alla cartella / var / www:
> sudo usermod -a -G www username