Avanti Indietro Indice

9. Condividere una stampante Linux con macchine Windows

Per condividere una stampante Linux con macchine Windows, è necessario accertarsi che la propria stampante sia correttamente configurata e funzioni con Linux. Se la stampa da Linux è possibile, è abbastanza semplice configurare una condivisione per stampante SMB.

Si noti che utenti Windows devono avere un account sulla macchina Linux/Samba al fine di poter stampare. Windows 95/98 cercherà di autenticarsi con il print server usando lo username e la password forniti per login all'avvio. Questo significa che se si seleziona `Annulla' al LogOn di Windows, non sarà possibile stampare (o connettersi ad altri servizi SMB)! Windows NT consente di fornire username e password quando si usa una stampante.

Consultare il Printing HOWTO per configurare la stampa locale.

Aggiungere la configurazione di stampa al proprio smb.conf:


[global]
    printing = bsd
    printcap name = /etc/printcap
    load printers = yes
    log file = /var/log/samba-log.%m
    lock directory = /var/lock/samba

[printers]
    comment = All Printers
    security = server
    path = /var/spool/lpd/lp
    browseable = no
    printable = yes
    public = yes
    writable = no
    create mode = 0700

[ljet]
    security = server
    path = /var/spool/lpd/lp
    printer name = lp
    writable = yes
    public = yes
    printable = yes
    print command = lpr -r -h -P %p %s

Accertarsi che il percorso della stampante (in questo caso [ljet]) corrisponda alla directory di spool in /etc/printcap!

Le linee:


   printcap name = /etc/printcap
   load printers = yes

Controllano se tutte le stampanti in /etc/printcap debbano essere caricate in modo predefinito. In tal caso non c'è ragione per impostare le stampanti individualmente. La sezione [printers] specifica opzioni per le stampanti che si definiscono esplicitamente. Se il sottosistema di stampa in uso non funziona in questo modo (BSD), è necessario impostare un falso file printcap (oppure usare la tecnica del `print command'). Per maggiori informazioni relativamente il sistema printcap, si consulti il Printing HOWTO.

Una tecnica utile per verificare le proprie connessioni è cambiare il comando di stampa in:


   print command = cp %S /tmp/print.%P.%S

ed analizzare il file risultante.

NOTA: ci sono alcuni problemi per condividere stampanti di macchine UNIX con macchine Windows NT usando Samba. Un problema è che NT non vede correttamente la stampante condivisa. Per rimediare consultare le note nella distribuzione Samba nel file docs/WinNT.txt. Altri problemi hanno a che fare con le password. Vedere i commenti nello stesso file per una maggiore comprensione o in caso di problemi nella configurazione.

Oleg L. Machulskiy ( machulsk@shade.msu.ru) ha suggerito un comando di stampa migliore da usare nell'esempio precedente:


print command = smb2ps %s | lpr -r -h -P %p

Dove 'smb2ps' è uno script che trasforma il file di spool ricevuto da Windows in un file Postscript usabile. È necessario eliminare le prime 3 linee e le ultime 2, perché contengono codice PJL oppure PCL.

Questo approccio è necessario solo se la macchina Windows stampa PCL e non realmente Postscript. L'autore ha scoperto che Windows 95/98/NT non hanno un generico driver Postscript, ma il "Digital turbo Printserver 20" si è dimostrato essere abbastanza generico per la maggior parte delle configurazioni. Inoltre pare che anche "Apple LaserWriter II NTX" funzioni correttamente per questo scopo.

Se si crea una directory di spool al posto di quella impostata dall'utility fornita con la distribuzione si faccia attenzione ai permessi. Neil Fraser ( neilf@necon.co.za) suggerisce che i permessi della directory di spool (in questo caso /var/spool/lpd/lpr siano 4755 (notare il bit suid); funziona sul suo sistema quando il proprietario è 'root' ed il gruppo 'lp'.

Jeff Stern ( jstern@eclectic.ss.uci.edu) riporta come impostazione della propria spool directory 777, per consentire ad utenti senza privilegi di stampare, anche se indica come avrebbe potuto aggiungere gli utenti al gruppo 'lp'. Questa decisione spetta al system administrator locale, se la sicurezza di stampa è necessaria, allora si limitino i permessi il più possibile. In un ambiente casalingo, probabilmente si desidera che tutti siano in grado di stampare.

Dr. Michael Langner ( langner@fiz-chemie.de) indica come i problemi di permesso di scrittura in /var/spool/lpd/ possono essere evitati se si usa qualcosa come "path = /tmp" e "print command = lpr -r -P%p %s".

A volte un errore di parsing del Postscript capita quando si stampa da macchine Windows e causa la stampa di una pagina extra. Tale pagina avrà sempre "%%[ Lastpage ]%%" in cima. Questo sembra accadere solo con Windows 95 e 98 a causa del Postscript malformato.

Un modo per gestire questa situazione è di usare uno script per rimuovere la sequenza Postscript errata. Un altro modo è cercare di trovare un driver Postscript migliore. Probabilmente il modo migliore è di usare LPRng invece del Postscript per stampare su un Server Samba.

Erik Ratcliffe ( erik@caldera.com) di Caldera, riporta che LPRng comporta che qualsiasi sia il driver sulla macchina Windows, sul server Samba si usa un /etc/printcap simile a:


raw:\
        :rw:sh:
        :lp=/dev/lp1
        :sd=/var/spool/lpd/raw
        :fx=flp

LPRng non richiede un :\ alla fine di ogni riga. L'indicazione della stampante deve comunque essere presente in /etc/smb.conf per la stampante fisica. Il comando di stampa usa l'entry "raw" ed i dati sono mandati alla stampante in modo binario. Tale comando somiglia a:


print command = lpr -b -Praw %s

Potrebbe anche essere necessario disattivare lo spooling di stampa su Windows 95 al fine di stampare direttamente.

Se si ottiene sempre una pagina extra alla fine della stampa di client Windows, si provi ad aggiungere la direttiva "sf" in /etc/printcap. In questo modo si sopprimono i form feed per separare i job fi stampa, ma non si interferisce con i from feed dei documenti.


Avanti Indietro Indice