La nuova Ubuntu 8.10 Intrepid Ibex ha adottato l’ultimissima versione di OpenSSH, la 5.1, che ha una feature interessantissima: la possibilità di automatizzare il chroot di una sessione SFTP.
In pratica, l’utente che effettua il login tramite SFTP avrà la possibilità di vedere soltanto la sua home directory (o la directory impostata come chroot), senza poter risalire le directory fino alla root, come invece accade normalmente.
Utilissimo nel caso in cui si voglia dare la possibilità ad un utente di effettuare degli upload su una directory accessibile anche dal web, ma non gli si vuole lasciare la libertà di girovagare per tutto il sistema.
Con le versioni precedenti di OpenSSH, per fare la stessa cosa, era necessaria una procedura lunghissima.
Andiamo all’_how-to_:
1) installare il server SSH, se non è già installato
$ sudo apt-get install openssh-server
$ sudo vim /etc/ssh/sshd_config
2) modificare il file di configurazione in questo modo:
Subsystem sftp internal-sftp # Queste righe andranno aggiunte alla *fine* del file di configurazione Match Group uploaders ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no
3) creare un utente uploader ed aggiungerlo al gruppo uploaders:
sudo adduser --home /var/www/uploads --no-create-home \ --ingroup uploaders \ --shell /bin/false \ uploader
4) controllare che il proprietario della home directory del nuovo utente (e delle directory che risalgono il percorso, fino alla radice) sia root e che nessun altro utente o gruppo abbia permessi di scrittura su tale directory (impostarli a 755 con chown). Se questa condizione non viene soddisfatta, il login SFTP fallirà .
Risultato: l’utente uploader potrà entrare via SFTP e operare soltanto sulla sua home directory; il login SSH invece non sarà possibile.
PS: purtroppo questo metodo non è implementato sulla versione di OpenSSH presente sull’ultima LTS di Ubuntu, la 8.04 Hardy Heron… significa che i più prudenti dovranno attendere fino al 2010 per la prossima LTS.












ciao ho seguito la guida e ho dato anche i permessi ma non mi da i permessi per poter caricare o scaricare file dalla cartella home dell utente creato………come mai?
la directory deve appartenere all’utente oppure l’utente deve far parte di un gruppo che ha il permesso di scrivere in quella directory.
probabilmente devi semplicemente dare questi comandi:
chgrp uploaders /la/tua/directory
chmod g+rwx /la/tua/directory
ho provato ma non mi fa connettere più al server…….comunque ho risolto creando una nuova cartella all’ interno della /home/utente e ho dato:
chown utente:sftp /home/utente/upload
chmod 755 /home/utente/upload
ora solo nella caertella upload posso caricare o scaricare file ma nella home non ho permessi
uhm, strano comportamento! forse perchè non si può cambiare il gruppo di una home directory?
cmq mi fa piacere che hai risolto, grazie per aver condiviso il fix con me ed i futuri lettori di questo post :)
prego….anzi grazie a te della guida……..alla prox
sai se è possibile accdere tramite browser web al server sftp creato?
No, non è possibile. Serve sempre un client, grafico o testuale, ma la cosa indispensabile è che supporti il protocollo SSH.
Per Windows ti consiglio WinSCP (è open source): http://winscp.net
Per Linux anche gFTP va benissimo, dovrebbe essere già installato nelle distribuzioni più diffuse, ma esistono veramente tanti client… c’è l’imbarazzo della scelta!
ok…………grazie nuovamente