SOMMARIO INDIETRO AVANTI


Samba, Win95, NT e HP Jetdirect

di Eugene Blanchard

Traduzione di G. Riccardi e A. Cartelli

Dirigo un laboratorio didattico, con lo scopo di insegnare i fondamenti del routing su sistemi propretari. Vi sono diciotto posti a sedere con nove PC, un server e una HP LaserJet 4050N con scheda HP Jetdirect print server installata. Il server è configurato con Slackware 4.0 e Linux 2.2.6, otto PC sono configurati con WinNT 4.0 SP5 ed uno con Win95a.

I requisiti posti per il server Linux sono i seguenti:

Inizialmente si è posto il problema di usare NFS e configurare ogni client per connettersi al server Linux, oppure, utilizzare SAMBA e configurare soltanto il server. Poiché durante le normali attività del laboratorio sui clients sarebbero regolarmente stati effettuati rebuilt, reboot e riconfigurazioni varie, è apparso evidente che utilizzando i servizi SAMBA il server Linux sarebbe stato trasparente ai client e che avrebbe consentito la maggiore semplicità d'installazione per i clients stessi.

Questo articolo descrive come ho usato SAMBA per:

NOTA: questo non è un articolo HOW-TO, ma soltanto un esempio di una configurazione funzionante e del processo applicato per configurare SAMBA


Installazione di SAMBA

Il procedimento d'installazione dipende da quale distribuzione si sta utilizzando. Se si utilizza Slackware si può selezionare SAMBA durante l'installazione, o se si sta per aggiungere SAMBA ad un sistema già configurato si può utilizzare il programma pkgtool.

Ci si posizioni sulla directory /slakware/N11 che si trova sul CD Slackware. Si digiti pkgtool e "Install packages from current directory". Per tutte le altre distribuzioni si assume che SAMBA sia stato installato preventivamente.

Nella distribuzione Slackware SAMBA si avvia con lo script rc, "/etc/rc.d/rc.samba":


#
# rc.samba: Start the samba server
#
if [ -x /usr/sbin/smbd -a -x /usr/sbin/nmbd ]; then
  echo "Starting Samba..."
  /usr/sbin/smbd -D
  /usr/sbin/nmbd -D
fi

Il programma smbd fornisce ai clients i servizi SMB/CIFS. SMB (Server Message Block) identifica i servizi che i client di Win95 e Win NT usano per connettersi sulle reti. Il nuovo nome per SMB è Common Internet File System (CIFS).

Il programma nmbd è un NETBIOS name server e consente l'utilizzo di NETBIOS su servizi di naming IP per i client.

Digitando "ps -aux" al prompt dei comandi, si possono vedere i processi in elaborazione e verificare se smbd e nmbd sono presenti:

USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.2   220  128 ?        S    Oct21   0:02 init
root         2  0.0  0.0     0    0 ?        SW   Oct21   0:00 [kflushd]
root         3  0.0  0.0     0    0 ?        SW   Oct21   0:00 [kpiod]
root         4  0.0  0.0     0    0 ?        SW   Oct21   0:00 [kswapd]



root       101  0.0  0.5  1544  380 ?        S    Oct21   0:00 /usr/sbin/smbd -D
root       103  0.0  0.9  1196  584 ?        S    Oct21   0:03 /usr/sbin/nmbd -D



root      8113  0.4  0.9  1164  616 ttyp0    S    11:14   0:00 -bash
root      8120  0.0  1.1  2272  744 ttyp0    R    11:14   0:00 ps -aux


File di Configurazione SAMBA

Il file di configurazione di SAMBA è /etc/smb.conf e sono disponibili anche diversi esempi di configurazione in /usr/doc/samba-2.0.3/examples.

Il file /etc/smb.conf può essere suddiviso in tre sezioni generali:

La sezione Global ha a che fare con i parametri globali utilizzati come workgroup name, netbios name, interfacce IP. Per esempio:

# Global parameters

        workgroup = E328                # workgroup name
        netbios name = E328-00          # Linux server's netbios name
        server string = %h - Linux Samba server         # comment shown in Win's Network Neighborhood detail view
        interfaces = 192.168.1.3/24     # NICs + subnet mask (24 = 255.255.255.0) 
        encrypt passwords = Yes         # Required for NT (Win95 will work with encrypted or not)
        null passwords = No             # Must have a password
        log file = /var/log/samba.      # location of samba log files (many!)
        max log size = 50               # maximum size of each log file
        socket options = TCP_NODELAY    # Speeds up convergence of netbios
        os level = 33                   # Gives a higher browse master "priority"
        preferred master = Yes          # This server is the browsemaster
        guest account = pcguest         # guest account name
        hosts allow = 192.168.1. 127.   # networks allowed to access this server using SMB

