Samba - serveur d'impression

De UnixManiax
Aller à la navigation Aller à la recherche


Principe

L'objectif est de configurer un serveur d'impression sur un serveur linux (une Ubuntu 12.10 dans cet exemple) pour que des postes de travail clients (Windows et GNU/Linux) puissent utiliser simplement les imprimantes de la société (en réseau ou connectées en direct au serveur).

Le fonctionnement global est le suivant : les imprimantes sont configurées en local sur le serveur avec CUPS (Common Unix Printing system, un des standards Unix pour l'impression), cette étape peut se faire très simplement depuis une interface web. Ensuite, pour être facilement accessibles aux postes Windows, les imprimantes sont partagées avec Samba et les pilotes sont mis à disposition des clients. Il suffit alors, sur le poste client Windows, de visualiser l'imprimante désirée dans l'explorateur ; un simple double-clic sur l'icône va automatiquement installer les pilotes et l'imprimante sera prête à être utilisée. L'installation des imprimantes sur des postes clients GNU/Linux n'est pas abordée ici.

Mise en œuvre

Installer / configurer CUPS

Installer les packages :

apt-get install cups cups-client

Editer le fichier /etc/cups/cupsd.conf et remplacer la ligne :

Listen localhost:631

par :

Listen *:631

Cela permet d'accéder à l'interface web de CUPS depuis l'importe quel poste de travail du réseau. On peut également limiter à une adresse IP ou une plage d'adresses IP pour plus de sécurité. Mais de toute façon, les tâches d'administration nécessitent un mot de passe.

Puis modifier les sections suivantes :

# Restrict access to the server...
<Location />
  Order deny,allow
  Deny From All
  Allow From 127.0.0.1
  Allow from 192.168.*
</Location>

# Restrict access to the admin pages...
<Location /admin>
  Order deny,allow
  Deny From All
  Allow From 127.0.0.1
  Allow from 192.168.*
</Location>

# Restrict access to configuration files...
<Location /admin/conf>
  AuthType Default
  Require user @SYSTEM
  Order deny,allow
  Deny From All
  Allow From 127.0.0.1
  Allow from 192.168.*
</Location>

Pour autoriser le partage remplacer :

Browsing Off

par :

Browsing On
BrowseOrder allow,deny
BrowseAddress @LOCAL

Copier les pilotes CUPS de Windows

Créer les repertoires de destination :

mkdir -p /usr/share/cups/drivers/x64

Les pilotes CUPS Windows ne sont plus accessible sur le site web de CUPS. Vous trouverez une copie ici : cups_drivers_win32.zip] et cups_drivers_win64.zip.

Déposer les pilotes 32 bits dans /usr/share/cups/drivers/ et les pilotes 64 bits dans /usr/share/cups/drivers/x64/. Voici la liste des fichiers après la copie :

# ls -lR /usr/share/cups/drivers
/usr/share/cups/drivers:
total 1436
-rw-r--r-- 1 root root    760 août  28 16:22 cups6.inf
-rw-r--r-- 1 root root     67 août  28 16:22 cups6.ini
-rw-r--r-- 1 root root   9529 août  28 16:22 cups6.ppd
-rw-r--r-- 1 root root  12568 août  28 16:22 cupsps6.dll
-rw-r--r-- 1 root root  13672 août  28 16:22 cupsui6.dll
-rw-r--r-- 1 root root 129024 août  28 16:22 ps5ui.dll
-rw-r--r-- 1 root root 455168 août  28 16:22 pscript5.dll
-rw-r--r-- 1 root root  26038 août  28 16:22 pscript.hlp
-rw-r--r-- 1 root root 792644 août  28 16:22 pscript.ntf
drwxr-xr-x 2 root root   4096 août  28 16:57 x64

/usr/share/cups/drivers/x64:
total 2568
-rw-r--r-- 1 root root     760 août  28 16:22 cups6.inf
-rw-r--r-- 1 root root      67 août  28 16:22 cups6.ini
-rw-r--r-- 1 root root    9529 août  28 16:22 cups6.ppd
-rw-r--r-- 1 root root   12568 août  28 16:22 cupsps6.dll
-rw-r--r-- 1 root root   13672 août  28 16:22 cupsui6.dll
-rw-r--r-- 1 root root  850432 août  28 16:22 ps5ui.dll
-rw-r--r-- 1 root root  628736 août  28 16:22 pscript5.dll
-rw-r--r-- 1 root root   26038 août  28 16:22 pscript.hlp
-rw-r--r-- 1 root root 1062696 août  28 16:22 pscript.ntf

Configurer les imprimantes sous CUPS

Se connecter à l'interface web de cups sur le serveur (http://localhost:631/admin - remplacer localhost par l'ip ou le nom réseau du serveur si vous n'êtes pas en local dessus), et ajouter les imprimantes. C'est simple, je ne mets pas de détails dans ce document. Bien penser à cocher la case autorisant le partage de l'imprimante.

Installer / configurer Samba

Installer le package :

apt-get install samba

Faire une copie du fichier de configuration d'origine au cas où :

cp -p /etc/samba/smb.conf /etc/samba/smb.conf.origine

Créer un mot de passe root pour samba :

smbpasswd -a root

Bien retenir le mot de passe, il sera demandé par la suite. Il peut être différent du mot de passe root système.

Ajouter ou modifier ces lignes dans le fichier /etc/samba/smb.conf :

[global]
...
load printers = yes
printing = cups
printcap name = cups

[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
public = yes
guest ok = yes
printable = yes
writable = no

[print$]
comment = Printer Drivers
path = /var/lib/samba/printers
browseable = yes
read only = yes
guest ok = yes
write list = root, @lpadmin

Il est indispensable de mettre guest ok = yes pour que les clients puissent télécharger les pilotes, sinon ils auront un message du type "accès refusé" au moment d'installer les pilotes.

Ajouter les imprimantes CUPS vers Samba

cupsaddsmb -v -U root -a

Ceci ajoute toutes les imprimantes CUPS vers Samba.

Configurer une imprimante sur le client Windows

Ouvrir un explorateur Windows et, dans la barre de recherche, mettre un double anti-slash suivi de l’adresse ip ou du nom réseau du serveur (par exemple : « \\192.168.1.13 ») :

Win imp reseau.png

On voit alors apparaitre l’imprimante dans la liste des partages. Faire un double-clic dessus.

Ajouter une nouvelle imprimante sur le serveur

Pour ajouter une nouvelle imprimante :

  • L'ajouter sous CUPS en pensant à cocher le partage
  • Déposer les pilotes Windows (si non inclus dans les pilotes par défaut) dans /usr/share/cups/drivers/
  • L'exporter vers samba :
cupsaddsmb -v -U root -a
  • Faire un reload de samba :
service smbd reload

Maintenant, l'imprimante est visible des clients.