Limitare l'accesso FTP solo a / var / www con vsftpd


41

Sto eseguendo vsftpd come server ftp sul mio Linux (rasbian), accedo alla macchina come utente root.

Vorrei essere ancora bloccato per usare solo / var / www, come posso configurare vsftpd conf per realizzarlo?


1
Controlla le chroot opzioni vsftpd.confe crea un utente separato per esso il cui homedir è impostato su /var/www.
jirib,

Risposte:


65

Metodo 1: modifica della home directory dell'utente

Assicurarsi che esista la seguente riga

chroot_local_user=YES

Impostare la directory HOME dell'utente su /var/www/, se si desidera modificare un utente esistente, è possibile utilizzare:

usermod --home /var/www/ username

quindi attiva l'autorizzazione richiesta /var/www/

Metodo 2: utilizzare user_sub_token

Se non si desidera modificare la directory Home dell'utente, è possibile utilizzare:

chroot_local_user=YES
local_root=/ftphome/$USER
user_sub_token=$USER

Circa user_sub_token:

Generare automaticamente una home directory per ciascun utente virtuale, in base a un modello. Ad esempio, se la home directory dell'utente reale specificata tramite nome_ospite è / ftphome / $ USER e user_sub_token è impostato su $ USER, quindi quando il test dell'utente virtuale accede, finirà (di solito chroot () 'ed) in la directory / ftphome / test. Questa opzione ha effetto anche se local_root contiene user_sub_token.

Crea directory e imposta permessi:

mkdir -p /ftphome/{test,user1,user2}
chmod 770 -R /ftphome
chown -R ftp. /ftphome
usermod -G ftp test

Una volta riavviato vsftpde testare la configurazione.

Esempio di output di successo:

[root@mail tmp]# ftp localhost
Connected to mail.linuxian.local.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mput vhosts
mput vhosts? 
227 Entering Passive Mode (127,0,0,1,146,41)
150 Ok to send data.
226 File receive OK.
24 bytes sent in 3.3e-05 seconds (7.1e+02 Kbytes/s)
ftp> ls -rlt
227 Entering Passive Mode (127,0,0,1,97,90)
150 Here comes the directory listing.
-rw-r--r--    1 787      787            24 Oct 11 19:57 vhosts
226 Directory send OK.
ftp> 221 Goodbye.

2
Tieni presente che puoi avere un suffisso dopo $USERper local_root, come /home/$USER/ftp(che chroot gli utenti nella ftpsottodirectory della loro home directory).
Benoit Duffez,

Nota le osservazioni nelle FAQ di vsftp riguardanti il ​​chrooting nella cartella scrivibile mediante l'accesso dell'utente. Ciò è altamente probabile in caso di inserimento local_rootnella home directory dell'utente reale.
Thomas Urban

Dove confermare che esiste "chroot_local_user = YES"?
The One

4

Puoi farlo:

usermod --home /var/www/ username

5
Le risposte da una a due righe sono spesso considerate di bassa qualità. Ti consigliamo di espandere il tuo post con alcune spiegazioni di ciò che fa la tua raccomandazione insieme a link o documentazione che suggeriscono la capacità della tua raccomandazione di risolvere effettivamente il problema.
HalosGhost

2

Ho usato il suggerimento di Rahul Patil sopra:

chroot_local_user=YES
local_root=/home/$USER/www-data
user_sub_token=$USER

Ma non riuscivo a capire perché ero in grado di accedere solo con un utente. Poi ho scoperto che non potevamo eseguire il chroot in una directory root (in questo caso /home/$USER/www-data) con accesso in scrittura. Quindi rimuovo l'accesso in scrittura con:

# chmod a-w /home/$USER/www-data

NOTA: modifica $USERcon il tuo utente.


1

Controlla le chrootopzioni vsftpd.confe crea un utente separato per esso il cui homedir è impostato su /var/www.


Ne sono consapevole, creerò un utente separato. Forse dovrei ridisegnare la mia domanda, quindi come posso limitare un utente a separare solo il
Badr Hari,

Usa sftp da OpenSSH. Vedi man sshd_config per internal-sftp, quindi 'ForceCommand' e vedi 'ChrootDirectory'. OpenSSH più recente ha anche aggiunto l'opzione per sftp-server per passare a un percorso specifico, quindi in combinazione con ChrootDirectory puoi fare: chroot -> / path -> destination -> 'onlyhere' = / chroot / onlyhere
jirib
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.