Samba è un file manager compatibile con LanManager che di conseguenza consente connessioni con reti NetBios. Samba fa ormai parte della maggior parte delle distribuzioni Linux. In questa sezione, si fa riferimento a una versione di Samba installata attraverso una distribuzione, in modo tale che la collocazione dei file sia conforme alle indicazioni del FSSTND.
La configurazione di Samba è delicata. Negli esempi seguenti, si propone una configurazione minima.
Prima di passare alla configurazione vera e propria di Samba, conviene preparare quello che serve, o accertarsi che sia già stato predisposto, e precisamente:
Conviene aggiungere manualmente al file /etc/passwd la riga seguente.
guestpc::499:100::/dev/null:/dev/null
Come si può vedere, si tratta di un utente senza password, senza directory home e senza shell. Sotto questo aspetto, non dovrebbe costituire un problema di sicurezza. Il nome guestpc è scelto in base al valore predefinito da Samba per gli accessi generici senza particolari controlli. Il numero usato come UID va scelto in modo che non coincida con altri contenuti all'interno del file /etc/passwd; per quanto riguarda la scelta del GID (il numero del gruppo), questo dipende dalle particolari strategie adottate nella gestione degli utenti.
Conviene predisporre una directory per gli accessi non controllati attribuendogli tutti i permessi necessari.
#
mkdir /home/samba
#
chmod a+rwx /home/samba
Conviene predisporre una directory per lo spool delle stampe gestite da Samba, senza alcuna restrizione nei permessi.
#
mkdir /var/spool/samba
#
chmod a+rwx /var/spool/samba
Il file /etc/services deve contenere le righe seguenti.
netbios-ns 137/tcp # NETBIOS Name Service
netbios-ns 137/udp
netbios-dgm 138/tcp # NETBIOS Datagram Service
netbios-dgm 138/udp
netbios-ssn 139/tcp # NETBIOS session service
Quindi si può procedere a configurare Samba attraverso il suo file di configurazione /etc/smb.conf.
; =====================================================================
; /etc/smb.conf
; =====================================================================
;
[global]
allow hosts = 192.168.1.0/255.255.255.0
workgroup = UFFICIO
guest account = guestpc
printing = bsd
printcap name = /etc/printcap
[public]
comment = directory pubblica
path = /home/samba
public = yes
writable = yes
printable = no
browseable = yes
[lp]
comment = stampante pubblica
path = /var/spool/samba
public = yes
writable = no
printable = yes
browseable = yes
La sezione global è speciale e serve per stabilire i valori predefiniti per tutte le altre sezioni.
---------
allow hosts
Permette di definire i computer host che possono accedere ai servizi di Samba. In questo caso si concede a tutta la sottorete 192.168.1.0 di accedere.
workgroup
Permette di definire il nome del gruppo di lavoro. Il valore predefinito, nel caso non sia indicato, dovrebbe essere WORKGROUP a seconda di come è stato compilato il sorgente.
guest account
Permette di definire il nome di un utente generico da considerare guest, al quale è consentito utilizzare i servizi pubblici. Questo utente era stato aggiunto al file /etc/passwd come segue.
guestpc::499:100::/dev/null:/dev/null
printing
Assegnando a questa variabile il valore bsd si informa Samba che il sistema di stampa utilizza il programma lpr.
printcap name
Il nome del file /etc/printcap, completo del percorso.
Si tratta della definizione di un servizio denomianto public creato per permettere l'accesso indiscriminato alla directory /home/public.
comment
Si tratta della descrizione del servizio.
path
È il percorso della directory pubblica. Perché possa essere veramente disponibile a tutti occorre che i suoi permessi di accesso consentano tutte le operazioni a tutti gli utenti.
public
Permette di definire se si tratta o meno di un servizio pubblico.
writable
Permette di definire se gli utenti di questo servizio possono accedere anche in scrittura.
printable
Permette di definire se si tratta di un servizio di stampa. In questo caso, evidentemente no.
Si tratta della definizione di un servizio denomianto lp creato per permettere l'accesso indiscriminato alla stampante omonima (lp) del file /etc/printcap. In pratica rende pubblica, attraverso Samba, questa stampante.
path
Definisce il percorso della directory che Samba userà come area di spool. Non si deve confondere questa directory con quelle già utilizzate con il sistema di stampa normale, questo perché si deve trattare di una directory accessibile a tutti.
public
Permette di definire se si tratta o meno di un servizio pubblico.
writable
Permette di definire se gli utenti di questo servizio possono accedere anche in scrittura. In questo caso, no, trattandosi di un servizio di stampa.
printable
Permette di definire se si tratta di un servizio di stampa.
Per controllare la correttezza sintattica del file di configurazione /etc/smb.conf si può utilizzare il programma testparm.
$
testparm
Si dovrebbe ottenere un elenco suddiviso in due parti. Segue solo la prima parte.
Load smb config files from /usr/local/samba/lib/smb.conf
Processing section "[public]"
Loaded services file OK.
Press enter to see a dump of your service definitions
Premendo
Il passo successivo è quello di controllare che il servizio sia effettivamente funzionante. Se il computer che si utilizza e sul quale è installato Samba, si chiama topolino (topolino.zigozago.dg), si può utilizzare il programma smbclient nel modo seguente.
$
smbclient -
L topolino
Si dovrebbe ottenere il risultato seguente.
Added interface ip=192.168.1.1 bcast=192.168.1.255 nmask=255.255.255.0
Server time is Wed Apr 9 10:47:46 1997
Timezone is UTC-0.0
Domain=[UFFICIO] OS=[Unix] Server=[Samba 1.9.16p11]
Server=[topolino] User=[daniele] Workgroup=[UFFICIO] Domain=[UFFICIO]
Sharename Type Comment
--------- ---- -------
IPC$ IPC IPC Service (Samba 1.9.16p11)
lp Printer stampante pubblica
public Disk directory pubblica
This machine has a browse list:
Server Comment
--------- -------
TOPOLINO Samba 1.9.16p11
This machine has a workgroup list:
Workgroup Master
--------- -------
UFFICIO TOPOLINO
Come ulteriore verifica finale, si può fingere di accedere attraverso smbclient al servizio public del proprio computer.
$
smbclient "\\\\TOPOLINO\\PUBLIC"
I nomi del computer e del servizio sono scritti con lettere maiuscole intenzionalmente, non perché ciò sia necessario, ma perché è possibile. Infatti, molti client di servizi NetBios sono in grado di utilizzare solo nomi composti da lettere maiuscole.
Il risultato dovrebbe essere il seguente.
Added interface ip=192.168.1.1 bcast=192.168.1.255 nmask=255.255.255.0
Server time is Wed Apr 9 11:00:13 1997
Timezone is UTC-0.0
Password:
Dal momento che si fa riferimento a un servizio pubblico,
non si inserisce alcuna password: si preme semplicemente
Domain=[UFFICIO] OS=[Unix] Server=[Samba 1.9.16p11]
smb: \>
A questo punto, smbclient si comporta come un programma di FTP. Per terminare l'esecuzione di smbclient è sufficiente scrivere il comando quit.
Per poter integrare il proprio computer Linux, sul quale è appena stato installato Samba, con una rete che utilizza NetBios, occorre che i sistemi operativi di questa rete integrino anche il TCP/IP. Di conseguenza, si potrà interagire con sistemi MS-Windows95 e NT, mentre per MS-Windows 3.11 e per il Dos occorre aggiungere l'estensione al TCP/IP. Per questo scopo si può eventualmente visitare il seguente indirizzo.
ftp://ftp.microsoft.com/bussys/clients/
L'esempio seguente mostra l'interrogazione di un computer su cui gira MS-Windows95 che consente la condivisione del disco C: e della stampante.
$
smbclient -
L pippo
Added interface ip=192.168.1.1 bcast=192.168.1.255 nmask=255.255.255.0
Server time is Thu Apr 10 12:50:16 1997
Timezone is UTC+2.0
Server=[PIPPO] User=[] Workgroup=[UFFICIO] Domain=[UFFICIO]
Sharename Type Comment
--------- ---- -------
C Disk
HP Printer
IPC$ IPC Comunicazioni remote tra processi
PRINTER$ Disk
Da quello che si vede nell'elenco dei servizi è possibile utilizzare smbclient per accedere al servizio C.
$
smbclient "\\\\PIPPO\\C"
<!> L'argomento "\\\\PIPPO\\C" rappresenta in realtà \\PIPPO\C, ma si suppone di utilizzare la shell bash (o simile), per cui c'è la necessità di racchiudere la stringa tra doppi apici e poi, di conseguenza, quella di raddoppiare le barre \.
Dal lato del computer pippo sul quale è in funzione MS-Windows95, è possibile utilizzare le risorse di rete per accedere al computer Linux (topolino).
Dal lato del computer Linux è possibile controllare gli accessi attraverso smbstatus.
$
smbstatus
Samba version 1.9.16p11
Service uid gid pid machine
----------------------------------------------
public guestpc users 148 pippo (192.168.1.2) Wed Apr 9 15:05:44 1997
No locked files
Segue il contenuto delle directory pubbliche così come si vede in figura figura-win95-samba-directory-condivisa dal punto di vista di Linux.
total 55
-rwxr--r-- 1 guestpc users 49129 Feb 1 1992 dc.com
-rwxr--r-- 1 guestpc users 3236 Feb 1 1992 dc.doc
-rwxr--r-- 1 guestpc users 476 Feb 6 20:46 dc.ext
-rwxr--r-- 1 guestpc users 261 Dec 12 20:40 dc.mnu
Per utilizzare una stampante condivisa in una rete NetBios, si può utilizzare ancora smbclient. Per esempio, si vuole stampare il file esempio nella stampante condivisa con il nome HP dal computer pippo.
$
smbclient "\\\\PIPPO\\HP" -
P
Dopo la richiesta della password, che supponiamo sia inesistente, si presenta il prompt di smbclient dal quale è possibile dare il comando di stampa.
print <file-da-stampare>
Quindi si può uscire dalla sessione di lavoro con smbclient utilizzando il comando quit.
Di certo è una operazione piuttosto laboriosa, inoltre si aggiunge il problema della scalettatura, cioè la necessità di convertire i file di testo Unix in file di testo Dos.
Se si vogliono utilizzare computer MS-DOS per accedere a computer Linux che condividono dati attraverso Samba, è necessario acquisire il software msclient dal solito indirizzo di Microsoft.
ftp://ftp.microsoft.com/bussys/clients/
Nel computer Dos, una volta decompressi i file in una directory transitoria, si può avviare il programma SETUP.EXE. È necessario solo il protocollo TCP/IP, mentre il NetBios è superfluo e serve solo a ridurre ulteriormente la scarsa memoria a disposizione. È anche sufficiente utilizzare il cosiddetto ``redirector di base''.
nmbd [<opzioni>]
È il daemon del servizio necessario per la gestione del name server netbios, per le connessioni SMB (Samba). A seconda di come è gestita la particolare distribuzione Linux che si utilizza, potrebbe essere avviato direttamente dalla procedura di inizializzazione (init), oppure dal dal supervisore inetd ( inetd).
smbd [<opzioni>]
È il daemon del servizio necessario per ricevere connessioni SMB (Samba). A seconda di come è gestita la particolare distribuzione Linux che si utilizza, potrebbe essere avviato direttamente dalla procedura di inizializzazione (init), oppure dal dal supervisore inetd ( inetd).
Le indicazioni di questo capitolo su Samba non sono esaurienti. Se esiste la necessità di lavorare seriamente in modo integrato con un ambiente di rete NetBios, è necessario approfondire l'argomento con la documentazione originale, eventualmente cominciando da SMB HOWTO.
1997.10.26 - Scritto da Daniele Giacomini daniele@calion.com (vedi copyright: Appunti Linux).