Capitolo successivo Capitolo precedente Indice

60. Samba

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.

60.1 Configurazione di Samba

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:

Utente guest

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.

Directory condivisa

Conviene predisporre una directory per gli accessi non controllati attribuendogli tutti i permessi necessari.

# mkdir /home/samba

# chmod a+rwx /home/samba

Directory di spool per la stampa

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

Verificare /etc/services

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

Predisporre /etc/smb.conf

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

[global]

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.

[public]

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.

[lp]

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.

60.2 Verifica del funzionamento

Per controllare la correttezza sintattica del file di configurazione /etc/smb.conf si può utilizzare il programma testparm.

$ testparm [Invio]

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 [Invio] si ottiene il resto delle informazioni, che riguardano la configurazione, così come è stata interpretata, completa di tutti i valori predefiniti.

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 [Invio]

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" [Invio]

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 [Invio].

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.

60.3 Connessione con una rete NetBios-TCP/IP

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 [Invio]

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).


La directory pubblica amministrata da Samba, dal punto di vista di MS-Windows95.

Dal lato del computer Linux è possibile controllare gli accessi attraverso smbstatus.

$ smbstatus [Invio]

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.

60.4 Client MS-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''.

60.5 Componenti di Samba

nmbd

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

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).

60.6 Conclusione

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).


Capitolo successivo Capitolo precedente Indice