La sezione Shares si occupa delle directories di file condivisi. Per esempio:

[homes]
        comment = Home Directories      # comment shown in Win's Network Neighborhood detail view
        path = %H                       # automatically display user's home directory as SMB share
        valid users = %S                # Only user is allowed to access this directory
        read only = No                  # can read/write
        create mask = 0750              # permissions given when creating new files
        browseable = No                 # only show user's home directory not "homes" folder

[public]
        comment = Public Files          # comment shown in Win's Network Neighborhood detail view
        path = /home/ftp/pub            # path to public directory
        guest ok = Yes                  # anyone can access this directory

[cdrom]
        comment = Cdrom on E328-00      # comment shown in Win's Network Neighborhood detail view
        path = /cdrom                   # path to cdrom drive
        guest ok = Yes                  # anyone can access cdrom drive, public share

La sezione Printers tratta, ovviamente, di stampanti condivise. Ancora un esempio:

[lp] 
        comment = E328-Laser            # comment shown in Win's Network Neighborhood detail view
        path = /var/spool/samba         # path to spool directory
        print ok = Yes                  # allowed to open, write to and submit to spool directory

Si può creare manualmente il file /etc/smb.conf se si conosce il significato di ogni statement oppure si può utilizzare SWAT (SAMBA Web Administration Tool) una GUI web. Un vantaggio ulteriore nell'usare SWAT sono i files di help online che descrivono tutte le scelte disponibili. SWAT è installato automaticamente con le versioni SAMBA 2.0 e superiori.


Utilizzare SWAT

Le seguenti istruzioni sono estratte direttamente dal file /usr/doc/samba-2.0.3/swat/README:

Running via inetd
-----------------

Si dovrà editare i file /etc/inetd.conf e /etc/services per abilitare SWAT ad essere lanciato via inetd.

In /etc/services si dovrà aggiungere una riga come la seguente:

swat    901/tcp

la scelta del numero di porta non è importante a meno che non si scelga un numero maggiore di 1024 e che non sia correntemente in uso (utilizzare un numero maggiore di 1024 apre una falla poco identificabile nella sicurezza, che dipende dai dettagli di implementazione del proprio daemon inetd).

In /etc/inetd.conf dovrà aggiungere una linea come la seguente:

swat    stream  tcp     nowait.400      root    /usr/local/samba/bin/swat swat

Una volta editati i files /etc/services e /etc/inetd.conf, si dovrà mandare un segnale HUP al daemon inetd. Su molti sistemi basterà digitare "killall -1 inetd" su altri userete "kill -1 PID" dove PID è il process ID del daemon inetd.

Launching
---------

Per lanciare SWAT si punti il proprio browser preferito all'URL http://localhost:901

Si noti che ci si può connettere a SWAT da qualsiasi macchina connessa in rete con protocollo IP, ma effettuare una connessione remota lascerà la propria connessione accessibile a chi vorrà rubare le passwords, visto che potranno essere messe in chiaro sulla rete.

Quando ci si connetterà ci si troverà al prompt di riconoscimento username/password e si avrà bisogno di fornire "root" come username e la corretta password.

Una volta che SWAT sarà andato in esecuzione si troverà:

Finestra di SAMBA

I pulsanti del menu sono auto-descrittivi ed è disponibile un eccellente help. Di seguito è riportata una lista veloce dei menu:

Quando le modifiche alla configurazione nelle sezioni Global, Shares e Printers saranno ultimate, dovranno essere scritte usando il pulsante/icona "commit", altrimenti il file /etc/smb.conf non verrà modificato.

Una volta che le modifiche saranno scritte (/etc/smb.conf sarà modificato), si dovrà far ripartire i server smbd e nmbd. Il menu Status rende disponibili queste opzioni .

Finestra di avvio

Ho trovato che un buon sistema per comprendere il processo in corso era quello di vedere il file /etc/smb.conf visto che ho effettuato le modifiche utilizzando il pulsante View in SWAT.


Usernames

