Capitolo 3
Creazione di un print
server con Samba
Un print server è un elemento preposto ad accogliere
le richieste di stampa inoltrate dai client presenti in
rete e di indirizzarle a una o più stampanti fisicamente collegate al sistema. Il print server permette
in sostanza di condividere in LAN una stampante
che originariamente è nata come unità locale da
collegarsi a un singolo computer tramite la porta
USB o parallela.
Si tratta di una funzionalità utile e molto apprezzata
dalle aziende, soprattutto quelle più piccole, dal
momento che le stampanti dotate di porte di rete
Ethernet hanno costi più alti. Fortunatamente è
molto semplice ed economico realizzare un print
server attraverso Linux e risolvere le necessità di
condivisione. Nelle prossime pagine si vedrà come
mettere in pratica questa soluzione.
Il prerequisito è la disponibilità di un sistema Linux
dotato di Samba e configurato in modalità workgroup
o dominio. A tal proposito si daranno per messi in
atto i concetti e le tecniche di cui si sono occupati i
Capitoli 1 e 2. Le configurazioni presentate in quei
capitoli saranno arricchite con i blocchi e le direttive
necessarie per la gestione della stampa.
C’è però un concetto da tenere bene in considerazione: Samba è preposto unicamente alla gestione della
condivisione della stampante e della relativa coda
di stampa in rete. Il pacchetto non ha la capacità di
interagire direttamente con la stampante o di eseguire
alcun tipo di elaborazione sui dati. Queste operazioni sono invece svolte da un componente software
denominato “sistema di stampa”. Samba si appoggia
completamente a questo servizio, inoltrandogli il
flusso di dati ricevuti dai client presenti in rete.
LinuxServer.indb 37
Sommario
•
La stampa su Unix
•
Configurazione
della stampante
con CUPS
•
Impostazione guidata
di una stampante USB
•
Configurare una
stampante parallela
•
Configurazione
della stampante
in SAMBA
•
Checklist
29-09-2010 12:30:43
38 Capitolo 3
Il sistema di stampa catturerà i dati e provvederà alla comunicazione con la stampante
per realizzare la stampa fisica dei lavori.
Il sistema di stampa è un aspetto cruciale e prima di eseguire qualunque configurazione su Samba è necessario dare uno sguardo a questo elemento.
La stampa su Unix
La stampa è una delle aree in cui Linux è stato storicamente considerato debole. Fino
a qualche tempo fa si aveva infatti un supporto limitato, riservato a stampanti a modo
testo o a costose unità dotate di una scheda interprete per il PostScript. Non si poteva
in questo scenario pensare di recarsi in un centro commerciale e comprare una stampante scegliendola, come si fa abitualmente, in base alle proprie esigenze di velocità,
risoluzione, qualità e costo. Nella maggior parte dei casi questa stampante non avrebbe
funzionato su Linux.
Per questo motivo la stampa di lavori complessi su Linux era qualcosa di riservato alle
organizzazioni più facoltose, in grado di permettersi stampanti laser di buon livello.
Ora la situazione è ben diversa, grazie a un sistema di stampa Open Source denominato
CUPS (Common UNIX Printing System), disponibile all’indirizzo www.cups.org (Figura
3.1). Si tratta di un progetto un tempo indipendente, diventato nel 2007 proprietà di
Apple. L’acquisizione non ha alterato la diffusione e la disponibilità di CUPS e non si
sono verificati gli scenari di chiusura che molti avevano prospettato.
Figura 3.1 Sito ufficiale di CUPS.
LinuxServer.indb 38
29-09-2010 12:30:44
Creazione di un print server con Samba 39
CUPS fornisce ai costruttori di hardware e agli sviluppatori un supporto completo per
la stampa. Qualunque costruttore può in questo modo creare driver Linux per le proprie
stampanti, mentre i programmatori possono agganciarsi a CUPS per trasportare su carta
i documenti elaborati sugli applicativi. Linux pareggia così la distanza con Windows,
sistema operativo storicamente dotato di un sistema di stampa di buona qualità e ben
documentato.
CUPS non è l’unico sistema di stampa disponibile per Linux, ma è quello che ha certamente maggiore successo e diffusione. Gran parte delle distribuzioni integra infatti
questo meccanismo in maniera nativa.
Il successo è dato in buona misura dalla scelta di aderire al protocollo IPP, uno standard
promosso da IEEE (Institute of Electrical and Electronics Engineers) per la stampa aperta in
ambienti di rete.
Samba supporta pienamente il sistema di stampa CUPS e nelle prossime pagine si vedrà
come usufruirne.
Configurazione della stampante con CUPS
Per cominciare occorre verificare che il sistema CUPS sia presente sul sistema Linux.
Per farlo si può utilizzare il sistema di gestione dei pacchetti e verificare la presenza del
pacchetto. Su un sistema basato su Red Hat, come per esempio CentOS o Fedora Core,
si può usare la sintassi seguente:
rpm -q cups
Su Ubuntu si può invece usare questa sintassi:
dpkg -l cups
Se il pacchetto è disponibile, dovrebbe comparire una riga con un messaggio di conferma. Nel caso CUPS non sia presente si deve procedere alla sua installazione attraverso
i meccanismi messi a disposizione dalla propria distribuzione. Si tratta comunque di
una situazione poco comune nelle distribuzioni oggi disponibili: tutte le installazioni di
default, anche quelle “light”, includono CUPS nell’elenco dei pacchetti base.
Verificata la presenza del sistema di stampa si può procedere alla sua configurazione. Si
prenderà come esempio il caso di un piccolo ufficio con alcuni impiegati che hanno
tutti bisogno di stampare. I volumi di stampa in questo ufficio sono modesti e non sussiste l’esigenza di fornire una stampante a ogni utente. Si punterà piuttosto al risparmio
condividendo una piccola unità.
Per cominciare si deve lanciare il demone di CUPS:
/etc/init.d/cups start
La configurazione prosegue ora attraverso un pannello web per l’impostazione guidata della stampante. Nel browser del server Linux si deve digitare l’indirizzo web
http://127.0.0.1:631. CUPS risponderà con il pannello principale di gestione e configurazione del sistema (Figura 3.2).
LinuxServer.indb 39
29-09-2010 12:30:44
40 Capitolo 3
Figura 3.2 Pannello web per la configurazione di CUPS.
Su alcune distribuzioni, per motivi di sicurezza è possibile lanciare il pannello di configurazione web solo dal server locale. Se si desidera accedere anche dalla LAN, si deve
editare il file di configurazione principale /etc/cups/cupsd.conf, cercare la direttiva Listen
e operare alcune modifiche.
La direttiva indica a CUPS su quali schede di rete restare in ascolto e su quali porte.
L’esempio seguente, default in molte distribuzioni, permette l’accesso al solo traffico
proveniente dall’interfaccia di loopback locale, quindi solo dal server stesso:
Listen 127.0.0.1:631
Se la scheda eth0 è configurata con l’indirizzo 192.168.100.20, si può permettere l’accesso
a tutta la sottorete IP relativa indicando questa direttiva:
Listen 192.168.100.20:631
Il comando segnala a CUPS di ascoltare le richieste sulla scheda di rete agganciata all’IP
192.168.100.20, sulla porta 631.
Non è però sufficiente. Si deve anche indicare quali indirizzi della LAN sono abilitati
all’accesso. Per farlo bisogna cercare la direttiva <location /> e abilitare per esempio la
propria sottorete IP, come in questo esempio:
<Location />
Order allow, deny
Allow 192.168.0.0/24
</Location>
LinuxServer.indb 40
29-09-2010 12:30:44
Creazione di un print server con Samba 41
È stata aggiunta la riga Allow 192.168.0.0/24 per abilitare l’accesso a tutta la sottorete
192.168.0.0. Si dovrà ripetere l’abilitazione anche per le sezioni /admin e /admin/conf.
Ora qualunque computer della LAN può puntare con un browser l’IP del sistema Linux con CUPS e accedere alla porta 631. Si vedrà così in apertura la pagina mostrata in
Figura 3.2.
Impostazione guidata di una stampante USB
La configurazione della stampante con il pannello web di CUPS è una procedura rapida.
Inizialmente non dovrebbe essere presente alcuna configurazione. Bisogna quindi scegliere
Aggiungi stampante (oppure Add Printer se si dispone di una versione inglese del sistema
di stampa). Comparirà un pannello specifico per la configurazione.
Nella riga Name si deve inserire il nome della coda di stampa. Deve essere una stringa
corta e senza spazi, cancelletti o barre (/), per esempio Canon. In Location e in Description
vanno inseriti testi liberi per indicare il luogo in cui si trova l’unità (per esempio Ufficio
tecnico) e la descrizione estesa dell’unità (per esempio Canon Pixma iP6000D) (Figura 3.3).
Inserite queste informazioni si fa clic su Continua (oppure Continue se si dispone di una
versione inglese del sistema di stampa).
Nella sezione seguente si deve indicare il device di sistema che rappresenta la stampante.
Nel caso di connessione USB dovrebbe comparire una riga che identifica la stampante.
Se si tratta di una stampante che usa un altro tipo di connessione, per esempio la porta
Figura 3.3 Aggiunta di una nuova stampante nel sistema CUPS.
LinuxServer.indb 41
29-09-2010 12:30:45
42 Capitolo 3
Figura 3.4 La stampante USB Canon si aggancia attraverso l’apposito device di sistema.
parallela, si deve indicare la voce corretta, per esempio LPT #1. In questo esempio viene
utilizzata una stampante Canon connessa tramite una porta USB (Figura 3.4).
Il passo seguente richiede il modello della stampante. Bisogna scorrere la lista, selezionarlo
e confermare la scelta. Difficilmente però la lista comprenderà tutti i modelli commercializzati dal produttore. In tal caso bisogna aggiungere nel sistema il driver specifico, se
fornito dal produttore, oppure selezionare un modello compatibile. Le stampanti sono
infatti realizzate per famiglie che condividono la stessa logica di stampa. Basta individuare
il modello compatibile corretto tramite il sito del produttore o consultando i gruppi di
discussione Linux.
La stampante Canon Pixma iP6000D non è presente nell’elenco predefinito. L’unità è però
compatibile con il driver per la BJC7100, a patto che si imposti in seguito la risoluzione
a 1200x600 DPI. Si seleziona quindi la BJC7100 in questo passaggio (Figura 3.5) e si
conferma la scelta. Potrebbe essere richiesto di indicare le credenziali di amministratore
del sistema Linux. La coda sarà creata solo a seguito del corretto inserimento di queste
informazioni.
Altre stampanti potrebbero avere il driver già incluso in CUPS oppure avere driver
scaricabili dal sito del produttore.
La coda creata potrà essere usata da Samba, ma anche dagli applicativi presenti sul server
Linux stesso.
LinuxServer.indb 42
29-09-2010 12:30:45
Creazione di un print server con Samba 43
Figura 3.5 Selezione del modello di stampante.
Configurare una stampante parallela
Se si utilizza una vecchia stampante parallela, si deve percorrere la stessa procedura di
configurazione esaminata in precedenza. Dopo aver indicato il nome della stampante,
l’ubicazione e il commento, si deve specificare, al secondo passaggio, l’intenzione di usare
il device parallelo (Figura 3.6) e poi confermare la scelta.
Al passaggio seguente viene richiesta la marca della stampante. Si può anche evitare di
selezionare il nome del produttore, ma scorrere l’elenco alla ricerca della modalità Raw
(Figura 3.7). In questo modo si chiede al sistema di stampa di non compiere alcuna
forma di elaborazione sul processo di stampa e di inoltrare tutto il flusso direttamente
alla stampante. Saranno i driver presenti sulle singole macchine Windows a realizzare
la conversione del lavoro in un flusso di dati compatibile con la stampante utilizzata. Si
conferma la scelta facendo clic sul pulsante di avanzamento in fondo.
Nel pannello seguente si deve scegliere il modello di stampante. Avendo scelto Raw si
avrà un unico modello, ancora una volta di tipo Raw. Basta semplicemente confermare
la scelta e fare clic su Aggiungi stampante (oppure Add Printer se si usa una versione inglese
del pacchetto).
Ora la stampante di tipo Raw è presente nel sistema ed è pronta per essere utilizzata da
Samba. Se c’è bisogno di stampare da applicazioni che girano sulla macchina Linux locale
è necessario configurare una seconda coda di stampa, ma questa volta nella sezione Marca
è necessario specificare il produttore della stampante e in Modello il modello specifico
o uno compatibile.
LinuxServer.indb 43
29-09-2010 12:30:46
44 Capitolo 3
Figura 3.6 Selezione del device LPT per una stampante parallela.
Figura 3.7 La modalità Raw è consigliabile per le stampanti laser collegate
tramite la porta parallela.
LinuxServer.indb 44
29-09-2010 12:30:46
Creazione di un print server con Samba 45
Ritoccare la configurazione di CUPS
Completate le configurazioni guidate è importante eseguire alcune verifiche manuali sui
file di configurazione, per essere sicuri che tutto sia impostato correttamente.
Bisogna andare in /etc/cups e aprire il file mime.types. In fondo c’è un parametro denominato application/octet-stream: bisogna assicurarsi che non sia preceduto dal carattere
# (commento). Questo impedirebbe la stampa in formato raw.
Occorre poi aprire il file mime.convs e verificare nuovamente che non ci sia il commento
per la riga in che inizia con application/octet-stream.
Se sono state eseguite delle modifiche bisogna riavviare il sistema CUPS:
/etc/init.d/cups restart
Le impostazioni appena implementate permettono ai job in formato raw di essere gestiti
correttamente da CUPS.
Configurazione della stampante in SAMBA
Ora è il momento di configurare Samba. Non si deve realizzare una nuova configurazione, ma bisogna piuttosto continuare da un’impostazione di workgroup o di dominio
già funzionante. Nell’eventualità che questa operazione non sia stata eseguita, si devono
prima di tutto seguire le indicazioni presenti nei Capitoli 1 o 2.
Il file di configurazione di Samba per il dominio o il workgroup deve essere arricchito
con alcuni parametri che indicano l’utilizzo del sistema CUPS per la stampa. Questo
dettaglio va indicato nella sezione global tramite due direttive:
printing = CUPS
printcap = CUPS
Ora bisogna creare una sezione denominata printers e specificare alcuni aspetti relativi
alla stampa:
Listato 3.1 [printers]
comment = stampanti sul server
path = /var/spool/samba
printable = YES
use client driver = YES
Il nome della sezione, ovvero printers, è obbligatorio e indica a Samba che si stanno
specificando informazioni relative alle stampanti da condividere.
La riga comment contiene un’indicazione a testo libero. La direttiva path si riferisce al
percorso sul file system del server Linux dove verrà eseguito lo spooling dei job di
stampa. I dati in arrivo dai client e destinati alla stampa saranno salvati in questo punto
e poi inoltrati alla stampante. L’operazione non è però necessariamente diretta. CUPS
utilizza di default una propria area di spooling, generalmente /var/spool/cups. Ogni job
LinuxServer.indb 45
29-09-2010 12:30:47
46 Capitolo 3
di stampa potrebbe quindi transitare in due directory di spooling prima di giungere alla
stampante.
La direttiva printable = YES permette ai client di scrivere sullo spooler.
L’ultima direttiva, use client driver = YES, serve per informare i client Windows collegati
al server Samba che dovranno usare i driver installati localmente per eseguire la stampa.
Configurando in maniera avanzata CUPS è possibile installare i driver di stampa sul server
Linux e fare in modo che questi siano prelevati automaticamente dal server. In tal caso
la direttiva sarà use client driver = NO. Questa funzionalità può essere molto utile quando
si hanno molti client che accedono alle stampanti condivise. Attraverso un’opportuna
configurazione sul server si può evitare di configurare ogni singolo client. Per maggiori
dettagli su come configurare CUPS e Samba per abilitare questa funzionalità si consulti
la guida “The Official Samba 3.5.x HOWTO and Reference Guide”, sezione CUPS,
disponibile online all’indirizzo http://samba.org/samba/docs/man/Samba-HOWTO-Collection/
CUPS-printing.html.
A questo punto si può salvare il file di configurazione di Samba e riavviare il servizio.
Samba caricherà automaticamente le stampanti precedentemente configurate e le farà
comparire in Risorse di rete (Figura 3.8).
Bisogna tenere ben presente che se si eseguono modifiche alle configurazioni delle
stampanti tramite il pannello di amministrazione di CUPS bisogna riavviare il servizio
Samba per usufruire delle nuove stampanti.
Figura 3.8 Stampanti configurate con CUPS e visualizzate in Risorse di rete.
Installazione dei driver sui client Windows
Il lavoro sul versante server è concluso. Non resta che caricare i driver di stampa sui
client Windows.
LinuxServer.indb 46
29-09-2010 12:30:47
Creazione di un print server con Samba 47
Si deve andare in Pannello di controllo, selezionare l’icona Stampanti e fax e fare clic su
Aggiungi stampante.
Al primo passaggio bisogna specificare che si sta installando una stampante di rete (Figura 3.9).
Figura 3.9 Al primo passaggio si deve indicare che la stampante si trova in rete.
Ora occorre selezionare l’opzione Connetti alla stampante (Figura 3.10) e poi fare clic su
Avanti.
Comparirà l’elenco dei sistemi presenti in rete. Si deve scegliere il print server Samba, in questo caso server1, selezionare la stampante impostata e poi fare clic su Avanti
(Figura 3.11).
A questo punto occorre selezionare il driver dall’elenco presente in Windows (Figura
3.12) oppure indicare il percorso del driver scaricato dal sito del produttore.
Per concludere la fase di installazione della stampante, bisogna specificare se l’unità è
predefinita o meno. Eseguita la scelta si fa clic su Avanti.
Ora si può cominciare a stampare sul server di stampa. Da un punto di vista pratico non
sussiste alcuna differenza tra una stampante locale e la stampante di rete appena realizzata.
Non bisogna quindi cambiare alcun aspetto del proprio modo di lavorare.
Di seguito è riportata la configurazione completa di Samba che è stata realizzata in questo
capitolo usando un modello di rete a dominio.
Listato 3.2 #Configurazione della sezione di stampa per un dominio
[global]
workgroup = INCIPIT
LinuxServer.indb 47
29-09-2010 12:30:47
48 Capitolo 3
Figura 3.10 Al passaggio seguente si deve indicare che si desidera
cercare la stampante in rete.
Figura 3.11 Selezione del print server e dell’unità di stampa.
netbios name = SERVER1
server string = PDC Linux
security = USER
smb passwd file = /etc/samba/smbpasswd
encrypt passwords = YES
LinuxServer.indb 48
29-09-2010 12:30:47
Creazione di un print server con Samba 49
Figura 3.12 Scelta del driver di stampa in Windows.
log file = /var/log/samba/%m.log
max log size = 100
log level = 1
# impostazione del server come domain master browser
os level = 255
preferred master = YES
local master = YES
domain master = YES
# abilitazione dei logon W95/W98
domain logons = YES
# attivazione supporto WINS
wins support = YES
# impostazione homedir
logon home = \\server1\homedir
logon drive = U:
# impostazione profili mobili
logon path = \\server1\profili\%u
# impostazione script di logon
logon script = logon.bat
#logon script = %u.bat
# impostazione stampa
printing = CUPS
printcap = CUPS
LinuxServer.indb 49
29-09-2010 12:30:47
50 Capitolo 3
[netlogon]
path = /usr/local/samba/netlogon
read only = YES
write list = root
[profili]
path = /usr/local/samba/profili
read only = NO
writable = YES
browsable = NO
create mask = 0600
directory mask = 0700
[homedir]
path = /home/%u
read only = NO
writable = YES
browsable = NO
create mask = 0600
directory mask = 0700
hide dot files = YES
[comune]
comment = cartella comune
path =/home/comune
public = YES
writable = YES
[gestionale]
comment = area supporto software gestionale
path =/home/gestionale
public = YES
writable = YES
[software]
comment = file di utilità
path =/home/software
public = YES
writable = NO
[printers]
comment = stampanti sul server
path = /var/spool/samba
printable = YES
use client driver = YES
Checklist
1. Utilizzare una configurazione Samba precedentemente creata per operare su un
workgroup oppure su un dominio.
2. Verificare che il pacchetto CUPS sia installato sul sistema.
3. Controllare gli indirizzi IP abilitati alla configurazione di CUPS via browser.
4. Collegarsi al pannello web di CUPS, specificando l’indirizzo locale e la porta 631.
LinuxServer.indb 50
29-09-2010 12:30:47
Creazione di un print server con Samba 51
5. Configurare su CUPS una nuova stampante, facendo attenzione a impostare la
modalità di elaborazione RAW.
6. Aprire il file /etc/cups/mime.types ed eliminare, se presente, il simbolo di commento
dalla riga che inizia con #application/octet in fondo al file.
7. Aprire il file /etc/cups/mime.convs ed eliminare, se presente, il simbolo di commento
dalla riga che inizia con #application/octet.
8. Aprire il file di configurazione di Samba e nella sezione global, inserire le direttive
printing = CUPS e printcap = CUPS.
9. Creare una sezione printers nel file di configurazione di Samba.
10. Inserire la direttiva comment.
11. Indicare nella direttiva path il percorso della directory di spooling. Questa deve
ovviamente essere una directory esistente e accessibile.
12. Inserire la direttiva printable = YES per poter effettuare le operazioni di spooling.
13. Inserire la direttiva use client driver = YES per usare i driver di stampa locali sui
sistemi Windows NT/2000/XP/Vista/7.
14. Verificare la correttezza della configurazione di Samba utilizzando il comando
testparm.
15. Riavviare i demoni di Samba.
16. Configurare i client.
LinuxServer.indb 51
29-09-2010 12:30:48
Scarica

Capitolo 3