[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]
Nella parte dedicata al servizio HTTP, è descritto in che modo gli utenti di un nodo possono pubblicare delle pagine HTML attraverso la propria directory personale. Tuttavia, tali utenti potrebbero non avere accesso fisico all'elaboratore in questione, utilizzandolo solo in modo remoto. Per mezzo di un servente FTP potrebbero accedere come utenti reali per raggiungere la propria directory personale e caricare i dati da pubblicare.
Un po' diverso è il caso degli utenti a cui si vuole concedere solo l'accesso per pubblicare tali pagine HTML, senza altre possibilità. In pratica, a questi non si vuole permettere di usare programmi come Telnet, così come non gli si vuole permettere di accedere in alcun modo al resto del file system.
In questo capitolo si vuole mostrare come raggiungere un tale risultato, con l'ausilio del servente WU-FTP o con OpenBSD FTP, concedendo di accedere attraverso il protocollo FTP come utenti di tipo guest, in modo da non poter uscire dalla propria directory personale.
Nella sezione 223.3 viene descritto un problema differente, risolto con OpenBSD FTP.
L'utente che accede con un cliente FTP e viene riconosciuto da WU-FTP come appartenente al tipo guest, può raggiungere solo quanto si dirama dalla propria directory personale, perché in quel punto il servente esegue un chroot(). Di conseguenza, il resto del file system, programmi compresi, diventa inaccessibile. Se nella directory personale ci sono collegamenti simbolici che puntano al di fuori di quella struttura, perdono di significato e divengono semplicemente collegamenti non più validi.
Si attribuisce a un utente la qualifica di tipo guest indicando un gruppo a cui questo appartiene nel file di configurazione /etc/ftpaccess
. In pratica, è sufficiente creare un gruppo appositamente per questo, aggiungendo al file /etc/group
un record simile a quello seguente, a cui abbinare tutti gli utenti che si vuole vengano trattati in questo modo dal servente FTP.
|
A questo punto si può dichiarare nel file /etc/ftpaccess
che gli utenti di questo gruppo (ftpguest), siano da trattare come utenti di tipo guest.
|
L'utente di tipo guest, quando accede, è tagliato fuori dal resto del file system, per cui occorre che a partire dalla sua directory personale siano presenti alcuni programmi di servizio indispensabili (cp, tar, gzip,...), oltre alle librerie relative. In pratica occorre ricreare la stessa struttura della directory personale dell'utente FTP anonimo.
Generalmente, per motivi di sicurezza, la configurazione del servente WU-FTP è tale da impedire agli utenti guest di modificare i propri dati. Segue un pezzo del file /etc/ftpaccess
che mostra in che modo risolvere la cosa.
|
Se si utilizza OpenBSD FTP la preparazione è più semplice. Gli utenti vanno elencati nel file /etc/ftpchroot
, in modo che sia consentito loro di accedere esclusivamente al ramo della propria directory personale; inoltre, eventualmente si può usare anche l'opzione -A per impedire altri accessi standard.
Per aggiungere un nuovo utente, è bene agire inizialmente nel modo consueto, attraverso l'uso di un programma di servizio apposito (è tanto più importante se si utilizzano le parole d'ordine oscurate).
#
adduser tizio
[Invio]
Questo dovrebbe essere sufficiente a creare un nuovo utente, ma non basta per gli scopi che si vogliono raggiungere. Le fasi necessarie vengono descritte nelle sezioni successive, mentre il listato 242.9 contiene lo script che le svolge tutte in modo automatico.
L'utente FTP deve avere una shell valida, cioè una di quelle indicate nel file /etc/shells
. Tuttavia, dal momento che non si vuole permettere a questi utenti di accedere in modo diverso dall'FTP, si può aggiungere tra le shell possibili anche il programma /bin/false
, come si vede nell'esempio seguente che mostra il contenuto dell'ipotetico file /etc/shells
.
|
Quando questo è stato organizzato così, si può modificare la shell attribuita al nuovo utente in modo predefinito, attraverso il programma chsh.
#
chsh tizio
[Invio]
Changing shell for tizio. |
New shell: [/bin/bash]:
/bin/false
[Invio]
Shell changed. |
La directory personale dell'utente appena creato, contiene i file e le directory che si trovano in /etc/skel/
: lo scheletro della directory. È opportuno lasciare stare com'è la directory /etc/skel/
e modificare ciò che è stato fatto, altrimenti diventa poi difficile creare nuovi utenti di tipo normale che niente hanno a che vedere con le pagine HTML e gli utenti di tipo guest dell'FTP.
Si procede con la cancellazione della directory personale dell'utente creato (questo serve per eliminare sicuramente anche i file e le directory che iniziano con un punto).
#
rm ~tizio
[Invio]
Quindi si ricrea la directory, volontariamente appartenente all'utente root; ciò garantisce che l'utente non possa modificarla, ma possa invece agire nella sottodirectory destinata a contenere le pagine HTML.
#
mkdir ~tizio
[Invio]
A questo punto ci si deve occupare di ricreare le directory indispensabili per la gestione degli utenti FTP di tipo guest. Se la struttura corrispondente dell'FTP anonimo è contenuta nella stessa partizione in cui si trova la directory dell'utente, si possono usare opportunamente dei collegamenti fisici.
#
cp -dpRl ~ftp/bin ~tizio
[Invio]
#
cp -dpRl ~ftp/etc ~tizio
[Invio]
#
cp -dpRl ~ftp/lib ~tizio
[Invio]
#
cp -l ~ftp/welcome.msg ~tizio
[Invio]
Il file ~ftp/welcome.msg
è inteso essere quello introduttivo che viene inviato all'utente quando si connette la prima volta.
È importante osservare che se i file da copiare non hanno il permesso di lettura per l'utente root, questi non possono essere copiati correttamente. |
Infine si crea la directory public_html/
, di proprietà dell'utente, assieme a un paio di collegamenti simbolici opportuni.
#
mkdir ~tizio/public_html
[Invio]
#
chown tizio: ~tizio/public_html
[Invio]
#
cd ~tizio
[Invio]
#
ln -s public_html pub
[Invio]
#
ln -s public_html html
[Invio]
Infine, si assegna la parola d'ordine in modo da consentire l'accesso.
#
passwd tizio
[Invio]
... |
Si osservi che nel caso si utilizzi OpenBSD FTP non serve mettere nulla nella directory usata per l'accesso anonimo, pertanto diversi passaggi mostrati qui sono altrettanto inutili. |
Come già spiegato, se si utilizza WU-FTP, l'utente deve essere aggregato al gruppo utilizzato per distinguere gli utenti di tipo guest, modificando il record corrispondente nel file /etc/group
, in modo simile a quello mostrato qui sotto.
|
In condizioni normali, i file ~ftp/etc/passwd
e ~ftp/etc/group
, quelli per cui si è creato un collegamento fisico nella directory del nuovo utente, non contengono le informazioni necessarie a permettere di tradurre UID e GID nei nomi corretti. Per farlo bisognerebbe agire su questi file manualmente. Essendo tutti collegati assieme allo stesso inode, basterebbe intervenire su uno per vedere aggiornati tutti gli altri riferimenti.
Si osservi che tali aggiornamenti devono essere fatti manualmente, perché l'uso di altri programmi potrebbe comportare la perdita del collegamento. |
|
L'utente che da un elaboratore remoto vuole accedere per sistemare le proprie pagine HTML, può usare un programma cliente per l'FTP, identificandosi con il suo nominativo-utente e la sua parola d'ordine. Deve preoccuparsi di spostarsi nella directory public_html/
, ma in tal caso può farlo anche usando il riferimento html
, creato appositamente.
Volendo può usare Midnight Commander (ovvero mc) e per accedere basta il comando
cd ftp://utente@nome_di_dominio |
come nell'esempio seguente dove l'utente tizio vuole accedere al nodo dinkel.brot.dg
.
$
cd ftp://tizio@dinkel.brot.dg
[Invio]
Successivamente, al momento opportuno, è Midnight Commander stesso a chiedere di inserire la parola d'ordine.
Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome gestione_di_pagine_html_personali_attraverso_un_accesso_ftp.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]