Capitolo 2.   Servente Samba

Fra gli strumenti che il pacchetto Samba mette a disposizione, i più importanti sono senza dubbio quelli che permettono di configurare un servente Samba.

2.1   I demoni del servente

Un servente Samba si basa su due demoni:

2.2   Attivazione del servente Samba

Entrambi i demoni smbd e nmbd possono essere attivati in modo autonomo, o gestiti da un supervisore dei servizi di rete (come xinetd); qui viene presa in esame solo la prima alternativa che è di gran lunga la più praticata e anche quella predefinita in molte distribuzioni GNU/Linux.

In quasi tutte le distribuzioni si trovano infatti degli script preconfezionati per l'attivazione e la disattivazione di determinati servizi; nel caso della Fedora si attivano entrambi i demoni con il comando:

/etc/rc.d/init.d/smb start

e si disattivano con il comando:

/etc/rc.d/init.d/smb stop

ci sono poi anche i comandi:

/etc/rc.d/init.d/smb restart

e

/etc/rc.d/init.d/smb status

il cui significato dovrebbe essere ovvio.

Con Ubuntu invece si usano:

/etc/init.d/samba start

/etc/init.d/samba stop

/etc/init.d/samba restart

2.3   Configurazione di un servente Samba

La configurazione di un servente Samba si basa su di un file di testo che, almeno nelle distribuzioni più diffuse, è /etc/samba/smb.conf.

Solitamente viene fornito preconfezionato e commentato, con una configurazione di base già pronta all'uso; ovviamente è possibile modificarlo per adattare il comportamento del servente alle proprie esigenze.

Prima di esaminare la struttura del file e i parametri principali di configurazione è opportuno sottolineare alcuni importanti aspetti generali:

Il file di configurazione è suddiviso in sezioni i cui nomi sono racchiusi tra parentesi quadrate.

Ogni sezione corrisponde a una risorsa condivisa a eccezione della sezione global usata per le configurazioni globali. Altre sezioni con un ruolo un po' particolare sono homes e printers.

Sezione [global]

In essa si impostano le informazioni che condizionano tutto il sistema ed eventualmente quei parametri che se non specificati vengono assunti in modo predefinito, ad esempio il nome del gruppo di lavoro (workgroup).

Sezione [homes]

In essa si regolano i parametri di configurazione delle directory personali degli utenti che si collegano al servente Samba.

Sezione [printers]

Consente di impostare le caratteristiche della condivisione di tutte le stampanti installate nella macchina GNU/Linux senza dover definire una condivisione separata per ognuna di esse.

All'interno del file di configurazione è possibile usare alcune variabili il cui nome viene sostituito dal rispettivo valore quando il file di configurazione viene utilizzato dai demoni smbd e nmbd.

Segue una lista delle variabili più importanti con una breve descrizione:

Variabile Descrizione
%S
nome della condivisione corrente ([tmp], [homes], ecc.);
%P
directory principale del servizio corrente;
%u
nome dell'utente (GNU/Linux) del servizio corrente;
%g
nome del gruppo primario di %u;
%U
nominativo-utente della sessione;
%D
nome del dominio MS-Windows in cui il servente Samba si integra;
%G
nome del gruppo primario di %U;
%H
directory personale assegnata a %u;
%v
versione in uso di Samba;
%h
nome del nodo che ha avviato il servizio Samba;
%m
nome NetBIOS della macchina cliente;
%L
nome NetBIOS assegnato al servente;
%M
nome Internet della macchina cliente;
%N
nome della directory personale ottenuta dal servizio NIS del servente;
%p
percorso della directory personale ottenuto dal servizio NIS;
%d
numero identificativo del processo corrente;
%a
architettura software della macchina remota (Samba, MS-Windows 95/98/Me/NT), diversamente sarà assegnata la parola UNKNOWN;
%I
indirizzo IP della macchina cliente;
%T
data e ora corrente.

2.3.1   smb.conf: sezione global

È la sezione che appare in tutte le configurazioni di Samba, anche se non è obbligatoria. Le opzioni in essa contenute vengono applicate a tutte le altre sezioni.

