Sono disponibili due pacchetti che consentono a Linux di fornire le funzionalità di un Fileserver Novell. Entrambi permettono di condividere file sulla propria macchina Linux con utenti che utilizzano il software client NetWare di Novell. Gli utenti possono fare in modo che dei filesystem appaiano come dischi locali sulle proprie macchine, proprio come farebbero con un reale fileserver Novell. Utilizzandoli entrambi, è possibile rendersi conto di quale dei due meglio soddisfa le proprie esigenze.
Martin Stover (mstover@freeway.de) ha sviluppato mars_nwe per consentire a Linux di fornire ai client NetWare sia servizi di file, che servizi di stampa.
Il nome mars_nwe significa Martin Stovers Netware Emulator.
mars_nwe implementa un sottoinsieme del più completo NCP Novell per servizi di file e di bindery basati su dischi o anche di stampa. Probabilmente contiene errori, tuttavia attualmente viene utilizzato da molte persone, pertanto il numero di errori è in continua diminuzione man mano che vengono rilasciate nuove versioni.
È possibile ottenere mars_nwe da
ftp.gwdg.de /pub/linux/misc/ncpfs/
o da
sunsite.unc.edu /pub/Linux/system/filesystems/ncpfs/.
La versione nel momento in cui questo documento viene scritto è:
mars_nwe-0.98.pl8.tgz.
Con un kernel di
versione 1.2.13 è sufficiente assicurarsi di aver risposto
"Y" alla domanda: The IPX protocol e "N" alla domanda:
Full internal IPX network, come di seguito descritto:
... ... The IPX protocol (CONFIG_IPX) [n] y ... ... Full internal IPX network (CONFIG_IPX_INTERN) [N/y/?] n ... ...
In kernel più recenti viene adottato un processo simile ma il testo del messaggio potrebbe essere leggermente diverso.
È anche necessario includere il driver appropriato per la propria scheda Ethernet. Maggiori dettagli sono presenti in Ethernet-HOWTO.
Dopo di che è possibile procedere con la compilazione del kernel.
Ricordarsi, una volta terminata l'operazione, di eseguire
lilo per installarlo.
# cd /usr/src
# tar xvfz mars_nwe-0.98.pl3.tgz
Si tratta di
un'operazione molto semplice. Il primo passo consiste nell'eseguire
semplicemente make, che creerà un file config.h. Assicurarsi
della presenza del file e modificarlo se necessario. Il file consente di
impostare oggetti come ad esempio, le directory di installazione
o il numero massimo di sessioni ed unità che il server sarà in grado di
supportare. Gli inserimenti veramente importanti da guardare sono:
FILENAME_NW_INI locazione del file di inizializzazione
PATHNAME_PROGS percorso in cui trovare i programmi eseguibili
di supporto
PATHNAME_BINDERY percorso a cui indirizzare i file "bindery"
PATHNAME_PIDFILES directory in cui scrivere i file "pid"
MAX_CONNECTIONS numero massimo di connessioni simultanee ammesse
MAX_NW_VOLS numero massimo di unità che mars_nwe potrà
supportare
MAX_FILE_HANDLES_CONN numero massimo di file aperti per connessione
WITH_NAME_SPACE_CALLS se si desidera supportare i client ncpfs
INTERNAL_RIP_SAP se si desidera che mars_nwe fornisca routing
rip/sap
SHADOW_PWD se si utilizzano shadow password.
Le impostazioni predefinite dovrebbero andare bene, tuttavia è sempre meglio controllare. Una volta fatto con i comandi:
# make
# make install
si eseguiranno la compilazione dei server e l'installazione nelle
directory appropriate. Verrà anche installato il file di
configurazione /etc/nwserv.conf.
La configurazione è piuttosto semplice:
consiste nel modificare il file /etc/nwserv.conf. Il formato di
questo file a prima vista appare enigmatico, ma in realtà è molto lineare.
Il file contiene diverse istruzioni di configurazione
composte da una sola riga. Ogni riga è delimitata da spazi bianchi ed
inizia con un numero che indica l'argomento da impostare. Tutti i caratteri
che seguono un "#" sono considerati un commento, e pertanto ignorati.
Martin fornisce un esempio nel pacchetto, e di
seguito viene riportato un altro semplificato per offrire una possibile
alternativa.
# VOLUMI (max. 5)
# Solo il volume SYS è obbligatorio. La directory contenente il volume SYS
# deve contenere le directory: LOGIN, PUBLIC, SYSTEM, MAIL.
# L'opzione "n" ignora le lettere maiuscole/minuscole.
# L'opzione "k" converte tutti i nomi di file all'interno di richieste NCP
# in lettere minuscole.
# L'opzione "m" marca il volume come removibile (utile, ad esempio,
# per cdrom).
# L'opzione "r" imposta il volume come a sola lettura.
# L'opzione "o" indica che il volume è un filesystem montato singolarmente.
# L'opzione "P" consente di utilizzare i comandi come file.
# L'opzione "O" consente l'utilizzo del namespace OS/2.
# L'opzione "N" consente l'utilizzo del namespace NFS.
# È predefinito l'uso delle maiuscole.
# Sintassi:
# 1 <Nome del Volume> <Percorso del Volume> <Opzioni>
1 SYS /home/netware/SYS/ # SYS
1 DATA /home/netware/DATA/ k # DATA
1 CDROM /cdrom kmr # CDROM
# NOME DEL SERVER
# Se non impostato, l'hostname Linux sarà convertito in lettere maiuscole
# e utilizzato. È opzionale, se non configurato verrà utilizzato
# l'hostname.
# Sintassi:
# 2 <Nome del Server>
2 LINUX_FS01
# INDIRIZZO DI RETE INTERNA
# L'Indirizzo di Rete Interna IPX rappresenta una caratteristica che
# semplifica il routing IPX per host che possiedono porte su più di
# una rete IPX.
# Sintassi:
# 3 <Internal Network Address> [<Node Number>]
# oppure:
# 3 auto
#
# Se si utilizza "auto", verrà utilizzato il proprio indirizzo IP host.
# NOTA: questo potrebbe essere pericoloso, pertanto assicurarsi di
# assegnare alla propria rete un numero univoco.
# Gli indirizzi sono esadecimali a 4byte (è necessario che inizino
# con 0x).
3 0x49a01010 1
# DISPOSITIVI DI RETE
# Questa riga configura la propria rete IPX. Se la propria rete IPX
# è già stata configurata, questo inserimento è superfluo. Corrisponde
# all'utilizzo diipx_configure/ipx_interface prima di attivare il server.
# Sintassi:
# 4 <Numero di Rete IPX > <nome del device> <frametype> [<ticks>]
# Frame types: ethernet_ii, 802.2, 802.3, SNAP
4 0x39a01010 eth0 802.3 1
# SALVATAGGIO DEGLI INSTRADAMENTI IPX DOPO LO SPEGNIMENTO DEL SERVER
# Sintassi:
# 5 <flag>
# 0 = non salvare i route, 1 = salvare i route
5 0
# VERSIONE NETWARE
# Sintassi:
# 6 <versione>
# 0 = 2.15, 1 = 3.11
6 1
# GESTIONE DELLA PASSWORD
# i client Novell DOS reali supportano una caratteristica per criptare
# la password quando viene modificata. È possibile scegliere se si
# desidera che il proprio server supporti o meno questa caratteristica.
# Sintassi:
# 7 <flag>
# dove <flag> può essere:
# 0 per forzare la codifica della password. (I client non possono
# modificare la password)
# 1 forza la codifica della password, consente la modifica delle
# password non criptate.
# 7 consente password non criptate ma non password vuote.
# 8 consente password non criptate, comprese password vuote.
# 9 per password completamente non criptate (non funziona con OS/2).
7 1
# DIRITTI GID e UID MINIMALI
# abilitazioni utilizzate per connessioni senza login. Tali abilitazioni
# saranno utilizzate per i file nella propria connessione di server
# primarie.
# Sintassi:
# 10 <gid>
# 11 <uid>
# <gid> <uid> provengono da /etc/passwd, /etc/groups
10 200
11 201
# PASSWORD DEL SUPERVISORE
# Può essere rimosso dopo aver avviato il server per la prima volta. Il
# server cripterà questa informazione nel file bindery dopo la sua esecuzione.
# Si dovrebbe evitare di utilizzare l'utente "root", al contrario è
# consigliabile usare un altro account per amministrare il fileserver mars.
#
# Questa riga viene letta e criptata all'interno dei file bindery del server,
# pertanto è necessario che esista la prima volta che si avvia il server
# per assicurarsi che la password non venga scoperta.
#
# Sintassi:
# 12 <Login del Supervisore> <Username Unix> [<password>]
12 SUPERVISOR terry secret
# ACCOUNT UTENTE
# Questo associa login NetWare ad account Unix. Le password sono
# opzionali.
# Sintassi:
# 13 <Login Utente> <Username Unix> [<password>]
13 MARTIN martin
13 TERRY terry
# CONFIGURAZIONE DI LAZY SYSTEM ADMIN
# Se esiste un grande numero di utenti e non è possibile utilizzare
# mappe di utenti individuali di tipo 13, è possibile mappare
# automaticamente i login a mars_nwe con nomi di utenti Linux.
# TUTTAVIA, attualmente non esiste un modo per fare uso di password
# di login Linux, pertanto, tutti gli utenti configurati in questo modo
# utilizzeranno la password impostata in questo punto. Il consiglio è di
# non farlo almeno che la sicurezza non sia che un optional.
# Sintassi:
# 15 <flag> <password comune>
# <flag> : 0 - non mappare gli utenti automaticamente
# 1 - mappa automaticamente gli utenti non configurati
# 99 - mappa automaticamente tutti gli utenti.
15 0 duzzenmatta
# CONTROLLO
# se si imposta questo flag mars_nwe si assicurerà automaticamente
# dell'esistenza di certe directory.
# Sintassi:
# 16 <flag>
# <flag> può essere 0 per no, o 1 per sì.
16 0
# CODE DI STAMPA
# Questo associa le stampanti NetWare alle stampanti Unix. Le directory
# per le code devono essere create manualmente prima di tentare la stampa.
# Le directory per le code NON sono code lpd.
# Sintassi:
# 21 <nome della coda> <directory della coda> <unix_print_cmd>
21 EPSON SYS:/PRINT/EPSON lpr -h
21 LASER SYS:/PRINT/LASER lpr -Plaser
# FLAG DI DEBUG
# Normalmente non sono necessari, ma possono essere utili se si sta
# eseguendo il debug di un problema.
# Sintassi:
# <debug_item> <debug_flag>
#
# 100 = IPX KERNEL
# 101 = NWSERV
# 102 = NCPSERV
# 103 = NWCONN
# 104 = start NWCLIENT
# 105 = NWBIND
# 106 = NWROUTED
# 0 = disabilita il debug, 1 = abilita il debug
100 0
101 0
102 0
103 0
104 0
105 0
106 0
# ESECUZIONE DI NWSERV IN BACKGROUND E UTILIZZO DEL FILE DI LOG
# Sintassi:
# 200 <flag>
# 0 = esegue NWSERV in foreground e non utilizza il file di log
# 1 = esegue NWSERV in background e utilizza il file di log
200 1
# NOME DEL FILE DI LOG
# Sintassi:
# 201 <file di log>
201 /tmp/nw.log
# SCRITTURA SUL FILE DI LOG IN CODA O IN SOVRASCRITTURA
# Sintassi:
# 202 <flag>
# 0 = scrive aggiungendo in coda ad un file di log esistente
# 1 = sovrascrive un file di log esistente
202 1
# TEMPO DI SPEGNIMENTO DEL SERVER
# Questa riga imposta quanto tempo deve passare dallo spegnimento del
# server per lo spegnimento effettivo del server.
# Sintassi:
# 210 <tempo>
# in secondi. (il valore predefinito è 10)
210 10
# INTERVALLO DI ROUTING BROADCAST
# Esprime il tempo in secondi tra broadcast del server
# Sintassi:
# 211 <tempo>
# in secondi. (il default è 60)
211 60
# INTERVALLO DI ROUTING LOGGING
# Imposta quanti broadcast avvengono prima che effettuare la
# registrazione delle informazioni di rete.
# Sintassi:
# 300 <numero>
300 5
# FILE DI LOG DEL ROUTING
# Imposta il nome del file di registrazione del routing
# Sintassi:
# 301 <nomefile>
301 /tmp/nw.routes
# APPEND/SOVRASCRITTURA DEL FILE DI LOG DEL ROUTING
# Imposta se si desidera scrivere aggiungendo in coda su un file di
# log esistente, oppure se si vuole sovrascriverlo.
# Sintassi:
# 302 <flag>
# <flag> 0 per append, 1 per creazione/sovrascrittura
302 1
# TEMPO DI GUARDIA
# Imposta il tempo per messaggi di guardia in grado di assicurare che
# la rete sia ancora viva.
# Sintassi:
# 310 <valore>
# <valore> = 0 - invia sempre dei messaggi
# < 0 - (-ve) per disabilitare i messaggi
# > 0 - invia messaggi quando il traffico di rete
# scende al di sotto di "n" ticks
310 7
# STATION FILE
# Imposta il nome per i station file che determinano per quali
# macchine il fileserver si comporterà come fileserver primario.
# La sintassi di questo file è descritta nella directory "examples"
# del codice sorgente.
# Sintassi
# 400 <nomefile>
400 /etc/nwserv.stations
# GESTIONE DEL GET NEAREST FILESERVER
# Imposta la gestione delle richieste "Get Nearest Fileserver" SAP.
# Sintassi:
# 401 <flag>
# <flag> può essere: 0 - disabilita le richieste "Get Nearest
# Fileserver".
# 1 - Il file "stations" contiene le stazioni
# da escludere.
# 2 - Il file "stations" contiene le stazioni
# da includere.
401 2
Se il server è stato configurato in modo tale da aspettarsi che programmi esterni configurino la rete o forniscano funzionalità di instradamento, allora tali programmi devono essere eseguiti prima di avviare il server. Invece, supponendo che il server sia stato configurato affinché esso stesso configuri le interfacce e fornisca i servizi di instradamento, sarà sufficiente il solo comando:
# nwserv
Per controllare un server bisognerebbe in primo luogo
collegarsi da un client NetWare sulla propria rete. Quindi
impostare un CAPTURE dal client ed eseguire una stampa. Se
entrambe queste operazioni hanno successo, allora il server è funzionante.
Ales Dryak (A.Dryak@sh.cvut.cz) ha sviluppato
lwared per consentire a Linux di agire come fileserver
basato su NCP.
Ales ha chiamato il pacchetto lwared, abbreviazione per LinWare
Daemon.
Il server lwared è in grado di fornire un sottoinsieme delle
funzionalità complete di NCP Novell. Comprende la messaggistica ma non
fornisce alcuna funzionalità di stampa. Attualmente non funziona molto
bene con client Windows 95 o Windows NT. Il server lwared si basa
sulla presenza di programmi esterni per costruire e aggiornare le tabelle
di instradamento e SAP di IPX. Client che non si comportano correttamente
possono causare problemi al server. È importante sottolineare che le
funzionalità di traduzione dei filename non sono state incluse.
Il server funziona per shell NETX e VLM NetWare.
Il pacchetto lwared può essere compilato per qualsiasi kernel
successivo al 1.2.0, anche se è consigliata la versione
1.2.13 poiché in tal modo non sono necessari patch per il
kernel. Alcune delle funzionalità IPX sono cambiate con kernel di
versione 1.3.*: questo significa che sono necessari patch specifici
per fare in modo che lwared funzioni correttamente. Esistono
patch appropriati per i nuovi kernel, pertanto se si deve utilizzare un
kernel alpha dovrebbe essere possibile avere lwared correttamente
funzionante.
Il pacchetto lwared può essere ottenuto tramite ftp anonimo da:
klokan.sh.cvut.cz /pub/linux/linware/
o da:
sunsite.unc.edu /pub/Linux/system/network/daemons
o siti mirror. La versione al momento in cui questo documento viene
scritto è: lwared-0.95.tar.gz.
tar per il pacchetto lwaredQualcosa del tipo:
# cd /usr/src # tar xvpfz lwared-0.95.tar.gz
Coloro che utilizzano un kernel alpha 1.3.*, dovrebbero passare
alla versione 1.3.17 o superiore poiché i patch
supportati sono state creati per questa versione. I kernel 1.3.*
più vecchi della versione 1.3.17 richiederanno una installazione
manuale dei patch (il file INSTALL contenuto nel pacchetto
riporta alcune informazioni su come eseguire questa operazione). Per
installare i patch su un kernel 1.3.17 si può digitare il comando:
# make patch
Il passo successivo all'applicazione dei patch, consiste
nell'assicurarsi che sia stata eseguita la compilazione del kernel con
abilitazione del supporto IPX. In un kernel di versione 1.2.13
è sufficiente aver risposto "Y" alla domanda:
"The IPX protocol", come illustrato nell'esempio che segue:
... ... 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 ... ...
In kernel più recenti il procedimento è analogo, tuttavia il testo del messaggio potrebbe essere leggermente diverso.
Inoltre, è necessario includere il driver appropriato per la propria scheda Ethernet. Maggiori informazioni in l' Ethernet-HOWTO.
A questo punto è possibile procedere con la compilazione
del kernel. Non si dimentichi di eseguire lilo una volta terminata
l'operazione.
lwaredPer compilare
lwared controllare in primo luogo, e modificare se necessario, il
file server/config.h. Il file contiene diverse impostazioni che
guideranno il comportamento del server. I valori predefiniti
dovrebbero essere corretti, tuttavia si dovrebbe controllare che le
directory specificate per i file di log corrispondano alle impostazioni
del proprio sistema.
# make depend # make # make install
Può accadere che il comando "make depend" sembri non trovare il
file float.h sul sistema, tuttavia dovrebbe funzionare comunque.
Può anche accadere che, effettuando la compilazione con gcc 2.6.3
sia necessario modificare la riga:
#include <net/route.h>
con
#include <net/if_route.h>
all'interno di
La configurazione è piuttosto semplice:
consiste nel modificare il file
/lib/ipxkern.c poiché, talvolta questo file ha un
nome di eseguire /etc/nwserv.conf. Il formato di
questo file a prima vista appare enigmatico, ma in realtà è molto lineare.
Il file contiene diverse istruzioni di configurazione
composte da una sola riga. Ogni riga è delimitata da spazi bianchi ed
inizia con un numero che indica l'argomento da impostare. Tutti i caratteri
che seguono un "#" sono considerati un commento, e pertanto ignorati.
Martin fornisce un esempio nel pacchetto, e di
seguito viene riportato un altro semplificato per offrire una possibile
alternativa.
# VOLUMI (max. 5)
# Solo il volume SYS è obbligatorio. La directory contenente il volume SYS
# deve contenere le directory: LOGIN, PUBLIC, SYSTEM, MAIL.
# L'opzione "n" ignora le lettere maiuscole/minuscole.
# L'opzione "k" converte tutti i nomi di file all'interno di richieste NCP
# in lettere minuscole.
# L'opzione "m" marca il volume come removibile (utile, ad esempio,
# per cdrom).
# L'opzione "r" imposta il volume come a sola lettura.
# L'opzione "o" indica che il volume è un filesystem montato singolarmente.
# L'opzione "P" consente di utilizzare i comandi come file.
# L'opzione "O" consente l'utilizzo del namespace OS/2.
# L'opzione "N" consente l'utilizzo del namespace NFS.
# È predefinito l'uso delle maiuscole.
# Sintassi:
# 1 <Nome del Volume> <Percorso del Volume> <Opzioni>
1 SYS /home/netware/SYS/ # SYS
1 DATA /home/netware/DATA/ k # DATA
1 CDROM /cdrom kmr # CDROM
# NOME DEL SERVER
# Se non impostato, l'hostname Linux sarà convertito in lettere maiuscole
# e utilizzato. È opzionale, se non configurato verrà utilizzato
# l'hostname.
# Sintassi:
# 2 <Nome del Server>
2 LINUX_FS01
# INDIRIZZO DI RETE INTERNA
# L'Indirizzo di Rete Interna IPX rappresenta una caratteristica che
# semplifica il routing IPX per host che possiedono porte su più di
# una rete IPX.
# Sintassi:
# 3 <Internal Network Address> [<Node Number>]
# oppure:
# 3 auto
#
# Se si utilizza "auto", verrà utilizzato il proprio indirizzo IP host.
# NOTA: questo potrebbe essere pericoloso, pertanto assicurarsi di
# assegnare alla propria rete un numero univoco.
# Gli indirizzi sono esadecimali a 4byte (è necessario che inizino
# con 0x).
3 0x49a01010 1
# DISPOSITIVI DI RETE
# Questa riga configura la propria rete IPX. Se la propria rete IPX
# è già stata configurata, questo inserimento è superfluo. Corrisponde
# all'utilizzo diipx_configure/ipx_interface prima di attivare il server.
# Sintassi:
# 4 <Numero di Rete IPX > <nome del device> <frametype> [<ticks>]
# Frame types: ethernet_ii, 802.2, 802.3, SNAP
4 0x39a01010 eth0 802.3 1
# SALVATAGGIO DEGLI INSTRADAMENTI IPX DOPO LO SPEGNIMENTO DEL SERVER
# Sintassi:
# 5 <flag>
# 0 = non salvare i route, 1 = salvare i route
5 0
# VERSIONE NETWARE
# Sintassi:
# 6 <versione>
# 0 = 2.15, 1 = 3.11
6 1
# GESTIONE DELLA PASSWORD
# i client Novell DOS reali supportano una caratteristica per criptare
# la password quando viene modificata. È possibile scegliere se si
# desidera che il proprio server supporti o meno questa caratteristica.
# Sintassi:
# 7 <flag>
# dove <flag> può essere:
# 0 per forzare la codifica della password. (I client non possono
# modificare la password)
# 1 forza la codifica della password, consente la modifica delle
# password non criptate.
# 7 consente password non criptate ma non password vuote.
# 8 consente password non criptate, comprese password vuote.
# 9 per password completamente non criptate (non funziona con OS/2).
7 1
# DIRITTI GID e UID MINIMALI
# abilitazioni utilizzate per connessioni senza login. Tali abilitazioni
# saranno utilizzate per i file nella propria connessione di server
# primarie.
# Sintassi:
# 10 <gid>
# 11 <uid>
# <gid> <uid> provengono da /etc/passwd, /etc/groups
10 200
11 201
# PASSWORD DEL SUPERVISORE
# Può essere rimosso dopo aver avviato il server per la prima volta. Il
# server cripterà questa informazione nel file bindery dopo la sua esecuzione.
# Si dovrebbe evitare di utilizzare l'utente "root", al contrario è
# consigliabile usare un altro account per amministrare il fileserver mars.
#
# Questa riga viene letta e criptata all'interno dei file bindery del server,
# pertanto è necessario che esista la prima volta che si avvia il server
# per assicurarsi che la password non venga scoperta.
#
# Sintassi:
# 12 <Login del Supervisore> <Username Unix> [<password>]
12 SUPERVISOR terry secret
# ACCOUNT UTENTE
# Questo associa login NetWare ad account Unix. Le password sono
# opzionali.
# Sintassi:
# 13 <Login Utente> <Username Unix> [<password>]
13 MARTIN martin
13 TERRY terry
# CONFIGURAZIONE DI LAZY SYSTEM ADMIN
# Se esiste un grande numero di utenti e non è possibile utilizzare
# mappe di utenti individuali di tipo 13, è possibile mappare
# automaticamente i login a mars_nwe con nomi di utenti Linux.
# TUTTAVIA, attualmente non esiste un modo per fare uso di password
# di login Linux, pertanto, tutti gli utenti configurati in questo modo
# utilizzeranno la password impostata in questo punto. Il consiglio è di
# non farlo almeno che la sicurezza non sia che un optional.
# Sintassi:
# 15 <flag