Pour partager une imprimante Linux pour des stations Windows, vous devez être sûr que votre imprimante est configurée pour fonctionner sous Linux. Si vous savez imprimer depuis Linux, la mise en place d'un partage de l'imprimante par SMB est quasi-automatique.
Veuillez vous référer au Printing HOWTO pour la configuration de l'imprimante.
Puisque l'auteur utilise une imprimante connectée à une machine sous Windows NT (Il y a bien longtemps, avant de convertir presque tout notre réseau à Linux), cette section ne doit pas être prise à la lettre, mais simplement comme une suggestion. Quiconque ayant des détails sur ce point est invité à les envoyer à dwood@plugged.net.au afin que ce chapitre puisse être complété.
Ajoutez la configuration d'impression à votre 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 = Toutes les imprimantes
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
Assurez vous que le « path » (dans cet exemple, à l'intérieur de la section
[ljet]
) corresponde au répertoire de spool défini dans
/etc/printcap
!
Les lignes :
printcap name = /etc/printcap load printers = yes
Contrôle si toutes les imprimantes du /etc/printcap
doivent être
chargées par défaut. Si vous faites cela, il ne sera pas nécessaire de mettre
en place les imprimantes unes a unes. La section [printers] spécifie les
options pour les imprimantes que vous voulez définir explicitement. Si le
système d'impression que vous utilisez ne marche pas de cette manière (BSD),
vous aurez a faire un faux fichier printcap (ou utiliser la technique du
`print command' décrite ci dessous). Pour plus d'informations sur le système
printcap, référez vous au Printing HOWTO.
Une technique utile pour tester les connexions réseau est de changer la commande print par :
print command = cp %S /tmp/print.%P.%S
Le fichier résultant pouvant alors être analysé.
NB : On constate quelques problèmes pour le partage d'imprimante sur des
serveurs Unix, utilisant Samba, pour des clients sous Windows NT. Un des
problèmes est que NT ne voit pas l'imprimante partagée correctement. Pour
résoudre ce problème, lisez les remarques dans le fichier
docs/WinNT.txt
de la distribution de Samba. Un autre problème existe
avec les mots de passe. Voyez également dans ce fichier comment résoudre le
problème.
Oleg L. Machulskiy ( machulsk@shade.msu.ru) suggère une meilleur commande print a mettre dans l'exemple précédent :
print command = smb2ps %s | lpr -r -h -P %p
Ou `smb2ps' est un script qui transforme le fichier reçu d'un poste Windows en un fichier postscript utilisable. Il doit enlever les 3 premières lignes ainsi que les 2 dernières, car celles ci contienent quelques codes PJL ou PCL.
Cette approche n'est nécessaire que si votre imprimante n'imprime que du PCL et non du vrai postscript. J'ai découvert que Windows 95/98/NT n'ont pas de pilote postscript générique, mais le "Digital turbo Printserver 20" est un bon pilote générique pour la majorité des installations. J'ai aussi entendu dire que le "Apple LaserWriter II NTX" marchais plutôt bien aussi.
Jeff Stern ( jstern@eclectic.ss.uci.edu) a rapporté ce qui suit et qui pourrais intéresser certains d'entre vous :
--------------------------%<----------------------------------
Le probleme que j'avais etais que je pouvais imprimer avec lpd/lpr sur mon imprimante sous Linux, depui la machine elle meme. Mais je n'arrivais pas a la faire imprimer depuis une machine Win95, quand j'essayais :
smbclient \\eclectic\belen -P
Puis, j'ai essayé :
print mon_fichier
J'ai eu des erreurs a propos d'un accès non autorisé. J'ai donc mis les
permissions sur le /var/spool/lpd/lp1
a 777. Je suis désolé, mais c'est
la seule manière que j'ai trouvé. Je suppose que j'aurais pu me débrouiller en
mettant tout le monde dans le groupe `lp', ou en donnant au répertoire le
groupe `users', etc. Mais pour l'instant, cela marche (avec root:lp comme
droits).
Enfin, l'autre chose que les administrateurs devraient savoir est que le nom du compte sur la machine windows (qui essaye d'acceder a la machine linux) devrais etre le meme que le compte sur la machine linux. Par conséquent, si il y a un utilisateur 'joe' sur la machine windows, 'mamachinewin' et qu'il essaye d'imprimer sur l'imprimante de la machine linux 'eclectic' (\\eclectic\belen), il doit y avoir un utilisateur 'joe' sur la machine linux. De plus, le mot de passe de joe sera celui pour acceder a l'imprimante belen sur eclectic. Ce mot de passe sera demandé lors de l'ajout de l'imprimante sur la machine windows.
Je suppose que cela n'est pas vraiment la cas car j'ai déclaré mon imprimante
en tant que 'public' dans mon smb.conf
. Mais apparament, il continue a
demander le mot de passe. (la boite de dialogue de windows ne vous permet de
pas spécifier un autre nom d'utilisateur pour la machine distante. Il vous
donne juste le nom de l'utilisateur local que vous avez donné lorsque vous
vous etes logé au démarrage de windows.
--------------------------%<----------------------------------
Dr. Michael Langner (
langner@fiz-chemie.de souligne que les droits d'acces sur
/var/spool/lpd
peuvent etre évités en utilisant un "path =
/tmp
" et un "print command = lpr -r -P%p %s
" a la
place.
Quelquefois, une erreur d'interprétation Postscript arrivera lorsque vous imprimerez du Postscript d'une imprimante Windows, qui fera qu'une page supplémentaire sera imprimée a la fin de chaque impression. La derniere page aura toujours "%%[ Lastpage ]%%" d'inscrit en haut. Cela semble arriver uniquement avec Windows 95 et 98 car le Postscript est mal formé.
L'une des manieres d'empecher cela est d'utiliser un petit script qui supprime le bout de Postscript des travaux d'impression. Une autre maniere est de trouver un pilote Postscript pour windows qui sache faire du Postscript. La meilleur maniere est semble-t-il d'utiliser LPRng a la place de Postscript pour imprimer sur l'imprimante Samba.
Erik Ratcliffe (
erik@caldera.com) de Caldera me dit que le fait d'utiliser le pilote
LPRng impliquera qu'il faudra utiliser le bon pilote sur les machines
Windows. Sur le serveur Samba, il y a un entrée dans leur /etc/printcap
qui ressemble a ça :
raw:\
:rw:sh:
:lp=/dev/lp1
:sd=/var/spool/lpd/raw
:fx=flp
LPRng ne necessite pas :\ a la fin de chaque ligne. Une entrée d'imprimante
sera toujours necessaire dans le /etc/smb.conf
pour l'imprimante
physique. La commande print
devra utiliser l'entrée "raw"
du fichier /etc/printcap
et les données devront etre envoyéees a
l'imprimant sous forme binaire de la maniere suivante :
print command = lpr -b -Praw %s
Vous aurez peut etre aussi a mettre la file d'attente sur la machine Windows 95, et a imprimer directement sur l'imprimante plutôt que d'utiliser une file d'attente.