Viene mostrato un esempio comprendente alcune direttive di uso comune suddivise in blocchi in base alla funzione svolta e intervallate da brevi descrizioni del loro significato:

[global]
#
# identificazione del servente
#
    workgroup = INF
    netbios name = pippo        
    server string = Samba Server

La voce più importante è workgroup che assegna a Samba il dominio o il gruppo di appartenenza. Occorre assegnarla correttamente, pena conflitti nella rete paritetica (peer-to-peer).

La voce netbios name è di utilizzo meno frequente e serve ad assegnare al servente Samba un nome NetBIOS a piacere. Il nome NetBIOS viene infatti assegnato uguale a quello ottenuto dal DNS. Ad esempio se il nome DNS del servente fosse muscolis.inf.besta il nome NetBIOS sarebbe muscolis. Uno dei casi in cui è utile poter impostare un nome NetBIOS diverso da quello predefinito è quello in cui la rete è suddivisa in due o più domini DNS diversi; in questo caso potrebbe infatti anche esistere una macchina con nome muscolis.mat.besta che verrebbe quindi ad avere lo stesso nome NetBIOS. Ovviamente il valore di netbios name deve essere assegnato seguendo le regole dei nomi NetBIOS (unica stringa senza punti contenente i simboli alfabetici maiuscoli e minuscoli le cifre e i simboli !, @, #, $, %, ^, &, (, ), -, ' e ~).

Con server string si assegna semplicemente la descrizione dell'elaboratore servente.

#
# opzioni di rete 
#
    hosts allow = 192.168.1. localhost
    hosts deny  = 172.16.244.254
    interfaces  = 192.168.1.1/24 172.16.244.1/16
    bind interfaces only = yes

Le direttive Host allow e host deny servono rispettivamente a specificare quali nodi possono e non possono accedere alle risorse condivise dal servente Samba. L'indicazione può essere fatta tramite il nome del nodo, il nome di dominio, il numero IP, il numero della sottorete. Nell'esempio viene concesso l'accesso a tutte le macchine della sottorete 192.168.1.* e al localhost (è opportuno che l'accesso a localhost sia sempre concesso pena possibili malfunzionamenti della scansione delle risorse del servente) e viene negato alla macchina con indirizzo 172.16.244.254. Possono anche essere usate le parole chiave ALL, per designare qualsiasi elaboratore, e EXCEPT per indicare un'eccezione a una regola (ad esempio host allow 192.168.1. EXCEPT 192.168.1.3). Si deve inoltre notare che in caso di assenza delle direttive host allow e host deny, l'accesso è concesso a tutti in modo predefinito. Infine si tenga presente che tali direttive possono essere inserite anche in specifiche condivisioni ma con grado di priorità inferiore rispetto a quanto specificato nella sezione global.

La direttiva interfaces è utile in caso il servente Samba risieda in più di una sottorete. Se sull'elaboratore sono presenti più interfacce di rete, in modo predefinito, Samba si mette in ascolto di richieste provenienti dagli indirizzi di rete corrispondenti alla rete della prima interfaccia che trova (di solito eth0). Per fare in modo che invece risponda alle richieste provenienti da più sottoreti si deve impostare questa opzione. Nell'esempio Samba si pone in ascolto dalle sottoreti 192.168.1.* e 172.16.*.* (si può usare anche una notazione con maschera di rete: 192.168.1.1/255.255.255.0 172.16.244.1/255.255.0.0).

