È probabile che gli utenti di reti a tecnologia mista, comprendente protocolli IP ed IPX, prima o poi desiderino che la propria macchina Linux possa accedere a dati memorizzati in un fileserver Novell sulla rete. Novell offre da tempo un pacchetto NFS per i propri fileserver in grado di consentire questa funzione; tuttavia, nel caso di una piccola installazione, o se solo un ristretto numero di persone è interessato a tale funzionalità, non è facile giustificare il costo del pacchetto commerciale.
Volker Lendecke lendecke@namu01.gwdg.de ha scritto un modulo che consente di montare volumi Novell sul filesystem Linux senza richiedere alcun prodotto addizionale per il fileserver. Volker ha denominato il pacchetto ncpfs ed ha tratto le informazioni necessarie principalmente dal libro "Netzwerkprogrammierung in C" di Manfred Hill e Ralf Zessin (ulteriori dettagli sul libro sono contenuti nel file README del pacchetto ncpfs).
Il software consente a Linux di emulare una normale stazione di lavoro Novell per servizi di file. Include anche una piccola utility che consente di stampare le code Novell (questo argomento è documentato nel paragrafo relativo al Client di Stampa). Il pacchetto ncpfs è in grado di lavorare con fileserver Novell a partire dalla versione 3.x, mentre non funziona con Novell 2.x. Il client ncpfs funziona anche con prodotti strettamente compatibili con Novell, ma sfortunatamente alcuni, pur dichiarandosi compatibili, non lo sono a sufficienza. Per utilizzare ncpfs con Novell 4.x, è preferibile configurare il fileserver per operare in modalità di emulazione bindery. Il supporto NDS è una aggiunta piuttosto recente alla versione beta di ncpfs e per di più in certi paesi è proibito a causa dell'inclusione di tecnologia protetta da brevetto.
L'ultimo pacchetto ncpfs fu progettato per versioni del kernel fino alla 1.2.13 o superiore alla 1.3.71 (questo include la versione 2.x.x). Se il kernel in uso non rientra in queste categorie, è necessario eseguire un aggiornamento, operazione descritta in dettaglio nel Kernel-HOWTO.
Il pacchetto ncpfs può essere ottenuto tramite ftp anonimo con il sito di Volker presso:
ftp.gwdg.de in /pub/linux/misc/ncpfs/
oppure
sunsite.unc.edu in /pub/Linux/system/filesystems/ncpfs
o siti mirror. La versione attuale nel momento in cui si scrive questo
documento è: ncpfs-2.0.11.tgz
oppure ncpfs-2.2.0.tgz
che
aggiunge il supporto NDS.
La prima
cosa da fare è assicurarsi che il proprio kernel sia stato
compilato con l'abilitazione al supporto IPX. Nella versione di kernel
1.2.13 basta assicurarsi di aver risposto "Y" alla
domanda The IPX protocol
, come illustrato nel seguito:
... ... Assume subnets are local (CONFIG_INET_SNARL) [y] Disable NAGLE algorithm (normally enabled) (CONFIG_TCP_NAGLE_OFF) [n] The IPX protocol (CONFIG_IPX) [n] y * * SCSI support ... ...
Ovviamente è necessario includere il driver relativo per la propria scheda Ethernet. Per maggiori dettagli, si dovrebbe consultare l'Ethernet-HOWTO.
A questo punto è possibile procedere alla compilazione del kernel.
Al termine potrebbe essere necessario eseguire lilo
per installarlo.
tar
per il software ncpfs.
# cd /usr/src # tar xvfz ncpfs-2.0.10.tgz # cd ncpfs
Se si desidera utilizzare kerneld
per
caricare automaticamente il modulo ncpfs
, è necessario togliere il
commento alla riga che si riferisce a KERNELD
all'interno del
Makefile
. Se non si conosce il significato di questa azione, si
dovrebbe leggere
Kernel-HOWTO per
familiarizzare con la configurazione del modulo kernel.
make
per il software ncpfsIl software dovrebbe poter essere compilato correttamente senza necessitare di altra configurazione, tramite il comando:
# make
Al termine dell'esecuzione
di make
, tutti gli strumenti necessari dovrebbero trovarsi nella
directory ncpfs/bin. È possibile utilizzare il comando:
# make install
per installare i tool in directory scelti da Volker. Se si sta lavorando
su un sistema basato su ELF, si dovrà eseguire nuovamente
ldconfig -v
per assicurarsi che venga trovata la libreria
condivisa.
ncpfs.o
se necessarioSe si sta eseguendo la compilazione di un kernel 1.2.*, al termine
dell'esecuzione di make, si troverà un file denominato ncpfs.o nella
directory ncpfs/bin
. Si tratta del modulo di kernel ncpfs
,
che dovrebbe essere copiato in luogo utile. Sul sistema debian
dell'autore, è stato copiato nella directory /lib/modules/1.2.13/fs
ed ncpfs
aggiunto al file /etc/modules
in modo che
venga eseguito automaticamente all'avvio del sistema. Per una diversa
distribuzione, si dovrebbe scoprire dove sono localizzati i moduli per
copiarlo in quella locazione; in ogni altro caso semplicemente copiarlo
nella directory /etc
. Per caricare i moduli manualmente, è
necessario utilizzare il comando:
# insmod ncpfs.o
Per l'ultima versione di ncpfs, si dovrebbe utilizzare un kernel 1.3.71 o successivo; questo include i kernel 2.0.*.
Se si ha intenzione di utilizzare un kernel di versione 1.3.71 o successivo, allora il codice del kernel ncpfs è stato incluso nella distribuzione standard. È sufficiente rispondere "Y" alla domanda:
Networking options --->
...
...
<*> The IPX protocol
...
Filesystems --->
...
...
<*> NCP filesystem support (to mount NetWare volumes)
...
A questo punto è necessario seguire le istruzioni per la compilazione dei kernel 1.2.*, in modo da costruire i tool; tuttavia non ci sarà un file modulo da installare.
Esistono due modi per configurare il software di rete IPX. È possibile configurare manualmente tutte le informazioni di rete IPX, oppure lasciare che il software determini da solo delle impostazioni ragionevoli, tramite il comando:
# ipx_configure --auto_interface=on --auto_primary=on
Questo comando dovrebbe funzionare nella maggior parte dei casi, ma se ciò non accade, si invita a leggere il paragrafo Tools di IPX per configurare il software manualmente. Si sono notati problemi nell'usare questo comando su reti in cui erano presenti client Windows '95.
.
Dopo la configurazione della rete IPX, dovrebbe essere disponibile il
comando slist
che elenca tutti i fileserver Novell presenti:
# slist
Se il comando slist fornisce un messaggio del tipo: "ncp_connect: Invalid argument
" significa che il kernel probabilmente non supporta IPX.
Controllare che sia stato effettivamente avviato il kernel appropriato.
Quando si avvia il sistema, i messaggi di startup dovrebbero contenere
informazioni riferite a IPX
e ncpfs
. Se, nonostante tutto, il
comando slist
non elenca i fileserver, allora si dovrebbe utilizzare
il metodo manuale per la configurazione della rete.
Se il software di rete IPX funziona
correttamente, si dovrebbe essere in grado di montare un volume fileserver
Novell all'interno del filesystem Linux. Il comando ncpmount
viene
utilizzato per questo scopo, e richiede la specifica delle seguenti
informazioni:
Esiste un comando equivalente ncpumount
per smontare un filesystem
NCP precedentemente montato. I filesystem NCP saranno smontati in modo
corretto se si esegue un normale shutdown della macchina; pertanto non
bisogna preoccuparsi di eseguire il comando npcumount
manualmente
prima di arrestare il sistema con halt
oppure shutdown
.
Esempio di comando per montare il fileserver ACCT_FS01
, con
login guest
, senza password, corrispondente alla directory
/mnt/Accounts
:
# ncpmount -S ACCT_FS01 /mnt/Accounts -U guest -n
Si noti l'utilizzo dell'opzione -n
per indicare che il login non
richiede alcuna password. Stesso login con password secret
avrebbe
forma:
# ncpmount -S ACCT_FS01 /mnt/Accounts -U guest -P secret
Se non si specifica né l'opzione -n
, né -P
, allora il
sistema richiederà una password.
Se l'esecuzione è
terminata con successo, tutte le unità accessibili all'utente specificato
durante il login, saranno elencate come directory sotto il punto
di mount. Dovrebbe anche essere possibile percorrere la
struttura delle directory per trovare altri file. Alternativamente si può
usare l'opzione -V
per montare un singolo volume.
NCP non fornisce uid (identificativo utente) o gid (identificativo di gruppo) per la proprietà dei file, tutti i file avranno le autorizzazioni e le proprietà assegnate alla directory che rappresenta il punto di mount, condizionate dai permessi concessi dal server Novell. È necessario tenerne conto quando si effettuano condivisioni tra utenti Linux.
Se si ha
la necessità di avere un mount NCP permanente, è possibile
configurare i comandi precedentemente descritti all'interno di file
rc
, in modo che vengano eseguiti all'avvio del
sistema. Nel caso in cui la distribuzione utilizzata non fornisca un
metodo per configurare IPX (come Debian), si consiglia di
impostare i comandi nel file /etc/rc.local
, se esiste. È
possibile utilizzare comandi del tipo:
#
# Avvio del filesystem NCP
/sbin/insmod /lib/modules/1.2.13/fs/ncpfs.o
# Configurazione della rete IPX
ipx_configure --auto_interface=on --auto_primary=on
# login all'Accounting fileserver
ncpmount -S ACCT_FS01 /mnt/Accounts -U guest -n
#
Un altro metodo di configurazione consiste nell'elencare nel file
$HOME/.nwclient
i mount NCP temporanei o specifici per
l'utente che verranno eseguiti regolarmente.
È possibile memorizzare specifiche in modo da impostarle senza
doverle indicare ogni volta. Il formato è molto semplice:
# Il primo inserimento rappresenta il server "preferenziale" che verrà
# utilizzato ogni volta non sia specificato esplicitamente un server.
#
# Login utente TERRY al fileserver DOCS_FS01 con password "password"
DOCS_FS01/TERRY password
#
# Login utente Guest al fileserver ACCT_FS01 senza password.
ACCT_FS01/GUEST -
Per attivare questi mount si può utilizzare il comando:
$ ncpmount /home/terry/docs
per montare DOCS_FS01 con login TERRY sotto la directory
/home/terry/docs
. Si noti che è stato utilizzato il
fileserver DOCS_FS01 perché non ne è stato specificato alcun altro nel
comando di mount. Se fosse stato utilizzato il comando:
$ ncpmount -S ACCT_FS01 /home/terry/docs
allora sarebbe stato montato il fileserver ACCT_FS01 con login GUEST.
Nota: affinché questo meccanismo funzioni, l'autorizzazione per il file
$HOME/.nwclient
deve essere 0600
. Potrebbe essere
necessario utilizzare il comando:
$ chmod 0600 $HOME/.nwclient
Se anche degli utenti non root devono essere autorizzati a utilizzare
questo meccanismo, allora il comando npcmount
deve essere Set
Userid Root. Ne consegue che potrebbe essere necessario attribuirgli
le autorizzazioni:
# chmod 4755 ncpmount
nsend
.Il pacchetto include anche
un utility per inviare messaggi a utenti Novell. Il suo nome è nsend
e viene utilizzato come di seguito riportato:
# nsend rod hello there
invia il messaggio "hello there" a un utente con login "rod" sul
fileserver "primario" (ossia il primo che appare nel proprio file
.nwclient
). È possibile specificare un altro fileserver con la
stessa sintassi descritta per il comando ncpmount
.