Prima di continuare a leggere questo HOWTO devi poter fare telnet tra due macchine che hai intenzione di configurare come client e server. Se non sei in grado di farlo, leggi il networking/NET-2 HOWTO per installare e configurare correttamente la rete.
Prima di fare qualsiasi altra cosa, abbiamo bisogno di configurare un server NFS. Se fai parte di un dipartimento o università probabilmente ce ne saranno molti altri già configurati. Se puoi accedervi o stai leggendo questo HOWTO per utilizzarli, non hai bisogno di leggere questa sezione e puoi saltare direttamente alla sezione Configurazione di un client NFS
Se hai bisogno di installare NFS su una macchina che non abbia Linux, allora devi leggere il manuale di sistema per scoprire come abilitare il servizio di NFS ed esportare i file tramite NFS. C'è una sezione apposita in questo HOWTO su come farlo su molti sistemi diversi. Dopo aver configurato tutto, puoi passare alla sezione successiva. Oppure leggi altre parti di questa sezione poiché alcune cose che saranno dette potrebbero essere interessanti anche per altri sistemi, indipendentemente dal tipo di macchina che vuoi usare come server.
Quelli di voi che continueranno a leggere, avranno bisogno di configurare alcuni programmi.
Il portmapper su linux può chiamarsi sia portmap
o
rpc.portmap
. La pagina man sul mio sistema dice che è un
"DARPA port to RPC program number mapper". Questo è il primo buco di sicurezza
che apri. La descrizione per chiudere alcuni di questi buchi è nella sezione
Sicurezza ed NFS, che ti consiglio
di leggere con urgenza.
Avvio del portmapper. Lo si può fare in due modi: portmap
oppure
rpc.portmap
e li dovresti trovare nella directory /usr/sbin
(su alcune macchine si chiama rpcbind). Per ora lo puoi lanciare a mano,
ma è necessario che venga lanciato ogni volta che riavvii la macchina, per
questo dovrai creare/aggiornare i tuoi scripts rc. Gli script rc sono descritti
in maggior dettaglio nella pagina man di init, di solito si trovano
in /etc/rc.d
, /etc/init.d
oppure /etc/rc.d/init.d
.
Se c'è uno script che ha il nome simile a inet
probabilmente è lo script
giusto da modificare. Ciò che devi scriverci va oltre lo scopo di questo HOWTO.
Avvia portmap e controlla che esso sia correttamente partito con il comando
ps aux
. È partito ? Bene.
I prossimi programmi che devono essere lanciati sono mountd e nfsd. Ma prima
dobbiamo modificare un altro file. Questa volta /etc/exports
.
Diciamo che io voglia che il file system /mn/eris/local
che
risiede su eris
possa essere disponibile anche sulla macchina
chiamata apollon
. Dobbiamo quindi mettere queste righe nel file
/etc/exports
di eris:
/mn/eris/local apollon(rw)
Le righe sopra indicate, consentono l'accesso in lettura e scrittura
a /mn/eris/local
. Invece di rw
potremmo mettere ro
che vorrebbe dire accesso in sola lettura (se non metti nulla, è di default
a sola lettura). Ci sono altre opzioni che puoi mettere e ne discuteremo
alcune relative alla sicurezza più avanti. Le opzioni sono tutte elencate
nella pagina man di exports
che dovresti leggere almeno una volta
nella tua vita. Ci sono modi migliori che elencare gli host nel file exports.
Puoi per esempio usare net groups se stai usando le NIS (o NYS), e puoi sempre
specificare domini interi oppure sottoreti IP come host autorizzati
a montare qualcosa. Ma dovresti considerare che qualcuno non autorizzato
potrebbe accedere al server se usi questo tipo di autorizzazioni.
Nota: La sintassi del file exports non è la stessa di altri Unix.
C'è una sezione separata in questo HOWTO che riguarda il file exports
di altri Unix.
Ora siamo pronti per lanciare il comando mountd (oppure può chiamarsi
rpc.mountd
) e quindi nfsd (che potrebbe chiamarsi rpc.nfsd
).
Entrambi leggono il file exports.
Se modifichi il file /etc/exports
accertati che nfsd e
mountd sappiano che il file è stato cambiato. Il modo tradizionale
è lanciare exportfs
. Molte distribuzioni non hanno il programma
exportfs, allora puoi installare questo script sulla tua macchina:
#!/bin/sh killall -HUP /usr/sbin/rpc.mountd killall -HUP /usr/sbin/rpc.nfsd echo re-exported file systems
Salvalo chiamandolo /usr/sbin/exportfs
, e non dimenticare
di cambiargli i permessi con il comando chmod a+rx
. Ora,
ogni volta che modifichi il file exports, lancia exportfs come root.
Ora dovresti controllare che mountd e nfsd stiano girando correttamente.
Prima con rpcinfo -p
. Dovrebbe mostrarti qualcosa simile a questo:
program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100005 1 udp 745 mountd 100005 1 tcp 747 mountd 100003 2 udp 2049 nfs 100003 2 tcp 2049 nfs
Come vedi il portmapper ha avviato i propri servizi e così pure mountd e nfsd.
Se invece ottieni l'errore: rpcinfo: can't contact portmapper: RPC: Remote
system error - Connection refused
,
RPC_PROG_NOT_REGISTERED
o qualcosa di simile, allora il
portmapper non sta girando. Oppure hai qualcosa nel file
/etc/hosts.{allow,deny}
che impedisce le a portmapper di
rispondere. Avvia il portmapper, oppure rimuovi o rinomina
/etc/hosts.{allow,deny}
. Se ottieni il messaggio
No remote programs registered.
allora o il portmapper non
vuole risponderti oppure qualcosa non funziona. Killa nfsd, mountd ed il
portmapper e riprova la sequenza di avvio dall'inizio.
Dopo avere controllato che il portmapper riporti i servizi, puoi controllare anche con ps. Il portmapper continuerà a riportare i servizi anche dopo che il programma che li ha utilizzati termina in maniera non corretta, per cui controllare con il ps può essere utile che sembra che qualcosa non funzioni.
Naturalmente, avrai bisogno di modificare i tuoi file rc per avviare mountd e nfsd ed il portmapper quando avvii la macchina. È probabile che gli scripts esistano già sulla tua macchina, devi solo togliere il commento dalle parti che interessano oppure modificare il livello di init affinché queste vengano attivate.
Le pagine man che dovrebbero esserti familiari adesso, sono quelle di portmap, mountd, nfsd ed exports.
Bene, se hai fatto tutto esattamente come ho detto probabilmente è tutto a posto per iniziare a lavorare sul client NFS.