Gentoo Logo

Disclaimer : La versione originale di questo articolo è stata pubblicata da IBM developerWorks ed è di proprietà di Westtech Information Services. Questo documento è una versione aggiornata dell'articolo originale, e contiene numerosi miglioramenti apportati dal Gentoo Linux Documentation team.
Questo documento non è mantenuto attivamente.


Introduzione a Samba, Parte 3

Indice:

1.  Passare da Samba a samba: La fase di configurazione

Un breve riassunto

Qui c'è un elenco dei smb.conf con cui noi abbiamo lavorato:

Codice 1.1: /etc/smb.conf

[global]

# impostate la variabile workgroup con il nome della vostra rete

workgroup = nome_della_rete
security = user
encrypt passwords = yes
guest account = guest

# abilitate *una* delle due seguenti linee
# abilitate la prima linea se volete usare un server WINS
# esistente nella vostra lan, altrimenti abilitate la
# seconda.

# wins server = IP address of WINS server
# wins support = yes

local master = yes
os level = 99
domain master = yes
preferred master = yes

# Opzioni di sicurezza opzionali.  Personalizzateli.

# hosts allow = 192.168.1.127.
# interfaces = eth1

[tmp]
path=/tmp
writeable=yes

Aggiungere alcune condivisioni

Questo smb.conf è funzionale, ma tutto quello che fà è condividere la directory /tmp con Windows creando una condivisione con il nome di "tmp". Niente di eccezionale. Ora creeremo un'altra condivisione un po' più utile. Aggiungete le seguenti righe al vostro smb.conf e riavviate Samba.

Codice 1.2: Aggiungere una condivisione FTP

[ftp]
path=/percorso/al/root/ftp
writeable=no

Se avete una sezione ftp o un archivio di file sul vostro server Samba, potreste usare qualcosa tipo questo per condividere i dati nella vostra lan. Il parametro writeable=no permette di bloccare la creazione e/o modifica dei file condivisi. Se non si imposta un account Samba valido nessuno potrà accedere a questi file condivisi.

Una condivisione particolare

OK, sò cosa state pensando. Fino ad ora non abbiamo fatto niente di eccezionale. Come si condivide una directory di home? Così:

Codice 1.3: Condividere una directory di home

[drobbins]
comment=Directory di home per l'utente drobbins
path = /home/drobbins
force user = drobbins
read only = no
valid users = drobbins administrator

Questo è qualcosa di molto più interessante. Aggiungendo qualcosa tipo questo al vostro smb.conf vi permetterà di condividere le directory di home. In quest'esempio, una condivisione di nome "drobbins" è stata creata. Questo condivide il contenuto di /home/drobbins nella vostra lan. Fortunatamente, grazie all'opzione valid users, nessuno, apparte gli account autorizzati ( "drobbins" e "administrator" ), può accedere ai file condivisi. Poichè uso Windows NT, spesso sono autenticato come administrator. In questa situazione, è comodo poter accedere a "drobbins". L'opzione valid users così settata permette questo.

Avrete notato l'uso dell'opzione read only. Come avrete intuito, read only è l'opposto del parametro writeable. Potremmo facilmente sostituire l'opzione read only=no con writeable=yes. Questo significa che Samba permetterà la scrittura su questa condivisione, sempre se si hanno i permessi necessari per la scrittura. Poichè l'utente "drobbins" autenticato con Samba corrisponde all'utente Unix "drobbins" , e essendo che "drobbins" è il proprietario della directory /home/drobbins e del suo contenuto, verrà permessa la scrittura e la modifica di file.

Avete mai creato un file, essendo autenticato come root, nella vostra cartella di home e poi provato a modificare quel file? Il sistema non vi garantirà i diritti di scrittura su questo file. Questo mi accade molto spesso. Per risolvere il mio problema faccio su, chown drobbins.drobbins filename e poi exit. Finalmente sarò autorizzato a modificare il file.

