Gentoo Samba3/CUPS/Clam AV HOWTO
1.Introduzione all'Howto
Scopo
Questo Howto è pensato per guidare l'utente a passare da una rete con
macchine client che "parlano" lingue diverse, a 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 questo Howto forniranno un ottimo passo avanti in una
pacifica coesistenza fra Windows e, virtualmente, tutte le variazioni
di *nix.
Questo Howto originalmente è iniziato come una FAQ. Deve essere inteso
come mezzo per esplorare le funzionalità e le potenzialità dei sistemi
Gentoo, del portage e della flessibilità delle USE flags. Come per altri
progetti, è semplice e veloce trovare ciò che manca nel regno Gentoo:
non c'era nessun Howto rigurdante Samba. Gli utenti Gentoo hanno
più richieste degli altri: alte performance, flessibilitàe personalizzazione.
Questo non implica che questo Howto non sia adatto ad altre distribuzioni,
solo che è pensato per funzionare con versioni di Samba altamente
personalizzabili.
Verrà descritto come condividere files e stampanti tra macchine
Windows e *nix. Mostrerà anche l'uso di VFS (Virtual File System),
una feature di Samba, per incorporare una protezione dai virus automatica.
Infine, verrà descritto come montare e manipolare le risorse condivise.
Ci sono diversi topic che verranno menzionati, ma son fuori dalla
portata di questo Howto. Verranno comunque notificati quando necessario.
Questo documento è basato sull'unione di un'eccellente Howto scritto
nel Forum Gentoo da
Andreas "daff" Ntaflos e le conoscenze di Joshua Preston.
Il link alla discussione(inglese) è riportato qui sotto:
Prima di usare questa guida
Ci sono diverse altre guide per configuarare CUPS e/o Samba, è bene leggere
anche alcune di quelle in modo da colmare le lacune lasciate (intenzionalmente)
da questo Howto. 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 questo Howto:
- Sul server Samba:
- Installazione e configurazione di ClamAV
- Installazione e configurazione di Samba
- Installazione e configurazione di CUPS
- Aggiungerela stampante a CUPS
- Aggiungere i driver PS per i client Windows
- Sui client Unix:
- Installazione e configuazione di CUPS
- Configurazione di una stampante di default
- 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 l'Howto:
- net-fs/samba
- app-antivirus/clamav
- net-print/cups
- net-print/foomatic
- net-print/hpijs (per stampanti HP)
- Un Kernel a scelta (preferibilmente 2.4.24+ or 2.6.x)
- Una stampante (PS o non-PS, possibilmente non troppo recente)
- 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 smbfs 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. Verrà usato anche app-antivirus/clamav, per adattarlo
a lavorare con Samba. Il Gentoo ebuild di samba supporta tutte le tecnologie
di virus scanning quali Sophos, FProt, Fsav, Trend, Icap, Nai, ...
2.Alcune note prima di installare Samba
Le flag USE
Prima di emergere qualsiasi cosa, è bene controllare le varie flag USE
possibili per Samba.
Esempio 1: Samba ha le seguenti flag USE: |
kerberos mysql xml acl cups ldap pam readline python oav libclamav
|
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.
|
| mysql |
Questo permetterà a Samba di usare MySQL per le autenticazioni password.
Immagazzinerà ACL, username, password ed altro in un database anzichè in
un singolo file. Samba necessiterà di autenticazioni password, in modo
da agire come un server di convalidazione password o un Primary Domain
Controller (PDC).
|
| xml |
La flag xml provvederà a un database per le password che permetterà a Samba
di immagazzinare i dettagli degli account in file XML, per la stessa ragione
della flag mysql.
|
| 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. E' altamente raccomandata e NON deve essere
disattivata.
|
| python |
Python bindings API, provvede un API che permette, a chi programma in Python,
di interfacciarsi con Samba.
|
| oav |
Provvede un controllo all'accesso delle condivisioni Samba con FRISK
F-Prot Daemon, Kaspersky AntiVirus, OpenAntiVirus.org ScannerDaemon, Sophos Sweep
(SAVI), Symantec CarrierScan e Trend Micro (VSAPI).
|
| libclamav |
Abilita ClamAV come virus scanner al posto del demone clamd.
|
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 Directoru, ACL e PDC sono al di là dell'intenzione di
questo Howto, 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 questo Howto si useranno:
Per ottimizzare le performance, dimensione dei binari e tempi di compilazione,
le flag USE sono specificatamente incluse o escluse.
Esempio 2: Emerge Samba |
# echo "net-fs/samba oav readline cups pam" >> /etc/portage/package.use
# emerge net-fs/samba
|
Nota:
Le architetture seguenti hanno bisogno di aggiungere ~ alle loro
KEYWORDS: x86, ppc, sparc, hppa, ia64 e alpha.
|
Questo emergerà sia Samba che CUPS (se CUPS non è già installato).
Emerging Clam AV
Dato che la flag USE oav, provvede solo ad un'interfaccia che
consente l'accesso alla scansione virus, bisogna emergere il virus scanner.
In questo Howto viene usato Clam AV.
Esempio 3: Emerge ClamAV |
# emerge app-antivirus/clamav
|
Emerge di foomatic
Esempio 4: Emerge foomatic |
# emerge net-print/foomatic
|
Emerging di net-print/hpijs
Attenzione, questo serve solo se si ha una stampante HP.
Esempio 5: Emerge hpijs |
# emerge net-print/hpijs
|
4.Configurazione del Server
Configurazione di Samba
Il file di configurazione principale di Samba è /etc/samba/smb.conf.
E' 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,
si faccia riferimento alle manpage per smb.conf, al file d'esempio
smb.conf.example, al sito web di Samba o a uno dei numerosi
libri su Samba.
Esempio 6: 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 account = samba
guest ok = yes
vfs object = vscan-clamav
vscan-clamav: config-file = /etc/samba/vscan-clamav.conf
[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
|
Attenzione:
Se si vuole usare un account guest di Samba per fare qualsiasi cosa
riguardo la stampa da client Windows, non bisogna settare 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.
|
Attenzione:
Abilitare ClamAV a controllare i file ad ogni accesso nella sezione
[global], causerà un forte calo delle performance sul Server Samba.
|
Ora verranno create le directory richieste per la configurazione minima
di Samba per condividere le stampanti attraverso la rete.
Esempio 7: Creare le directory |
# mkdir /etc/samba/printer
# mkdir /var/spool/samba
# mkdir /home/samba/public
|
E' 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.
Esempio 8: 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:
Esempio 9: Modificare /etc/nsswitch.conf |
# nano -w /etc/nsswitch.conf
hosts: files dns wins
|
Configurazione di Clam AV
Il file di configurazione specifificato in smb.conf
è /etc/samba/vscan-clamav.conf. Mentre queste opzioni sono
settate come default, il file delle azioni sui file infetti deve essere cambiato.
Esempio 10: /etc/samba/vscan-clamav.conf |
[samba-vscan]
max file size = 0
verbose file logging = no
scan on open = yes
scan on close = yes
deny access on error = yes
deny access on minor error = yes
send warning message = yes
infected file action =
quarantine directory = /tmp
quarantine prefix = vir-
lru file entry lifetime = 5
clamd socket name = /tmp/clamd
oav port = 8127
|
In genere è una buona idea far partire il virus scanner immediatamente.
Bisogna quindi aggiungerlo al runlevel default ed eseguire subito
il servizio clamd. Il servizio ha due processi: freshclam che preleva
le definizioni dei virus da un database aggiornato, mentre clamd è il vero
demone anti-virus. Per prima cosa è bene impostare i percorsi dei file di log.
Esempio 11: Controllare le locazioni dei logfile |
# vim /etc/clamd.conf
# vim /etc/freshclam.conf
# vim /etc/conf.d/clamd
|
Ora si lancia il virus scanner.
Esempio 12: Aggiungere clamd all'avvio ed eseguirlo: |
# rc-update add clamd default
# /etc/init.d/clamd start
|
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:
Esempio 13: /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>
|
E' 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.
Esempio 14: /etc/cups/mime.convs |
application/octet-stream application/vnd.cups-raw 0
|
Ora si può modificare /etc/cups/mime.types decommentando alcune linee.
Esempio 15: /etc/cups/mime.types |
application/octet-stream
|
CUPS deve partire al boot ed essere avviato manualmente subito.
Esempio 16: 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 link "Printer Listings" sulla sinistra,
selezionare la marca ed il modello della stampante quindi cliccare "Show".
Nella pagina che si aprirà bisogna cliccare sul link "reccomended 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.
Esempio 17: Installazione della stampante via linea di comando |
# lpadmin -p NOME_STAMPANTE -E -v usb:/dev/ultp0 -m PROPRIO_FILE.ppd
|
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, scaricabili dalla Homepage di CUPS
selezionando "CUPS Driver for Windows" dal menu a tendina.
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 dovrebbero avere qualche funzionalità in più rispetto agli
Adobe.
Qui verranno usati i driver CUPS per Windows. Il file scaricato
si chiama cups-samba-5.0rc2.tar.gz. Bisogna estrarne i file in
una directory.
Esempio 18: Estrazione dei file e installazione |
# tar -xzf cups-samba-5.0rc2.tar.gz
# cd cups-samba-5.0rc2
# ./cups-samba.install
|
cups-samba.ss è un archivio TAR contente 3 file:
cups5.hlp, cupsdrvr5.dll e
cupsui5.dll. Questi sono i driver.
Attenzione:
Lo script cups-samba.install potrebbe non funzionare per tutti i
sistemi *nix (per esempio FreeBSD) perchè quasi tutto ciò che non è
parte del sistema base è installato da qualche parte con il prefisso
/usr/local/. Questo non dovrebbe essere il caso più
frequente nelle installazioni GNU/Linux.
Comunque, se si ha CUPS installato da qualche parte che non sia
/usr/share/cups/, si può seguire l'esempio qui di seguito.
|
Si suppone che l'installazione di CUPS sia in
/usr/local/share/cups/, e vi si vogliono installare i driver.
E' sufficiente seguire i seguenti passi:
Esempio 19: Installazione manuale dei driver |
# cd /path/you/extracted/the/CUPS-driver/tarball/into
# tar -xf cups-samba.ss
# cd usr/share/cups/drivers
# cp cups* /usr/local/share/cups/drivers
|
Ora si può usare lo script cupsaddsmb fornito dalla distribuzione
di CUPS. La man page di questo script è un'utile lettura.
Esempio 20: Eseguire cupsaddsmb |
# cupsaddsmb -H PrintServer -U root -h PrintServer -v NOME_STAMPANTE
# cupsaddsmb -H PrintServer -U root -h PrintServer -a
|
Attenzione:
L'esecuzione di questo comando spesso genera alcuni problemi.
E' possibile richiedere aiuto in questo
thread.
|
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 è settare temporaneamente security = user
nel proprio smb.conf.
Una volta terminata l'installazione si può risettare 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.
Esempio 21: 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, si usi il comando
testparm.
Esempio 22: 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
Aggiunta di samba al runlevel di default ed immediata esecuzione.
Esempio 23: 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 controllre i propri log e controllare
le condivisioni impostate con Samba: smbclient.
Esempio 24: 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.
Esempio 25: 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 di default. Se invece
il server dovrà gestire più stampanti, l'amministratore dovrà definirne una
di default sul server. Per impostarne una propria stampante di default differente
da quella sul server, bisogna usare il comando lpoptions.
Esempio 26: Impostare la propria stampante di default |
# lpstat -a
HPDeskJet930C accepting requests since Jan 01 00:00
laser accepting requests since Jan 01 00:00
# lpoptions -d HPDeskJet930C
|
Esempio 27: 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
Ora bisogna configurare il kernel per supportare smbfs. 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.
Esempio 28: Opzioni del kernel (nel file .config) |
CONFIG_SMB_FS=m
CONFIG_SMB_UNIX=y
|
Quindi eseguire l'installazione dei moduli per installarli.
Eseguire il comando seguente per caricarli:
Esempio 29: Caricare i moduli del kernel |
# modprobe smbfs
|
Una volta che il modulo è caricato, è possibile montare una risorsa condivisa
di Samba o Windows. Per questo si usa mount come segue:
Esempio 30: Montare una condivisione Samba o Windows |
# mount -t smbfs //PrintServer/public /mnt/public
# mount -t smbfs -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
E' 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
Bene, ora tutto è ultimato con un sistema di stampanti remote e condivise
funzionante ed esente da virus per sistemi sia *nix che Windows!
7.Link e Risorse
Link
Alcuni links 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ì.
|