Crea un nuovo utente vsftpd e blocca nella (specifica) directory home / login


31

Ho bisogno di fornire periodicamente un accesso temporaneo e limitato a varie directory su un server Linux CentOS su cui è installato vsftp.

Ho creato un utente usando useradd [user_name]e dato loro una password usando passwd [password].

Ho creato una directory /var/ftpe quindi la associo alla directory a cui desidero limitare l'accesso.

Cos'altro devo fare in modo specifico per garantire che quando l'utente accede a FTP abbia accesso solo a questa directory, per favore?


Siamo spiacenti ma hai mai considerato di controllare vsftpd.conf?
jirib,

Sì. Io ho. Non mi dice come istruire un utente specifico ad accedere a una directory specifica ...?
Zigojacko,

1
Sicuro? opzione chroot_list_enable ... O intendi sovrascrivere una directory diversa da $ HOME?
jirib,

1
Voglio sapere come dichiarare una home directory specifica per un utente specifico. Ho abilitato chroot_list_enablee creato /etc/vsftpd/chroot_list. Non sapevo cosa fare dopo.
Zigojacko,

Quindi usermod per cambiare homedir dell'utente.
jirib,

Risposte:


44

Risposta completa che ha risolto la mia domanda per tutti gli altri che sono dopo una procedura dettagliata passo dopo passo ...

Installa vsftpdusando questo come guida .

  • Crea utente con useradd [user_name].
  • Crea la password dell'utente con passwd [user_name]. (Ti verrà richiesto di specificare la password).
  • Creare la directory FTP in /var/ftpe quindi associarla alla directory 'home' che si desidera specificare per questo utente mount --bind /var/www/vhosts/domain.com/ /var/ftp/custom_name/.
  • Cambia la home directory dell'utente con usermod -d /var/ftp/custom_name/ user_name

    In /etc/vsftpd/vsftpd.conf, assicurarsi che siano impostati tutti i seguenti elementi: -

    • chroot_local_user = SI
    • chroot_list_enable = SI
    • chroot_list_file = / etc / vsftpd.chroot_list

Elencare gli utenti nel vsftpd.chroot_listfile solo se si desidera che abbiano pieno accesso a qualsiasi punto del server. Non elencandoli in questo file, stai dicendo di limitare tutti gli vsftpdutenti alla loro home directory specificata.

In altre parole (per riferimento): -

  1. significa che per impostazione predefinita, TUTTI gli utenti vengono chroot tranne gli utenti nel file ...
    • chroot_local_user = SI
    • chroot_list_enable = SI
  2. significa che per impostazione predefinita, SOLO gli utenti nel file vengono sottoposti a chroot ...
    • chroot_local_user = NO
    • chroot_list_enable = SI

Perché non impostare direttamente la home directory di quell'utente /var/www/vhosts/domain.com/? C'è qualche problema con questo (come qualsiasi rischio potenziale)?
saluta il

2
Ho appena scoperto che vsftp sembra vietare di concedere a un utente ftp le autorizzazioni di scrittura al livello superiore di chroot per motivi di sicurezza (ma non ne sono sicuro al 100%). Quindi questo potrebbe essere un motivo per avere questa "indiretta" al fine di concedere all'utente ftp l'accesso in scrittura a una cartella specifica pur non consentendo di visualizzare alcuna cartella di pari livello (che sarebbe il caso se si impostasse semplicemente la sua casa a un livello superiore, che evita il problema citato). (vedi ubuntuforums.org/… )
leemes

2
@zigojacko il tuo utente vede solo la home directory assegnata? A mio avviso , per impostazione predefinita l'utente viene assegnato alla directory assegnata, ma possono comunque vedere altre cartelle e possono curiosare fino alla radice, anche se solo con accesso in lettura.
GraehamF,

1
Questa risposta, in combinazione con unix.stackexchange.com/questions/208960/…, è stata la risposta completa per me. Ho finito per creare un utente in un gruppo e ho limitato l'accesso del gruppo alla directory desiderata.
GraehamF,

10

Per me non ha funzionato nemmeno dopo quanto sopra. C'era già local_root impostato su una directory e, qualunque cosa io faccia, la directory dell'utente non è stata imprigionata. Alla fine funziona solo dopo essere stato modificato

chroot_local_user = SI

E seguente procedura

  1. vi /etc/vsftpd.conf
  2. Aggiungi la riga 'user_config_dir = / etc / vsftpd_user_conf' (senza virgolette)
  3. mkdir / etc / vsftpd_user_conf;
  4. cd / etc / vsftpd_user_conf
  5. vi nome_utente;
  6. Inserisci la riga 'local_root = / srv / ftp / user_name'

Solo i miei due centesimi se qualcun altro ha avuto lo stesso problema.


Ho seguito questa procedura per modificare la directory principale di vsftpd, inclusi i passaggi aggiuntivi di gnaanaa. Sfortunatamente, non funziona ancora. Filezilla segnala 530 Accesso errato. L'utente e la password sono conformi alla procedura sopra (nome_utente). Ho creato un utente di prova ftp2 e ho impostato la sua password. L'accesso normale a Filezilla utilizza tale nome utente e password. Ho anche impostato la directory principale in sola lettura e ho creato una directory di livello inferiore con autorizzazioni di scrittura in base a questo post Sto usando Ubuntu 16.04 se questo fa la differenza.
tim11g

Sto usando Ubuntu 16.04 se questo fa la differenza, @gnaanaa. Inoltre ho pensato che fosse strano che non vi fosse alcuna directory ftp in / var. Quindi ho dovuto creare / var / ftp e quindi / var / ftp / nome_utente. code<br/> Risposta: 220 (vsFTPd 3.0.3) <br/> Comando: USER ftp2 <br/> Risposta: 331 Si prega di specificare la password. <br/> Comando: PASS ***** <br/> Risposta : 530 Accesso errato. <br/> Errore: errore critico: impossibile connettersi al server <br/>code
tim11g

Innanzitutto, cerca perché non riesci ad accedere al server. È possibile eseguire il debug del problema con il jailing solo dopo l'accesso eseguito correttamente. Saluti.
gnaanaa,

Vsftp utilizza un utente / una password diversi rispetto agli account sulla macchina? Ho scoperto che le password smb dovevano essere impostate separatamente con smbpasswd -a. Vsftpd funziona allo stesso modo?
tim11g

No, è l'account utente di sistema. controlla questa risposta: askubuntu.com/questions/413677/vsftpd-530-login-incorrect
gnaanaa
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.