vsFTPd è una dei server FTP maggiormente diffusi nelle recenti distribuzioni Linux. Recentemente mi è capitato di trovare il modo di garantire l’accesso ad un utente del servizio FTP, caratterizzato dall’essere in chroot, ad una particolare directory residente in tutt’altra posizione all’interno del filesystem. Di primo impulso la prima idea è stata quella di creare un link simbolico dentro la home dire dell’utente verso la risorsa specificata. Peccato che vsFTPd, probabilmente per politiche di sicurezza restrittive, si rifiuti di seguire il link da me creato, infatti tentando di effettuare un change directory (cd) otterremo il messaggio “Failed to change directory”. Cercando in rete ho trovato la soluzione! Montare la porzione di filesystem all’interno della home directory dell’utente ftp tramite l’utilizzo del comando mount e del parametro —bind, vediamo come.

Mettiamo caso che la home dir dell’utente ftp si trovi nel path : /tmp/ftpuser/user/

mentre il percorso da condividere con l’utente si trovi invece su /u/samba/pubblica/csd/

[banner align=”aligncenter”]

Il primo passo da eseguire è quello di creare una nuova directory csd sotto la home dir dell’utente ftp, e cioè  /tmp/ftpuser/user/csd/ come segue:

[cc lang="bash" escaped="true"]mkdir /tmp/ftpuser/user/csd/[/cc]

Secondo passo (probabilmente è necessario essere root), montare la porzione di filesystem lanciando il comando mount come segue, facendo attenzione ai percorsi assoluti:

[cc lang="bash" escaped="true"]mount --bind /u/samba/pubblica/csd/ /tmp/ftpuser/user/csd/[/cc]

Il parametro bind, disponibile dalla versione 2.4.0 del kernel linux, permette di rimontare parte della gerarchia del filesystem in un’altra posizione (proprio quello che faceva al caso mio !).

Se tutto è andato a buon fine dovreste poter adesso accedere alla directory desiderata dall’utente ftp in chroot anche da quella posizione.

Può sembrare superfluo dirlo, ma è necessario fare attenzione al ramo di filesystem che andremo a condividere, rischiamo di dare accesso più del previsto all’utente.

fonte: http://radu.cotescu.com/vsftpd-and-symbolic-links/