Ponendo bind interfaces only = yes (l'alternativa è ovviamente no oppure si può evitare di inserire questa opzione), si forza il servente a rispondere soltanto alle sottoreti corrispondenti alle interfacce indicate in interfaces. In tal caso si deve inserire tra le interfacce anche 127.0.0.1 per permettere al programma smbpasswd di potersi collegare al localhost e funzionare correttamente.

#
# opzioni per la stampa
#
    printing = cups
    printcap name = /etc/printcap
    load printers = yes
    show add printer wizard = yes

La direttiva printing permette di specificare il sistema di stampa in uso nel servente; per l'elenco completo delle scelte possibili si rimanda alla consultazione del manuale in linea di smb.conf.

I valori più frequentemente usati sono:

Le successive due direttive permettono di caricare automaticamente tutte le stampanti configurate nel sistema senza descriverle singolarmente, indicando a tale scopo il percorso del file printcap contenente la definizione di tali stampanti. La loro configurazione relativamente a Samba viene poi indicata nell'apposita sezione printers descritta più avanti.

L'ultima opzione permette di far comparire l'icona per l'aggiunta di stampanti nella lista di condivisioni del servente Samba quando si naviga in risorse di rete da un cliente MS-Windows.

#
# opzioni per il log 
#
    log file = /var/log/samba/%m.log
    max log size = 100
    log level = 3

La direttiva log file permette di indicare il file delle registrazioni per gli eventi Samba; tale file può essere unico oppure, come nell'esempio, diverso per ogni cliente che si collega al servente (il nome del file sarà nome_host.log). Altra possibilità è quella di avere un file di registrazioni per ogni utente usando opportunamente la variabile %U o %u.

Con max log size si specifica la grandezza in kbyte del file delle registrazioni, raggiunta la quale il file stesso viene rinominato con estensione .old e reinizializzato; il file .old eventualmente già esistente viene cancellato. Il valore predefinito di questo parametro è 5 000; il valore zero significa nessun limite di ampiezza (scelta non consigliabile per evitare una crescita abnorme del file o dei file delle registrazioni).

La direttiva log level indica il livello di dettaglio dei messaggi annotati nel registro; il valore predefinito è zero e corrisponde a nessun messaggio. Aumentando questo valore si hanno messaggi sempre più dettagliati; è comunque sconsigliabile un livello superiore a 3.

#
# opzioni per l'accesso alle condivisioni
#
    encrypt password = yes
    null password = yes
    guest account = utentesmb
#   restrict anonymous = 2    
    security = share
# in alternativa 
;  security = user
;  security = server
;  security = domain
# altri parametri nel caso di security = user
;  smb passwd file = /etc/samba/smbpasswd
;  username map = /etc/samba/smbusers
# altri parametri nel caso di security = server o domain
;  password server = SERVER_NT

La direttiva encrypt password = yes è praticamente obbligatoria se il servente Samba deve «convivere» con macchine equipaggiate con sistemi operativi MS-Windows 98/NT o più recenti che usano le parole d'ordine cifrate.

La direttiva null password = yes permette di avere utenti Samba con parola d'ordine nulla (il valore predefinito è no.)

La direttiva guest account indica il nome di un utente generico al quale può essere consentito l'accesso alle condivisioni (da usare nel caso di security = share, come dettagliato più avanti). Tale utente deve essere definito nel sistema GNU/Linux senza directory personale e senza shell, aggiungendo al file /etc/passwd la riga:

utentesmb::499:499:utente generico samba:/dev/null:/dev/null.

Il valore predefinito è nobody.

La direttiva restrict anonymous = 2, se attivata permette di evitare i collegamenti anonimi al servente Samba.

Il parametro security è di importanza fondamentale e richiede una trattazione leggermente più ampia.

In ambito SMB/CIFS esistono due tipi di controllo di accesso: «a livello di condivisione» o «share level» e «a livello utente» o «user level»; con Samba si ha una maggiore flessibilità rispetto ai serventi MS-Windows in quanto è presente il livello «share» e ci sono ben quattro varianti del livello «user»:

2.3.1.1   Livello di sicurezza «share»

Con l'impostazione security = share si ha il controllo di accesso a livello di condivisione: il cliente che vuole accedere a una risorsa invia ogni volta una parola d'ordine e nessun nominativo-utente. Samba tenta di dedurre il nominativo-utente dalla direttiva valid users eventualmente inserita nella sezione di condivisione di quella risorsa (come illustrato in seguito), oppure dal nome dell'elaboratore cliente, o, in caso di insuccesso, da quanto indicato con il parametro guest account (questo solo se fra i parametri di condivisione è indicato guest ok = yes e guest only = yes).

Questo livello di sicurezza si usa, soprattutto nel caso di utenti MS-Windows e GNU/Linux non coincidenti, per condividere porzioni di file system quando si ha interesse a far sì che tutti gli utenti abbiano gli stessi diritti sui file condivisi (con l'impostazione guest account = utentesmb il «proprietario» delle risorse condivise sarà sempre l'utente GNU/Linux utentesmb qualunque sia il nominativo dell'utente MS-Windows che si connette).

2.3.1.2   Livello di sicurezza «user»

Con l'impostazione security = user, che è quella predefinita, si ha il controllo di accesso a livello di utente: il cliente che vuole accedere a una risorsa invia al momento della connessione una coppia utente-parola d'ordine in base alla quale avviene l'autenticazione da parte del servente. Se la connessione viene accettata il cliente può accedere a tutte le risorse condivise senza doversi autenticare nuovamente a ogni accesso.

Tutto questo è possibile grazie all'esistenza di un sistema di controllo detto SAM (System Account Manager) basato su un archivio utenti che può essere gestito in vari modi:

Le prime due soluzioni, che sono quelle considerate nella prima parte di queste dispense, sono consigliabili in presenza di domini con un numero limitato di utenti, non più di qualche centinaio; per domini più consistenti, che solitamente richiedono la presenza di più PDC, in considerazione del fatto che Samba non prevede la replica diretta degli archivi utente, è più opportuno ricorrere a soluzioni basate su LDAP.

La scelta del tipo di archivio utenti da utilizzare si effettua nel seguente modo:

#
# tipo di archivio utenti 
#
    passdb backend = smbpasswd
# oppure
;   passdb backend = tdbsam

Ovviamente con la prima scelta si attiva l'archivio su file di testo, con l'altra l'archivio TBDSAM.

Gli utenti Samba vengono aggiunti con il comando smbpasswd illustrato in un paragrafo successivo (2.4).

Valide alternative, specie se non si usa il semplice archivio su file di testo, sono costituite da:

L'uso di questi comandi non viene qui approfondito, solo il comando net viene ripreso in paragrafi successivi (2.3.1.4) e (2.4).

È di fondamentale importanza notare che comunque il nome utente Samba deve coincidere con il nome di un utente definito nel sistema GNU/Linux, in quanto quest'ultimo deve essere sempre in grado di assegnare un proprietario «valido» agli eventuali file creati o copiati dall'utente connesso all'interno della risorsa condivisa.

Se ciò costituisse un problema si può ricorrere all'uso di un file di corrispondenza tra utenti GNU/Linux e utenti MS-Windows, il cui nome è indicato con la direttiva username map =. Un valore abbastanza comune di tale parametro è /etc/samba/smbusers. Tale file conterrà delle righe così formate:

nome_linux = nome_smb_1 nome_smb_2...

Per ovvi motivi di sicurezza, entrambi i file smbusers e smbpasswd, devono essere accessibili sia in scrittura che in lettura dal solo utente root.

2.3.1.3   Livello di sicurezza «server»

Con l'impostazione security = server si ha lo stesso controllo di accesso visto nel caso di user con la differenza che l'utenza viene controllata su un servente esterno (solitamente un PDC MS-Windows, ma può essere anche un PDC Samba) il cui nome (NetBIOS) viene indicato con la direttiva password server =.

2.3.1.4   Livello di sicurezza «domain»

Con l'impostazione security = domain si ha ancora lo stesso controllo di accesso visto nel caso di user, ma questa volta il servente Samba va a inserirsi in un dominio MS-Windows NT/2000.

Per ottenere questo risultato occorre fermare i demoni di Samba, quindi aggiungere il servente Samba al dominio NT sul PDC usando il server manager di MS-Windows NT ». A questo punto si deve eseguire il comando:

net rpc join -Unome_utente%parola_d'ordine

oppure (con Samba 2.x):

smbpasswd -j nome_dominio -r nome_serv -Unome_utente%parola_d'ordine

Il nome_dominio deve essere quello a cui si vuole unire il servente Samba e lo stesso indicato nella direttiva workgroup di smb.conf; il nome_serv deve coincidere con il valore di password server; nome_utente e relativa parola_d'ordine devono rappresentare un'utenza con privilegi sufficienti ad aggiungere un'utenza nuova nella macchina MS-Windows NT/2000; nome_dominio e nome_serv nel comando net non servono in quanto vengono letti automaticamente in smb.conf.

Ultimate queste operazioni occorre naturalmente riavviare il servizio Samba.

In questo modo la macchina con Samba viene ad essere un member server del dominio, cioè una stazione che non contiene copie dell'archivio utenti del dominio stesso, ma offre comunque risorse condivise.

Il vantaggio principale dell'impostazione domain rispetto a quella server consiste nel fatto che il PDC risulta meno carico, in quanto non è più necessaria una connessione di rete permanente tra esso e il servente Samba. Quest'ultimo infatti effettua una chiamata RPC (Remote Procedure Call) solo al momento dell'autenticazione e non necessita di essere costantemente connesso al PDC come avviene nel caso del livello di sicurezza server.

Per questo, e per altre questioni legate alla sicurezza, è sconsigliato usare il livello server a vantaggio del livello domain.

Per concludere occorre notare che anche con questa impostazione (come pure per quella server) è necessario tenere allineati gli elenchi degli utenti dal lato MS-Windows e dal lato GNU/Linux (il motivo è stato illustrato nel paragrafo del livello user). Ci sono però due direttive della sezione global che permettono di automatizzare l'aggiornamento degli utenti GNU/Linux:

add user script = script_1 %u
delete user script = script_2 %u

La prima entra in azione quando, a seguito di una connessione di un cliente MS-Windows, Samba si rivolge al servente di dominio per l'autenticazione con esito positivo ma l'utente GNU/Linux corrispondente non esiste; ovviamente lo script script_1 deve essere scritto in modo adeguato affinché crei l'utente ricevendolo come parametro dalla variabile %u.

In modo speculare si usa l'altra direttiva che entra in azione quando, a seguito di una connessione di un cliente MS-Windows, Samba si rivolge al servente di dominio per l'autenticazione con esito negativo ma il corrispondente utente GNU/Linux esiste; in questo caso script_2 deve provvedere a cancellare l'utente in questione.

Un modo molto più elegante di risolvere il problema consiste nel ricorrere ad un archivio utenti basato su LDAP contenente le informazioni di accreditamento sia per Samba che per il sistema GNU/Linux (utilizzando a tale scopo l'interfaccia ldapsam fra l'archivio utenti e Samba e i moduli nsswitch e PAM per l'autenticazione su GNU/Linux); tali argomenti sono trattati nel capitolo 9.

2.3.1.5   Livello di sicurezza «ADS»

Con l'impostazione security = ADS dove ADS significa Active Directory Server, disponibile a partire da Samba 3, la stazione con Samba diviene un member server di una active directory di MS-Windows 200x, utilizzando l'autenticazione Kerberos5 e LDAP per l'archivio utenti.

Maggiori dettagli a questo proposito vengono forniti nel capitolo sull'uso di Winbind (7.2).

2.3.2   smb.conf: sezioni generiche di condivisione

Una sezione indicante una risorsa condivisa può avere un nome a piacere purché sempre racchiuso tra parentesi quadrate.

Vengono adesso illustrati alcuni esempi allo scopo di descrivere almeno le direttive più importanti:

#
# condivisione 1: una directory accessibile solo a certi utenti
#
[Pagine WWW]
   comment = Dir per le pagine web
   browseable = yes
   public = no
   path = /var/www
   writable = yes
   valid users = utente1 utente2

La direttiva comment serve ad associare una descrizione alla risorsa condivisa.

L'opzione browseable permette di rendere visibile o no la risorsa agli utenti che si connettono al servente.

public è un sinonimo di guest ok; in questo esempio non si vuole che la risorsa sia accessibile per l'utente generico.

path permette di indicare il percorso della risorsa sul sistema GNU/Linux.

writable serve a concedere o negare l'accesso in scrittura (un sinonimo è writeable).

valid users indica quali sono gli utenti che possono accedere alla risorsa. È anche possibile indicare gruppi di utenti GNU/Linux con la sintassi +nome_gruppo e gruppi di utenti NIS (ovviamente deve essere presente in rete un servente NIS) con la sintassi &nome_gruppo e anche entrambi con la sintassi +&nome_gruppo o &+nome_gruppo, o ancora @nome_gruppo.

A proposito della opzione valid users è importante sottolineare come in Samba ci siano due livelli di controllo di accesso alle risorse condivise:

  • il primo, e più importante, è quello che si ottiene con l'impostazione del livello di sicurezza e in pratica stabilisce chi ha diritto di collegarsi al Servente;

  • il secondo, molto più granulare, viene effettuato sulle singole risorse grazie ad opzioni come valid users, public write list ed altre ancora, grazie alle quali si può stabilire quali utenti possono accedere ad ogni singola risorsa.

#
# condivisione 2: una directory pubblica = accessibile a tutti
#
[public]
   comment = Dir pubblica
   browseable = yes
   guest ok = yes
   path = /usr/local/public
   writable = yes
#
# condivisione 3: una directory pubblica = accessibile a tutti in cui tutti 
# gli utenti possano creare, modificare, cancellare tutti i file
#
[temp]
   comment = Dir pubblica plus
   browseable = yes
   guest ok = yes
   guest only = yes
   path = /tmp
   writable = yes

La differenza tra le due condivisioni è molto sottile ma anche interessante. La presenza di guest ok = yes permette le connessioni anonime; eventuali file creati o copiati nella directory sarebbero di proprietà dell'utente indicato in guest account in caso di accesso anonimo, oppure dell'utente effettivo in caso esso fosse registrato in GNU/Linux. Se è presente anche guest only = yes invece il proprietario è sempre l'utente fittizio ospite anche nel caso l'utente collegato fosse riconosciuto regolarmente da GNU/Linux; in questo caso quindi tutti gli utenti possono fare tutte le operazioni con qualsiasi file presente nella directory condivisa.

Un modo alternativo per ottenere lo stesso risultato è quello di usare la direttiva force user = nome_utente; in questo modo Samba assegna lo stesso nominativo-utente a chiunque si connetta alla risorsa.

#
# condivisione 4: un cd-rom
#
[cd]
   comment = CD-ROM
   preexec = mount /mnt/cdrom
   postexec = umount /mnt/cdrom 
   browseable = yes
   public = yes
   path = /mnt/cdrom
   writable = no

Il significato delle impostazioni è ovvio compreso quello delle due opzioni preexec e postexec. In caso si tema che possano connettersi utenti sprovvisti dei privilegi per montare e smontare il CD, si possono sostituire le due direttive rispettivamente con root preexec e root postexec che svolgono lo stesso compito ma con i privilegi dell'utente root.

#
# condivisione 5: una directory privata con permessi preimpostati
#
[privata]
   comment = Dir privata
   browseable = yes
   path = /usr/local/private
   writable = no
   public = no
   write list = pippo pluto
   create mask = 0644
   directory mask = 0644

In questo esempio nella directory non sarebbe possibile scrivere, ma la presenza della direttiva write list permette di impostare permessi di scrittura, per gli utenti indicati, indipendentemente da quanto specificato negli altri parametri. Si deve però notare che i permessi impostati a livello di sistema su quella risorsa hanno sempre il sopravvento su quanto specificato nel file di configurazione di Samba (in altre parole, se /usr/local/private è di proprietà dell'utente root e i permessi sono impostati a 6008, gli altri utenti non possono né leggere né scrivere alcunché in quella directory condivisa).

Le ultime due direttive, infine, servono a indicare i permessi con cui verranno creati file e directory all'interno della risorsa condivisa; il valore predefinito è 07558

Altre direttive importanti sono:

admin users = tizio
follow symlinks = no 

Con la prima si indica che l'utente tizio ha gli stessi privilegi dell'utente root sulla condivisione e quindi non risente di eventuali limitazioni dovute ai permessi sui file; con la seconda si impedisce che vengano seguiti i collegamenti simbolici evitando che chi accede alla condivisione possa accedere anche a file che si trovano all'esterno di questa.

2.3.3   smb.conf: sezione «homes»

La sezione homes viene utilizzata affinché ogni utente possa avere accesso a una propria directory personale sul servente Samba che potrà anche coincidere con la directory personale GNU/Linux di quell'utente. Un esempio di definizione può essere il seguente:

#
# directory personali degli utenti
#
[homes] 
    comment = directory home
    browseable = no
    writable = yes
    path = usr/local/samba/%S

Qui è importante l'impostazione che impedisce la scansione della risorsa in modo che essa non appaia con il nome homes a tutti gli utenti.

La presenza di path serve a fare in modo che questa directory non coincida con quella GNU/Linux dell'utente (come da impostazione predefinita).

La logica di funzionamento è la seguente: quando l'utente si connette, se l'utenza è accettata, viene creata dal servente Samba una condivisione con le caratteristiche specificate nella sezione homes ma con un nome uguale a quello dell'utente connesso.

2.3.4   smb.conf: sezione «printers»

Con questa sezione si impostano i parametri di configurazione di tutte le stampanti definite nel sistema GNU/Linux a patto che nella sezione global siano state inserite le direttive seguenti:

load printers = yes
printcap name = /etc/printcap

L'alternativa, che consiste nel definire le varie stampanti come singole risorse condivise, non viene presa in esame in questa sede.

Un esempio di configurazione per le stampanti è il seguente:

#
# Stampanti
#
[printers]
   comment = stampanti
   path = /var/spool/samba      
   browseable = no
   printable = yes
   public = yes
   writable = no

Qui occorre notare che il parametro path serve a impostare una directory per la coda di stampa, diversa da /tmp/ che è quella predefinita.

Altra direttiva da segnalare è printable con la quale si attiva la coda di stampa.

2.4   Programmi ausiliari per un servente Samba

Un primo strumento molto utile è testparm con il quale si verifica la correttezza sintattica delle impostazioni scritte nel file smb.conf.

Il comando da eseguire è:

testparm /etc/samba/smb.conf

si ottiene una risposta suddivisa in due parti: prima il resoconto del controllo sintattico del file di configurazione, poi l'elenco di tutte le direttive inserite in esso.

Se si usa l'opzione -v si ottiene la lista di tutti i parametri di configurazione di Samba compresi quelli non presenti in smb.conf ai quali viene assegnato il valore predefinito.

Altro programma di fondamentale importanza è smbpasswd, già visto in precedenza a proposito della connessione di Samba a un dominio MS-Windows NT, ma che si usa principalmente per definire utenti e parole d'ordine relative. La sintassi in questo caso è:

smbpasswd [-a] [-x] [nominativo]

L'opzione -a permette di inserire un nuovo utente e poi di definirne la parola d'ordine; l'opzione -x permette invece di eliminarlo; se non si indica alcuna opzione si esegue solo il cambio della parola d'ordine per l'utente. Il nominativo-utente che si può inserire alla fine della riga di comando è quello sul quale il comando opera (se non viene indicato, si fa riferimento in modo predefinito all'utente GNU/Linux che esegue il comando).

Altro strumento utile per la gestione utenti e gruppi anche da remoto e per numerosi altri utilizzi è il nuovo comando net; le sue potenzialità sono notevoli e non vengono qui esaminate in dettaglio rimandando alla consultazione del manuale in linea.

Di seguito vengono riportati alcuni esempi di utilizzo riguardanti principalmente la gestione utenti:

net rpc user -S nome_serv -UAdmin%psw_admin

net rpc user add nome_utente -S nome_serv -UAdmin%psw_admin

net rpc password nome_utente -S nome_serv -UAdmin%psw_admin

net rpc user delete nome_utente -S nome_serv -UAdmin%psw_admin

net rpc -l share -S nome_serv -UAdmin%psw_admin

net rpc -l file -S nome_serv -UAdmin%psw_admin

I comandi servono nell'ordine a:

Tutti i comandi vengono eseguiti sul servente nome_serv come utente Admin con relativa parole d'ordine e utilizzando il protocollo rpc.

A tale proposito è importante notare che i protocolli utilizzabili con il comando net sono tre:

Se il protocollo non viene specificato, il comando cerca di determinarlo in modo automatico.

Infine può essere molto utile anche il comando smbstatus per avere un rapporto (con l'opzione -d anche dettagliato) delle connessioni Samba attive.

Maggiori dettagli sulla configurazione di un servente Samba si possono trovare anche nella documentazione fornita insieme al pacchetto in /usr/share/doc/samba-x.y.z (/usr/share/doc/samba per Ubuntu), oppure consultando la pagina di manuale smb(5).