Guida a Samba3/CUPS in Gentoo
1.
Introduzione a questa Guida
Scopo
Questa guida è pensata per guidare l'utente a passare da una rete con macchine
client che "parlano" lingue diverse, ad una rete con macchine che parlano la
stessa lingua. L'obiettivo finale è quello di ottenere un ambiente di felice
coesistenza fra architetture e tecnologie differenti, frequenti in ambito
produttivo.
Le direttive di questa guida forniranno un ottimo passo avanti in una pacifica
coesistenza fra Windows e, virtualmente, tutte le variazioni di *nix.
Questa guida originalmente è iniziata come una raccolta di Domande Frequenti
(FAQ). Deve essere inteso come mezzo per esplorare le funzionalità e le
potenzialità dei sistemi Gentoo, di portage e della flessibilità delle flag USE.
Come per altri progetti, è semplice e veloce trovare ciò che manca nel regno
Gentoo: non c'era nessuna guida riguardante Samba. Gli utenti Gentoo hanno più
richieste degli altri: alte prestazioni, flessibilità e personalizzazione.
Questo non implica che questo documento non sia adatto ad altre distribuzioni,
solo che è pensato per funzionare con versioni di Samba altamente
personalizzabili.
Verrà descritto come condividere file e stampanti tra macchine Windows e *nix.
Mostrerà anche come montare e manipolare le risorse condivise.
Ci sono diverse discussioni che verranno menzionate, ma sono fuori dalla portata
di questa guida. Verranno comunque notificate quando necessario.
Questo documento è basato sull'unione di un'eccellente guida scritta nel Forum Gentoo da Andreas "daff" Ntaflos e
le conoscenze di Joshua Preston. Il collegamento alla discussione (inglese) è
riportato qui sotto:
Prima di usare questa guida
Ci sono diverse altre guide per configurare CUPS e/o Samba, è bene leggere anche
alcune di quelle in modo da colmare le lacune lasciate (intenzionalmente) da
questa. Uno di questi documenti è veramente utile e ben scritto Guida alla Stampa in Gentoo, contiene
configurazioni di stampanti particolari che non sono discusse qui.
Breve Descrizione
La seguente lista contiene gli argomenti trattati in questa guida:
- Sul server Samba:
- Installazione e configurazione di Samba
- Installazione e configurazione di CUPS
- Aggiungere la stampante a CUPS
- Aggiungere i driver PS per i client Windows
- Sui client Unix:
- Installazione e configurazione di CUPS
- Configurazione di una stampante predefinita
- Mount di una condivisione Samba con Windows
- Sul client Windows:
- Configurazione della stampante
- Accesso alle condivisioni Samba
Requisiti
Ciò che segue è il necessario per seguire la guida:
- net-fs/samba
- net-print/cups (compilato con la flag USE ppds)
- net-print/hplip (per stampanti HP)
- Un Kernel a scelta (2.6)
- Una stampante (PS o non-PS)
- Una rete locale funzionante composta da più di una macchina.
Il pacchetto principale è net-fs/samba, comunque, sarà necessario un kernel con
il supporto a CIFS abilitato, in modo da poter montare una condivisione Samba o
Windows da un altro computer. Verrà fatto l'emerge di CUPS se non è già
installato.
2.
Alcune note prima di installare Samba
Le flag USE
Prima di emergere qualsiasi cosa, è bene controllare alcune delle varie flag USE
disponibili per Samba.
Codice 2.1: Samba usa le seguenti variabili USE: |
kerberos acl cups ldap pam readline python winbind
|
Le flag USE descritte qui sotto definiscono cosa includere o escludere
dall'emerge di Samba in base alla tipologia di rete e alle specifiche richieste
dal server.
| Flag USE |
Descrizione |
| kerberos |
Include il supporto a Kerberos. Il server avrà bisogno di questo se si ha
intenzione di far parte di un dominio esistente o di Active Directory. Per
maggiori informazioni a riguardo, ci sono le note in fondo al documento.
|
| acl |
Abilita l' Access Control Lists, il supporto ACL in Samba, usa un ext2/ext3
patchato o XFS di SGI in modo da funzionare correttamente e di estendere
accessi più dettagliati a file e directory, molto più che il tipico schema
*nix GID/UID.
|
| cups |
Questo abilita il supporto al Common Unix Printing System. Questo provvede
un'interfaccia che consente alle stampanti CUPS locali di essere condivise
agli altri sistemi nella rete.
|
| ldap |
Abilita il Lightweight Directory Access Protocol (LDAP). Se Samba si deve
aspettare di lavorare con Active Directory, questa flag deve essere usata.
Questo deve essere usato nel caso che Samba necessiti di fare o fornire il
login ad un Server di Dominio o a un Server Active Directory. La flag
kerberos è necessaria per far funzionare propriamente questa opzione.
|
| pam |
Include il supporto per Pluggable Authentication Modules (PAM). Questo
provvede alla possibilità di autenticare utenti sul Server Samba che è
richiesto se gli utenti devono fare il login sul server. La flag kerberos
è raccomandata per quest'opzione.
|
| readline |
Collega Samba a libreadline. È altamente raccomandata e NON deve essere
disattivata.
|
| python |
Python bindings API, fornisce un API che permette, a chi programma in
Python, di interfacciarsi con Samba.
|
| winbind |
Winbind permette una procedura unificata di logon all'interno di un
ambiente Samba. Usa un'implementazione Unix delle chiamate RPC Windows, PAM
e lo scambio del servizio dei nomi ("name services switch", solitamente
abbreviato in "nss", ndT) (supportato dalla libreria c) per permettere ad
utenti di un dominio Windows NT di apparire e lavorare come utenti Unix su
un sistema Unix.
|
Inoltre ecco un po' di cose che è meglio sapere riguardo le flag USE e le
diverse funzioni che Samba include:
-
ACL su ext2/3 è implementato attraverso gli Extended Attributes (EA). Le
opzioni del kernel EA e ACL per ext2 e/o ext3 devono essere abilitate
(dipende dal file system che si sta usando, possono essere selezionate
entrambe).
-
Dato che le funzioni di Active Directory, ACL e PDC sono al di là
dell'intenzione di questa guida, a questi link si possono trovare delle
ulteriori informazioni a loro riguardo:
3.
Installazione del Software sul Server
Emerge di Samba
Prima di tutto, bisogna controllare che tutti gli hostname della rete siano
risolti correttamente con un appropriato file /etc/hosts. Spesso
cupsaddsmb genera errori se gli hostname non puntano alle macchine
corrette.
Probabilmente ora si può fare una valutazione di ciò che si ha bisogno per usare
Samba o per le proprie esigenze. In questa guida si useranno:
Per ottimizzare le prestazioni, dimensione dei binari e tempi di compilazione,
le flag USE sono specificatamente incluse o escluse.
Prima, aggiungere ppds alle proprie flag USE per assicurarsi che quando
CUPS verrà compilato esso abbia l'appropriato supporto a foomatic:
Codice 3.1: Aggiungere ppds |
# echo "net-print/cups ppds" >> /etc/portage/package.use
|
A questo punto installare Samba tramite emerge:
Codice 3.2: Emerge di Samba |
# echo "net-fs/samba readline cups pam" >> /etc/portage/package.use
# emerge net-fs/samba
|
Questo installerà sia Samba che CUPS.
Installazione di net-print/hplip
Attenzione, questo serve solo se si ha una stampante HP.
Codice 3.3: Emerge di hplip |
# emerge net-print/hplip
|
4.
Configurazione del Server
Configurazione di Samba
Il file di configurazione principale di Samba è
/etc/samba/smb.conf. È diviso in sezioni indicate da
[nome_sezione]. I commenti cominciano con # o ; . Un esempio di
smb.conf è riportato qui sotto con # commenti e suggerimenti per
essere modificato. Se sono necessari ulteriori dettagli, fare riferimento alle
pagine man per smb.conf, al file d'esempio
smb.conf.example, al sito web di Samba o a uno dei numerosi libri
su Samba.
Codice 4.1: Un Esempio di /etc/samba/smb.conf |
[global]
workgroup =
server string = Samba Server %v
printcap name = cups
printing = cups
load printers = yes
log file = /var/log/samba/log.%m
max log size = 50
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
interfaces = lo eth0
bind interfaces only = yes
hosts allow = 127.0.0.1 192.168.1.0/24
hosts deny = 0.0.0.0/0
security = share
guest ok = yes
[print$]
comment = Printer Drivers
path = /etc/samba/printer
guest ok = yes
browseable = yes
read only = yes
write list = root
[NOME_STAMPANTE]
comment = DESCRIZIONE DELLA STAMPANTE
printable = yes
path = /var/spool/samba
public = yes
guest ok = yes
printer admin = root
[printers]
comment = All Printers
browseable = no
writable = no
printable = yes
public = yes
guest ok = yes
path = /var/spool/samba
printer admin = root
[public]
comment = Public Files
browseable = yes
public = yes
create mode = 0766
guest ok = yes
path = /home/samba/public
|
Avvertenza:
Se si vuole usare un account guest di Samba per fare qualsiasi cosa riguardo la
stampa da client Windows, non bisogna impostare guest only = yes nella
sezione [global]. A volte, quando ci si collega da client Windows, sembra che
gli account Guest causino problemi mentre cupsaddsmb è in funzione. Più
avanti si parla di cupsaddsmb e dei problemi che ci possono essere.
Conviene pertanto usare un account dedicato alla stampa, come printeruser
o printer. Non fa danni e certamente protegge da molti problemi.
|
Ora verranno create le directory richieste per la configurazione minima di Samba
per condividere le stampanti attraverso la rete.
Codice 4.2: Creare le directory |
# mkdir /etc/samba/printer
# mkdir /var/spool/samba
# mkdir /home/samba/public
|
È richiesto almeno un utente Samba per installare i driver delle stampanti e per
permettere agli utenti di connettersi alle stesse. Gli utenti devono esistere
nel file /etc/passwd.
Codice 4.3: Creazione degli Utenti |
# smbpasswd -a root
# smbpasswd -a nome_utente
|
Le password Samba devono essere diverse dalle password in
/etc/passwd
Si renderà necessario poi aggiornare /etc/nsswitch.conf così che i
sistemi Windows possano essere trovati semplicemente usando NetBIOS:
Codice 4.4: Modificare /etc/nsswitch.conf |
# nano -w /etc/nsswitch.conf
hosts: files dns wins
|
Configurazione di CUPS
Questo è un po' più complicato. Il file principale di configurazione di CUPS è
/etc/cups/cupsd.conf. La sua struttura è simile al file di Apache
httpd.conf. Qui di seguito ci sono le direttive che bisogna
cambiare o aggiungere al file originale:
Codice 4.5: /etc/cups/cupsd.conf |
ServerName PrintServer
ServerAdmin root@PrintServer
AccessLog /var/log/cups/access_log
ErrorLog /var/log/cups/error_log
LogLevel debug
MaxClients 100
BrowseAddress @IF(eth0)
<Location />
Order Deny,Allow
Deny From All
Allow From 192.168.1.*
</Location>
<Location /admin>
AuthType Basic
AuthClass System
Allow From 192.168.1.*
Order Deny,Allow
Deny From All
</Location>
|
È bene modificare /etc/cups/mime.convs decommentando alcune linee.
I cambiamenti a mime.convs e a mime.types sono
necessari per fare sì che CUPS stampi dei documenti di Microsoft Office.
Codice 4.6: /etc/cups/mime.convs |
application/octet-stream application/vnd.cups-raw 0
|
Ora si può modificare /etc/cups/mime.types decommentando alcune
linee.
Codice 4.7: /etc/cups/mime.types |
application/octet-stream
|
CUPS deve partire al boot ed essere avviato manualmente subito.
Codice 4.8: Impostare il servizio CUPS: |
# rc-update add cupsd default
# /etc/init.d/cupsd restart
|
Installare una stampante con e per CUPS
Primo, al link LinuxPrinting.Org è
possibile trovare e scaricare il corretto file PPD per la propria stampante e
CUPS. Per fare ciò, bisogna cliccare il collegamento "Printer Listings" sulla
sinistra, selezionare la marca ed il modello della stampante quindi cliccare
"Show". Nella pagina che si aprirà bisogna cliccare sul link "recommended
driver" dopo aver letto le varie note ed informazioni. Infine, nella pagina
successiva basta scaricare il file PPD dopo aver letto le note e l'introduzione.
Bisogna nuovamente selezionare marca e modello della stampante. Può risultare
utile leggere CUPS
quickstart guide per ulteriori informazioni.
Ora, bisogna copiare il file PPD scaricato in
/usr/share/cups/model. Ed ora si può finalmente installare la
stampante. Questo può essere fatto tramite l'interfaccia web di CUPS o via
linea di comando. L'interfaccia web può essere trovata a
http://PrintServer:631 una volta che CUPS è avviato.
Codice 4.9: Installazione della stampante via linea di comando |
# lpadmin -p NOME_STAMPANTE -E -v usb:/dev/ultp0 -m PROPRIO_FILE.ppd
# /etc/init.d/cupsd restart
|
Attenzione ad avere l'argomento -p NOME_STAMPANTE uguale a quello
impostato durante la configurazione di Samba. Attenzione anche a mettere i
corretti usb:/dev/usb/DEVICE o parallel:/dev/DEVICE o qualsiasi
altro device usato per la stampante.
Ora è possibile accedere alla stampante tramite l'interfaccia web e stampare
una pagina di prova.
Installare i driver delle stampanti su Windows
Ora che le stampanti sono funzionanti, è tempo di installare i driver per i
client Windows. Samba 2.2 introduce questa funzionalità. Visualizzando il Print
Server da Risorse di Rete, cliccare con il tasto destro del mouse sulla
stampante condivisa e selezionare "connetti". A questo punto verranno scaricati
automaticamente i driver sui client connessi evitando la seccatura di
installarli manualmente.
Ci sono due set di driver per le stampanti PS. Il primo, Driver Adobe PS, può
essere scaricato da: Adobe (PostScript
Printer Driver). Il secondo set contiene i driver CUPS PS, che si possono
ottenere installando tramite emerge net-print/cups-windows. Notare che
questo pacchetto potrebbe ancora essere marcato come ~arch (instabile),
pertanto bisognerà aggiungerlo a /etc/portage/package.keywords. Non
ci dovrebbero essere differenze sostanziali di funzionamento tra i due, ma i
driver Adobe PS necessitano di essere estratti su un sistema Windows dato che,
di fatto, sono in un file binario leggibile da Windows. Infine la procedura di
ricerca e copia dei file corretti è un po' più seccante. I driver CUPS
supportano alcune funzionalità in più rispetto agli Adobe.
Questa guida usa i driver CUPS per Windows. Installarli nel seguente modo:
Codice 4.10: Installare i driver |
# emerge -av cups-windows
|
Ora si può usare lo script cupsaddsmb fornito dalla distribuzione di
CUPS. Assicurarsi di leggere la relativa pagina di manuale (man
cupsaddsmb), in quanto spiega quali driver Windows bisogna copiare
nell'appropriata directory di CUPS. Una volta copiati i driver, riavviare CUPS
eseguendo /etc/init.d/cupsd restart. Successivamente, eseguire
cupsaddsmb come mostrato:
Codice 4.11: Eseguire cupsaddsmb |
# cupsaddsmb -H PrintServer -U root -h PrintServer -v NOME_STAMPANTE
# cupsaddsmb -H PrintServer -U root -h PrintServer -a
|
Avvertenza:
L'esecuzione di questo comando spesso genera alcuni problemi. È possibile
richiedere aiuto in
questa discussione.
|
Alcuni errori comuni che possono avvenire:
-
L'hostname dato come parametro per -h e -H
(PrintServer) spesso non risolve correttamente il nome e non
identifica il Print Server per l'interazione fra CUPS e Samba. Se si ha un
errore simile a: Warning: No PPD file for printer "NOME_STAMPANTE" -
skipping!, la prima cosa che si può provare è sostituire
PrintServer con localhost e riprovare.
-
Il comando fallisce con un NT_STATUS_UNSUCCESSFUL. Questo messaggio
d'errore è abbastanza comune e può creare diversi problemi. Un tentativo che
si può fare è impostare temporaneamente security = user nel proprio
smb.conf. Una volta terminata l'installazione si può
reimpostare a share o a quello che era prima.
Tutto ciò installa il corretto albero delle directory in
/etc/samba/printer. Questo dovrebbe essere
/etc/samba/printer/W32X86/2/. Dovrebbe contenere i 3 file dei
driver e il file PPD rinominato come NOME_STAMPANTE.ppd (il nome con cui si ha
installato la stampante).
Se non ci sono stati errori o altre complicazioni, i driver delle stampanti
sono stati installati.
Terminare la Configurazione
Infine, configurazione delle directory.
Codice 4.12: Ultimi cambiamenti necessari: |
# mkdir /home/samba
# mkdir /home/samba/public
# chmod 755 /home/samba
# chmod 755 /home/samba/public
|
Provare la configurazione di Samba
Per controllare che il file di configurazione sia formattato correttamente e che
tutte le sue opzioni hanno la giusta sintassi, usare il comando testparm.
Codice 4.13: Eseguire testparm |
# /usr/bin/testparm
Load smb config files from /etc/samba/smb.conf
Processing section "[printers]"
Global parameter guest account found in service section!
Processing section "[public]"
Global parameter guest account found in service section!
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
...
...
|
Avviare il servizio Samba
Aggiungere samba al runlevel di default ed eseguirlo immediatamente.
Codice 4.14: Aggiunta di Samba all'avvio e prima esecuzione |
# rc-update add samba default
# /etc/init.d/samba start
|
Controllo dei propri servizi
A questo punto è buona cosa controllare i propri log e controllare le
condivisioni impostate con Samba: smbclient.
Codice 4.15: Controllo delle risorse condivise con Samba |
# smbclient -L localhost
Password:
|
5.
Configurazione dei Client
Configurazione delle stampanti con un client *nix.
Indipendentemente dalle variazioni o dalla distribuzione, l'unica cosa di cui si
ha bisogno è CUPS che va quindi installato.
Codice 5.1: Configurazione di un sistema Gentoo |
# emerge cups
# nano -w /etc/cups/client.conf
ServerName PrintServer
|
Questo dovrebbe bastare. Non serve nient'altro.
Se si ha una sola stampante, quella sarà quella predefinita. Se invece il server
dovrà gestire più stampanti, l'amministratore dovrà definirne una predefinita
sul server. Per impostarne una propria stampante predefinita differente da
quella sul server, bisogna usare il comando lpoptions.
Codice 5.2: Impostare la propria stampante predefinita |
# lpstat -a
HPDeskJet930C accepting requests since Jan 01 00:00
laser accepting requests since Jan 01 00:00
# lpoptions -d HPDeskJet930C
|
Codice 5.3: Printing in *nix |
# lp -d HPDeskJet930C foo.txt
# lp foo.ps
|
Per gestire le stampanti e i loro lavori nella coda di stampa, basta digitare
http://printserver:631 nel browser di un client, e si accederà ad una
comoda interfaccia web. Bisogna cambiare printserver con il nome della
macchina su cui gira il server di stampa, non il nome dato al server cups
se si hanno usati due nomi differenti.
Montare una condivisione Samba o Windows in GNU/Linux
Nota:
Non dimenticare di installare net-fs/mount-cifs o
net-fs/samba sul/sui client che accederanno alle condivisioni.
|
Ora bisogna configurare il kernel per supportare CIFS. Si assume di avere almeno
un kernel compilato per controllare che ci siano tutte le opzioni necessarie.
Per semplicità si imposteranno a "modulo" le varie voci.
Codice 5.4: Supporto nel kernel |
CONFIG_CIFS=m
|
Quindi eseguire l'installazione dei moduli tramite make modules install; infine
inserire il modulo necessario:
Codice 5.5: Caricare il modulo del kernel |
# modprobe cifs
|
Una volta che il modulo è caricato, è possibile montare una risorsa condivisa di
Samba o Windows. Per questo si usa mount come segue:
Codice 5.6: Montare una condivisione Samba o Windows |
# mount -t cifs //PrintServer/public /mnt/public
# mount -t cifs -o username=USERNAME,password=PASSWORD //PrintServer/public /mnt/public
|
Una volta montato vi si potrà accedere come se fosse una risorsa locale.
Configurazione delle stampanti remote su client Windows
NT/2000/XP
È giusto un punta-e-clicca. Visualizzare \\PrintServer da Risorse
di Rete, cliccare con il tasto destro del mouse sulla stampante e selezionare
"connetti". Questo scaricherà automaticamente i driver su Windows ed ora ogni
applicazione (come Word o Acrobat) potrà vedere le stampanti condivise ed
utilizzarle.
6.
Note Finali
Un premuroso congedo
Bene, ora tutto è ultimato con un sistema di stampanti remote e condivise
funzionante per sistemi sia *nix che Windows!
7.
Collegamenti e Risorse
Collegamenti
Ecco alcuni collegamenti che possono essere d'aiuto nelle impostazioni,
configurazioni e nei problemi riguardanti l'installazione:
Risoluzione dei Problemi
Questa
Pagina è presa dal manuale "Printing Support in Samba 3.0" di Kurt
Pfeifle. Contiene molti trucchi e segreti di Samba. Prima di chiedere, è bene
darci un'occhiata, magari la soluzione è proprio lì.
I contenuti di questo documento sono rilasciati sotto la licenza Creative
Commons - Attribution / Share Alike.
|