Ho fatto questo esempio perchè spesso si desidera condividere le home directory e accedervi con altri utenti Samba. Considerate la seguente situazione. Accedo alla condivisione come amministratore e creo un file. Di solito il proprietario di questo file sarà l'amministratore e non sarà modificabile dall'utente drobbins. Se l'utente drobbins dovesse provare a modificare i file, il sistema non gli garantirebbe diritti sufficienti per la modifica dei file. Fortunatamente Samba ha l'opzione force user che risolve il problema. L'opzione force user forza il sistema a considerare tutte le operzioni eseguite su file (in una determinata condivisione SMB/CIFS) come se fossero state fatte da uno stesso account Unix. Nell'esempio di prima, la condivisione "drobbins", tutti i file avranno come proprietario l'utente drobbins, prevenendo conflitti di utenti. Poichè la condivisione "drobbins" non è altro che la home directory dell'account drobbins, preferisco che tutti i file abbiano come proprietario drobbins.

Prima che passiamo alla prossima sezione vorrei spendere due parole sul parametrocomment. Questa opzione permette di descrivere la vostra condivisione con una descrizione visible da Windows.

Condividere tante directory

Prima abbiamo spiegato come condividere una sola directory. Ma cosa fareste se dovreste amministrare un server con centinaia di account, in cui ogni utente vorrebbe vedere la propria home directory da Windows? Per fortuna Samba ha una speciale condivisione fatta appositamente per questo scopo: "homes". Ora spieghiamo come funziona:

Codice 1.4: Condividere molte home directory

[homes]
comment=Home directory for %S
path=/home/%u
valid users = %u administrator
force user=%u
writeable = yes
browseable = no

Come specificato, questo è un sistema di condivisione speciale. Non funziona come le altre condivisioni. Samba riconosce l'identificatore speciale [homes] e tratta queste condivisioni in maniera differente.

Una delle cose più strane di questo sistema è l'uso dell'opzione browseable=no. Questa particolare opzione permette di rendere invisibili le condivisioni nella rete, ed è normalmente usato per non invogliare quegli utenti smaliziati che tentano di "esplorare" tutte le condivisioni che si trovano davanti. Ma, perchè usare quest'opzione qui?

Rispondere a questa domanda non è una cosa facile. Potete notare che la condivisione "homes" crea appunto una condivisione con lo stesso nome. Ma questa particolare condivisione non ci è molto utile. Non fà niente, quindi la nascondiamo. Ciò che fà per noi la condivisione "homes" è qualcosa di tremendo. Indica a Samba di creare al volo delle home directory per ogni utente. Per esempio, immaginate di non aver definito la condivisione "drobbins" nel nostro smb.conf e di esplorare la rete con l'utente NT "drobbins". Troveremo una condivisione di nome "drobbins" completamente identica alla nostra "drobbins" iniziale. Se accedessimo a Samba usando l'utente NT "jimmy", troveremmo una condivisione di nome "jimmy" perfettamente configurata. Questa è la bellezza dell'opzione homes. Aggiungendo una condivisione speciale tutte le condivisioni delle home directory verranno opportunamente create.

Come funziona questa cosa? Quando la condivisione "homes" viene creata, Samba rileva quale utente NT stà sfogliando la rete. Quindi creerà una condivisione home che sarà personalizzata per quel particolare utente. Questa condivisione sarà mostrata come se fosse una condivisione normale, non-dinamica. L'utente NT non ha idea che la condivisione sia stata creata al volo. Ora vedremo cosa fà ogni singola opzione.

Al parametro comment passiamo come dato %S, che fà riferimento al nome attuale della condivisione. Questo implica che la condivisione "drobbins" avrà come comment "Home directory di drobbins", la condivisione di "jimmy" avrà come comment "Home directory di jimmy", e così via. Il parametro path ha pure una wildcard: %u. %u fà riferimento al nome dell'utente che stà accedendo alla condivisione. In questo particolare caso, %u è equivalente a %S, quindi avremmo potuto pure scrivere path=/home/%S. Questo permette a Samba di linkare dinamicamente le condivisioni alla corretta posizione sul disco.

Usiamo nuovamente delle macro per l'opzione valid users= di modo che possano accedere solo il proprietario della condivisione e l'amministratore di sistema. force user usa pure una macro, in modo tale che tutte le modifiche sui file vegano effettuate dallo stesso account. E come buona abitudine diamo la possibilità di scrivere e modificare file solo agli utenti autenticati correttamente. Fino a quando useremo il parametro browseable=no, le condivisioni create dinamicamente saranno visibili solo quando saranno create. Così sfruttiamo il fatto che la condivisione "homes" venga nascosta, visto che non ci è molto utile.

2.  Parametri di condivisione