E' molto importante il fatto che usernames e passwords siano la stessa cosa sia per Windows che Linux. La sincronizzazione delle passwords Linux con le passwords criptate SMB viene effettuata utilizzando lo script di shell mksmbpasswd.sh che si trova in /usr/lib/samba/private.

Nota: per Slackware, la directory per SAMBA è /usr/lib e non /usr/local.

Le seguenti informazioni sono tratte dal file /usr/doc/samba-2.0.3/docs/textdocs/ENCRYPTION.txt :

Il file smbpasswd
---------------------

Affinchè SAMBA possa condividere il protocollo di cui sopra, deve poter vedere i valori criptati a 16 byte dati ad un username. Sfortunatamente, visto che le passwords UNIX sono irreversiblmente criptate (p.e. è impossibile restituire il cleartext delle passwords degli utenti dato il valore UNIX criptato) un passwd file separato deve essere mantenuto. Per minimizzare le problematiche con questi due files non sincronizzati, viene fornita una utility, mksmbpasswd.sh, che genera il file smbpasswd dal file UNIX /etc/passwd.

Per generare il file smbpasswd dal proprio /etc/passwd si utilizzi il seguente comando:

cat /etc/passwd | mksmbpasswd.sh >/usr/local/samba/private/smbpasswd

Il problema che ho riscontrato in questa fase è che mentre mi aspettavo che il passaggio delle passwords avvenisse automaticamente da /etc/passwd a smbpasswd, ho dovuto invece inserirle manualmente. Probabilmente c'è un modo per far avvenire tutto questo automaticamente ed io sarei ben lieto di sapere quale sia.

Dopo aver completato questa fase sono stato in grado di usare Network Neighborhood e point and click sulla directory shares di Linux senza passare per il propmt di login.


Configurazione della Scheda HP Jetdirect usando Linux

Far lavorare Linux e la scheda HP Jetdirect è stato sorprendentemente facile. La scheda HP Jetdirect è un server per stampanti che viene montata sulla stampante HP 4050N. Il primo passo è quello di configurare HP Jetdirect scheda e stampante. Il disco d'installazione standard non contiene il supporto per Linux ma è possibile ottenere il WebAdmin tool, con un download dal sito web HP all'URL: http://www.hp.com/support/net_printing. Io ho scelto di eseguirlo manualmente usando telnet ed il webserver built-in della scheda Jetdirect.

Telnet alla scheda Jetdirect

Per poter eseguire un telnet alla scheda Jetdirect, si deve configurare l'indirizzo IP della stampante. L'indirizzo IP di default è 192.0.0.192 che nella maggior parte dei casi non sarà un indirizzo valido sulla propria rete. La stampante HP 4050N permette di configurare l'IP attraverso la finestra status della stampante. Si selezioni "JetDirect Menu" dal pulsante Menu e si seguano le istruzioni per configurare il network. Dopo che l'IP è configurato, si setti la subnet mask in modo simile.

si esegua un telnet all'indirizzo IP della propria stampante. Si hanno a disposizione due scelte ora, si può visualizzare il settaggio attuale della stampante digitando "/" o scegliere l'help menu usando "?" come mostrato di seguito:

Please type "?" for HELP, or "/" for current settings 
>/ 
   ===JetDirect Telnet Configuration=== 
        Firmware Rev.   : G.07.20 
        MAC Address     : 00:10:83:1b:41:c7 
        Config By       : USER SPECIFIED 
 
        IP Address      : 192.168.1.10 
        Subnet Mask     : 255.255.255.0 
        Default Gateway : 192.168.1.1 
        Syslog Server   : Not Specified 
        Idle Timeout    : 120 Seconds 
        Set Cmnty Name  : notachance 
        Host Name       : E328-LASER 
 
        DHCP Config     : Disabled 
        Passwd          : Enabled 
        IPX/SPX         : Disabled 
        DLC/LLC         : Enabled 
        Ethertalk       : Disabled 
        Banner page     : Disabled   
 
>? 
        To Change/Configure Parameters Enter: 
        Parameter-name: value  
 
        Parameter-name  Type of value 
        ip:             IP-address in dotted notation 
        subnet-mask:    address in dotted notation 
        default-gw:     address in dotted notation 
        syslog-svr:     address in dotted notation 
        idle-timeout:   seconds in integers 
        set-cmnty-name: alpha-numeric string (32 chars max) 
        host-name:      alpha-numeric string (upper case only, 32 chars max) 
        dhcp-config:    0 to disable, 1 to enable 
        ipx/spx:        0 to disable, 1 to enable 
        dlc/llc:        0 to disable, 1 to enable 
        ethertalk:      0 to disable, 1 to enable 
        banner:         0 to disable, 1 to enable 
 
        Type passwd to change the password. 
 
 Type "?" for HELP, "/" for current settings or "quit" to save-and-exit. 
 Or type "exit" to exit without saving configuration parameter entries

