Blog

November 28, 2008 13:26 - 8 comments

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.


  • Currently 2/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5
Rss
Mauro @ April 24, 2009 21:58

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?

Bruno @ April 24, 2009 22:19

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

Mauro @ April 26, 2009 12:39

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

Bruno @ April 26, 2009 14:37

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 :)

Mauro @ April 28, 2009 22:52

prego….anzi grazie a te della guida……..alla prox

Mauro @ April 30, 2009 14:27

sai se è possibile accdere tramite browser web al server sftp creato?

Bruno @ April 30, 2009 14:39

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!

Mauro @ April 30, 2009 17:10

ok…………grazie nuovamente

Name


Email


Website/Blog


Add comment