Abbiamo visto alcune tecniche utili alla creazione di condivisioni. In questa sezione vedremo altre opzioni molto comuni che servono a personalizzare le funzionalità di Samba per ogni condivisione. Tutte le opzioni generali che riguardano la condivisione di file e directory si possono pure inserire nella sezione [globals] in modo tale da avere delle opzioni generali per tutte le condivisioni.

comment=

Il parametro comment= è un opzione molto utile per rendere il vostro sistema di aspetto più professionale dal lato di Windows. Ci permette di specificare un commento che verrà abbinato ad ogni particolare condivisione con l'intento di descrivere il suo contenuto. Quando specifichiamo dei commenti (specialmente quando usiamo le "home"), io spesso uso la macro %S, che rende più chiaro il nome della condivisione.

path=

Il parametro path= è uno dei più importanti in Samba. Ci permette di settare il percorso della directory da condividere. C'è da notare che se in questa directory è presente un collegamento, esso potrà essere seguito in ogni parte dell'albero della directory. Così è possibile per ogni utente esplorare altre directory al di fuori dell'albero condiviso. La condivisione verrà mostrata come un file o una directory normale. Vedremo più avanti alcune opzioni per cambiare questo comportamento di Samba e renderlo più sicuro.

force user=

force user= è una delle opzioni che preferisco. Rende possibile il fatto che ogni modifica sui file sia eseguita dall'account di un singolo utente. L'opzione valid users= sarà usata molto spesso da chi usa questa opzione, poichè permette di limitare l'accesso a utenti selezionati. Siccome tutte le operazioni verranno effettuate da uno stesso utente, l'opzione force-user= ha di contro che non si potrà controllare chi ha fatto cosa. Così vi è chiaro perchè le condivisioni con il permesso di scrittura dato rende necessario che l'opzione force user= sia accompagnata da una serie di impostazioni di alto livello di sicurezza. Senza certe restrizioni i file potrebbero essere modificati dall'utente che accederà alle condivisioni.

Codice 2.1: Esempio d'uso dell'opzione force user

force user=drobbins

browseable=

Un modo per rendere le vostre condivisioni sicure è di non renderle visibili. Le condivisioni sono esplorabili di default da qualunque utente in rete. Renderle invisibili vi aiuta a evitare accessi non voluti. Ma questo non deve essere l'unico modo per intendere il concetto di sicurezza. Solo perchè una condivisione non viene visualizzata non significa che sarà immune da intrusioni da ambienti Windows. Diminuisce solo la quantità di informazioni che potreste fornire a un utente smaliziato. Per accedere ad una condivisione nascosta basta digitare il suo percorso UNC nel finestra di dialogo Run.... Per esempio, si può accedere alla condivisione nascosta su myserver chiamata 'test' digitando \\myserver\test da Windows.

Codice 2.2: Esempio d'uso dell'opzione browseable

browseable=no

available=

L'opzione available=, che è impostata 'yes' di default, è un modo semplice per disattivare una condivisione senza doverla commentare o cancellare completamente dal smb.conf. available=no serve per rendere inattiva la condivisione dopo il riavvio di Samba.

Codice 2.3: Esempio d'uso dell'opzione available

available=no

valid users=

Si può usare l'opzione valid users= per impedire l'accesso ad alcune condivisioni da parte di certi utenti. Di default ad ogni utente autenticato verrà permesso l'accesso ad ogni condivisione di Samba. Si può far riferimento ad un valido netgroup NIS o UNIX group aggiungendo una '@' al nome del gruppo.

Codice 2.4: Esempio d'uso dell'opzione valid users

Per permettere l'accesso alle condivisioni al gruppo wheel e all'utente drobbins:

valid users = drobbins @wheel

dont descend=

dont descend= permette di specificare le directory in cui Samba non deve entrare. Questo può essere utile per impedire a Samba di accedere a delle cartelle che contiene collegamenti ricorsivi oppure a directory che non serve condividere, come /proc e /dev. Provate la vostra opzione dont descend= per essere sicuri che funzioni correttamente. Per esempio potreste avere bisogno di cambiare dont descend= /dev con dont descend= ./dev.

follow symlinks=

follow symlinks= è settato di default su 'yes' e permette a Samba di seguire i collegamenti, anche se il collegamento punta a directory non condivise. Settando follow symlinks= a 'no' si riesce a disattivare questa funzionalità, impedendo a Samba di seguire i collegamenti. Disattivando questa opzione si elimina una potenziale falla di sicurezza e si può fare quando non si devono necessariamente usare i collegamenti.