La prima cosa che si deve fare è digitare "passwd" e aggiungere una password administrator alla stampante. Si continui con il configurare il default gateway e poi l'hostname. Il resto verrà configurato utilitzzando il webserver built-in della stampante.

HP Jetdirect Webtool

L'HP Jetdirect Webtool ha 6 diversi menu disponibili:


Stampa da Linux su Jetdirect

Per far in modo che Linux stampasse su Jetdirect è stata aggiunta una linea nel file /etc/printcap. Ho creato una nuova directory per lo spool chiamata /usr/spool/lj4050n ma dovrebbe essere utilizzata la directory di defult /usr/spool/lpd. La directory /usr/spool è un link simbolico alla directory /var/spool.

Il seguente è un listato del file /etc/printcap che è stato usato con HP Jetdirect print server:

# HP Laserjet 4050n

lp|lj4050n:\
        :lp=/dev/null:sh:\
        :mx#0:\
        :sd=/usr/spool/lj4050n:\
        :rm=e328-laser.domainname.com:rp=text:

Dove:


Configurare Windows per Linux Shared Printer

Si realizza passando per Network Neighborhood, e si effettua un doppio click sull'icona "Linux server's shared printer" (stampante condivisa del server Linux). Windows chiederà di configurare la stampante, per quanto mi riguarda io ho reso condivisibile il CD di configurazione della stampante sulla macchina Linux e sono andato sulla cartella del disco 1 alla ricerca del file INF. La configurazione/installazione della stampante si ferma e visualizza un messaggio che suona come "non riesco a trovare il disco 2", basta allora ritornare indietro di una cartella per trovare il disco 2. In tal modo termina l'installazione ed il sistema è pronto per funzionare. Per assicurarsi che tutto è a posto conviene, a questo punto, effettuare la stampa della pagina di prova (almeno io faccio così).

È bene tener presente che la normale procedura di installazione prevede che si lanci il programma di setup da CD. In tal modo, però, vengono installati Megabyte e Megabyte di dati sulla macchina client, che non è detto sia proprio la cosa più auspicabile.
Per quanto mi riguarda quello che voglio è un driver per stampante che mi dia una configurazione veloce, pulita e semplice.


Sommario

Devo dire che installare SAMBA è stato sorprendentemente facile e mi ha consentito di raggiungere tutti gli obiettivi prefissati per il funzionamento del laboratorio. Quando mi sono cimentato con l'impresa ho impiegato 10 minuti per comunicare con Win95. È stato spettacolare, visto che non avevo precedenti esperienze con SAMBA.

Nelle varie configurazioni del laboratorio sono incorso in qualche problema, qualcuno più noioso qualcuno meno, il che mi ha richiesto un po' di lavoro aggiuntivo ma nessun problema irrisolvibile.

Un esempio di un problema noioso è stato quello di avere la cartella [homes] vista come condivisa su un client. Era identica alla directory home del client. La selezione di "Browseable = No" nella sezione Global del file /etc/smb.conf è bastato per mettere tutto a posto.

Il problema più frustrante è stato invece il non vedere lo scambio automatico delle password dai files shadow. Continuavo a vedermi chiedere username e password quando tentavo di usare una risorsa condivisa. Tutta la documentazione indicava chiaramente che quanto da me fatto era corretto. L'inserimento manuale di ogni username/password utilizzando il programma smbpasswd ha fornito la soluzione. Sono sicuro che deve esserci un modo automatico per ottenere questo risultato altrimenti non sarebbe accettabile andare oltre i miei 10 accounts generici.

Tutto sommato sono stato capace di configurare la rete più velocemente e più facilmente che se avessi usato un server NT, ed il server Linux è totalmente trasparente all'utente. Un punto interessante è che: ho impiegato più tempo a scrivere questo articolo che a configurare l'intera rete.


Copyright, per la versione americana, © 1999 E. Blanchard
Pubblicato sul n. 48 della Linux Gazette, Dicembre 1999
Copyright, per la versione italiana, © 2000 LGEI n. 1 Anno IV
SOMMARIO INDIETRO AVANTI