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.pl10.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.99.pl10.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 lwared
Qualcosa 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.
lwared
Per 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 /lib/ipxkern.c
poiché, talvolta questo file ha un
nome diverso.
Il comando "make install
" tenterà di installare il server ed i
programmi del demone di routing all'interno della directory
/usr/sbin
, il programma lwpasswd
in
/usr/bin
, i programmi di utilità IPX in
/sbin
ed infine, le pagine di manuale verranno installate
nella directory /usr/man
. Se qualcuna di queste locazioni non
fosse disponibile nel sistema, sarà necessario modificare il
Makefile
per impostare le directory destinazione.
lwared
La prima cosa da fare consiste nella
configurazione delle interfacce Ethernet per supportare le reti IPX
supportate dal proprio server. È necessario conoscere gli indirizzi di
rete IPX per ciascuno dei propri segmenti LAN, quale dispositivo Ethernet
(eth0
, eth1
ecc.) si trova su ciascun segmento, quale tipo di
trama (802.3
, EtherII
ecc.) viene utilizzata da ogni segmento
LAN e quale indirizzo di Rete Interna deve essere utilizzato dal proprio
server (fondamentale se il server offre servizi a più di un segmento LAN).
Esempio di configurazione per un server su due segmenti dissimili con
indirizzi di rete IPX 23a91300
e 23a91301
e indirizzo di rete
interna bdefaced
:
# ipx_internal_net add BDEFACED 1 # ipx_interface add eth0 802.3 23a91300 # ipx_interface add eth1 etherii 23a91301
Il kernel instrada i
pacchetti IPX come pure per IP, tuttavia sono richiesti programmi
aggiuntivi per gestire l'aggiornamento delle tabelle. Nel caso di IPX,
sono necessari due demoni, entrambi supportati da lwared
:
ipxripd
gestisce le informazioni di instradamento e ipxsapd
le informazioni di SAP. Per avviare i demoni è sufficiente
specificare la locazione in cui devono scrivere i propri messaggi di log:
# ipxripd /var/adm/ipxrip # ipxsapd /var/adm/ipxsap
È necessario eseguire la configurazione manuale di due file per consentire
il login al server lwared
. Tali file sono:
In questo file vengono memorizzate le informazioni
di account dell'utente. Il programma lwpasswd
è utilizzato per
mantenerlo aggiornato. La sua forma più semplice del file
/etc/lwpasswd
è:
ales: terryd: guest:
Si tratta di una semplice lista di identificativi di login, seguiti dal
carattere ":
" e dalla versione criptata della password. Due
importanti avvertimenti sono: l'assenza di password criptate significa
che non ne esiste alcuna, gli utenti LinWare devono avere un account
per Linux quindi ogni utente presente nel file /etc/lwpasswd
deve
apparire anche in /etc/passwd
; l'utente root
è l'unico in
grado di modificare le password di un altro utente LinWare come di seguito
indicato:
# lwpasswd rodg Changing password for RODG Enter new password: Re-type new password: Password changed.
Si tratta delle tabelle relative al volume LinWare e
in esse sono memorizzate le informazioni su directory da rendere
disponibili agli utenti LinWare (la natura del file è simile a quella
di /etc/exports
di NFS). Un semplice esempio del suo formato è:
SYS /lwfs/sys DATA /lwfs/data HOME /home
Il nome del Volume è seguito da spazi bianchi seguiti dalle directory Linux da esportare. Ci deve essere almeno una riga relativa al volume SYS affinché un server possa avviarsi. Se si desidera che i propri utenti DOS siano in grado di utilizzare il proprio server LinWare come server primario, allora deve essere installata una struttura standard per il volume SYS sotto la directory che viene esportato come volume SYS. Dal momento che il copyright di questi file appartiene a Novell Corporation, è necessario possedere una licenza per il loro utilizzo. Se gli utenti utilizzeranno un fileserver Novell come server primario, allora la licenza non è necessaria.
lwared
viene avviato tramite il
comando:
# lwared
Se il server è stato avviato come mostrato, il nome del server LinWare dipenderà dalla risposta dell'hostname Linux. Se si desidera un nome diverso, è possibile indicarlo esplicitamente. Ad esempio, il comando:
# lwared -nlinux00
avvia il server con nome linux00.
lwared
La prima cosa da
controllare è la presenza del proprio server LinWare
nell'elenco fornito dal comando slist
(eseguito su un
client DOS della propria rete). Il programma slist
è presente nel
volume SYS di un fileserver Novell, pertanto può essere eseguire
solo da una macchina già collegata. Se l'esito è negativo,
controllare che ipxsapd
e lwared
siano entrambi in esecuzione.
Al contrario, se l'esito è positivo, si tenti la connessione al server ed
il mount di un volume, tramite:
C:> attach linux00/ales ... ... C:> map l:=linux00/data: C:> l:
A questo punto dovrebbe essere possibile lavorare con il nuovo disco proprio come con qualsiasi altro disco. Le abilitazioni ai file corrisponderanno a quelle dell'account a Linux parallelo al proprio login LinWare.