Codice 2.5: Esempio d'uso dell'opzione follow symlinks

follow symlinks=no

volume=

L'opzione volume= permette di associare un "volume name" con una determinata condivisione. Questo è molto utile quando usate Samba per condividere il contenuto di un CD-ROM, per esempio. Molti programmi d'installazione cercano l'esatto nome dell'unità, e senza di ciò non funzionerebbero.

Codice 2.6: Esempio d'uso dell'opzione volume

volume=My Favorite CD

create mask=

Samba fà uso dell'opzione create mask per settare correttamente i permessi sui file nuovi. Con l'opzione create mask si definirnno i permessi da dare per ogni file. Il numero, in base ottale, fornito verrà combinato con i permessi desiderati usando un and binario. Questo causa il fatto che ogni permesso non elencato nella maschera viene eliminato dall'elenco dei permessi di ogni file creato.

Codice 2.7: Esempio d'uso dell'opzione create mask

create mask= 0755

directory mask=

L'opzione directory mask= funziona esattamente come l'opzione create mask=. Permette di specificare con un numero in base ottale i permessi da assegnare ad ogni directory.

La maggior parte delle opzioni di smb.conf

In questa sezione abbiamo appena visto le opzioni da usare nel file smb.conf in modo tale da avere un utile sistema di condivisione sicuro. Samba permette di usare molte altre opzioni che potreste trovare utili. Per saperne di più leggete la pagina prinipale di smb.conf, dove le troverete elencate e spiegate in dettaglio. (Vedete le Risorse a proposito.)

3.  Stampare da Samba

La capacità di Samba di condividere le stampanti risulta utile e funziona bene. Per rinfrescarvi la memoria, Samba permette di condividere stamapanti basate su lpd cosicchè i client che usano Windows possono collegarsi e stampare. Una delle cose più belle di ciò è che tutto il codice specifico per la stampante viene generato dai sistemi Windows. Questo significa che il vostro sistema Unix non necessita di uno specifico supporto per specifiche stampanti. Fino a quando la vostra macchina Unix riuscirà a passare dati grezzi alla stampante, il tutto funzionerà e pure bene! Questo vi permette di condividere e usare stampanti che su un sistema Unix puro non funzionerebbero, come la mia NEC SuperScript 870, basata sull'Adobe PrintGear.

Come funziona la stampa con Samba

Per poter stampare vi serve prima di tutto lpd installato, configurato e funzionante. Anche se la configurazione di lpd non rientra nell'ambito di questa guida, non è molto difficile da configurare. Potete trovare un valido supporto nelle FAQ di stampa su tldp.org. (Vedere Risorse.) Dovrete configurare le vostre stampanti in modo tale che gli arrivino dati "raw" di default, cosicchè ogni dato inviato con il comando lpr verrà copiato così com'è senza filtraggi. È facile testare che lpd ssia configurato in "raw" mode. Su un client Windows configurate una stampante, già installata con i suoi driver, in modo tale che stampi su FILE:. Stampate una pagina di prova e salvatela su file. Poi copiatela sulla vostra macchina Unix e stampatelo usando il comando lpr. Se il file sarà stampato correttamente, avrete correttamente configurato Samba.

Sezione globals delle opzioni per stampare con Samba

Affinchè un sistema Linux stampi correttamente attraverso Samba, dovrete aggiungere i seguenti parametri alla vostra sezione [global]:

Codice 3.1: Modificare smb.conf per permettere la stampa

printcap name=/etc/printcap
printing=bsd

Se il vostro printcap ha un percorso diverso, modificate il valore dell'opzione printcap name= in modo tale da rispecchiare la configurazione del vostro sistema. Se usate un sistema di stampa diverso dallo standard di BSD, lpd, consultate la pagina principale di smb.conf a proposito dell'opzione rinting= e controllate se Samba può funzionare con il vostro sistema di stampa.

Ora configureremo la conivisione della stampante. Queste sono le opzioni che ho inserito nel mio smb.conf per lavorare con la mia stampante. Lo userò come esempio:

Codice 3.2: Esempio per condividere una stampante

[nec]
#my NEC SuperScript 870
path=/var/spool/smb
print command=/usr/bin/lpr %s
lprm command=/usr/bin/lprm -P%p %j
printer=lp
public=yes
printable=yes

È molto importante capire l'opzione path per prima cosa. Quando Samba accetta un comando di stampa da Windows, gli serve sapere dove potere salvare il file temporaneo per poi poter stampare usando lpr. La directory a cui fà riferimento l'opzine path= dovrebbe avere i permessi settati a 1777 cosìcchè nessuno possa scrivere su questa directory. I comandi print command= e lprm= di solito non sono indispensabili. Inseriteli se volete specificare l'esatto percorso per i comandi di stampa, oppure se volete passare una qualche opzione ad lpr. Usate le macro sopra come esempio. %s specifica il nome del file temporaneo, %p specifica il nome della stampante, e %j specifica il numero dell'operazione.

L'opzione printer=, come avrete già intuito, indica a Samba su quale stampante stampare. Assicuratevi che questa stampante sia configurata in raw mode. L'opzione public=yes permette anche agli utenti senza password di usare questa stampante condivisia. Eliminate questa opzione se volete aumentare il livello di sicurezza del vostro sistema (probabilmente preferirete sostituire questa opzione con un valido users= in modo tale da rendere il sistema effettivamente più sicuro e funzionale). L'opzione printable=yes permette sia di indicare a Samba che questa condivisione in effetti è una stampante, sia che questa stampante funziona correttamente e può accettare comandi di stampa.

Dopo avere riavviato Samba, dovreste essere in grado di vedere la stampante da Windows. A questo punto dovreste essere in grado di installare questa stampante su Windows e stampare una pagina di prova tramite la vostra nuova risorsa condivisa. (Windows vi darà un messaggio di avviso durante l'installazione, in cui vi avverte che state installando un driver per la stampante NULL. Non preoccupatevi. Selezionate semplicemente il driver corretto per la vostra stampante dalla lista.) Se per qualche strana ragione la stampa non avviene, controllate il log /var/log/log.smb per eventuali messaggi di errore. Vi devo pure dsegnalare che nel smb.conf ci sono tante altre opzioni di configurazione per la quanto concerne la configurazione di stampanti condivise. Ho appena enunciato quelle più popolari. Siate sicuri di aver letto la pagina principale del smb.conf per avere una certa familiarità con le altre opzioni.

4.  Conclusione

In questo articolo abbiamo spiegato le funzionalità principali di Samba, incluse la condivisione delle Home directory e delle stampanti. Ho pure cercato di farvi notare alcuni problemi legati alla sicurezza. Non pensate che Samba sia tutto qua. Samba non è solo molto potente, ma è anche altamente configurabile. È stato creato con l'intenzione di dare la possibilità agli amministratori di sistema di decidere quali opzioni usare e come usarle nella loro organizzazione. Anche se la configurazione del smb.conf richiede un po' di studio, i risultati saranno brillanti, visto che si può configurare tutto esattamente come si vuole che il sistema funzioni.

Samba ha altre funzionalità che non abbiamo nemmeno nominato, inclusa la possibilità di diventare parte di (o addirittura di controllare!) un intero dominio NT. Vi invito a scoprire le potenzialità di questo programma molto potente.

Risorse

  • Scaricate Samba dalla pagina web del progetto.
  • frgpasswrd vi permette di settare in maniera sincronizzata le password di Samba con le shadow password dei sistemi Unix.
  • SambaLink/Q è un editor del file smb.conf indipendente dalla versione di Samba.
  • Date un'occhiata alle FAQ per la stampa su tldp.org.
  • Leggete Samba scritto da Ed Weinberg.
  • Using Samba (O'Reilly Publishing; 1999) è una guida completa sull'amministrazione di Samba, che include alcune funzionalità recenti come l'integrazione nei domini NT e il programma di configurazione grafico SWAT.
  • Visitate il sito web di SWAT.
  • Scaricatevi Samba/iX, una suite di programmi che permettono ad un HP e3000, che ha come OS MPE/iX, di fornire servizi usando il sistema SMB della Microsoft.
  • Leggete Samba Unleashed, scritto da Steve Litt, con il contributo di Daniel Robbins.


Stampa

Aggiornato il 8 ottobre 2005

Oggetto: Nei suoi articoli precedenti, Daniel Robbins vi ha guidato nella configurazione di Samba per la prima volta. Ora è tempo di configurare Samba in modo tale che faccia tutto ciò che vogliamo.

Daniel Robbins
Autore

Dario Cavallaro
Traduttore

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.