Guide du partage d'imprimante entre les systèmes Debian GNU/Linux et Microsoft Windows

Vincent Chartier

Adaptation française

Claude Thomassin

Relecture de la version française

Jean-Philippe Guérard

Préparation de la publication de la v.f.

Version : 1.2.fr.1.0

2003-11-03

Historique des versions
Version 1.2.fr.1.02003-11-03VCR, CT, JPG
Première adaptation française
Version 1.22003-10-03IW
Note à propos de Woody et gs-esp, conflit avec la commande « enable » de bash et une correction pour les clients XP et 2000 (Note about woody and gs-esp, conflict with bash's enable command and fix for XP/2000 clients)
Version 1.12003-06-26IW
Ajout de mots de passe pour les imprimantes Windows partagées, corrections (Added passwords on windows shared printers, Corrections)
Version 1.02003-05-15TMM
Première publication, revue par le projet de documentation Linux (Initial release, reviewed by LDP)
Version 0.82003-04-11IW
Converti à partir de LaTeX (converted from LaTeX)

Table des matières

Introduction
Comment démarrer
Composants pour l'impression sous Linux
Logiciels requis
Configuration de l'imprimante locale avec CUPS
Les bases de l'impression sous Linux
Imprimer vers des PC sous Windows
Connexion à Windows
Configuration de CUPS
Partager des imprimantes avec des PC sous Windows
Les bases du partage
Configuration de Samba
Configuration de CUPS
Résolution de problèmes
Échec des connexions aux imprimantes sous Windows
D'autres problèmes
Licence & droits d'utilisation
Droits d'utilisation (v.f.)
License

Debian GNU/Linux est une distribution Linux de premier choix dont la maintenance est assurée par des volontaires. Malheureusement, la configuration d'imprimantes sous Debian peut être difficile. De plus, il n'est pas facile de trouver des instructions simples expliquant comment configurer des imprimantes partagées entre Windows et Linux en utilisant les derniers outils. Ce guide a été écrit pour résoudre ces deux problèmes.

Ce guide va vous expliquer comment utiliser les outils en ligne de commande pour configurer l'impression sur votre système Debian. Il vous expliquera comment envoyer des documents à partir de Linux vers des imprimantes Windows et comment partager des imprimantes sous Linux avec des PC sous Windows. Quelques exemples de dépannage vous seront aussi fournis.

La dernière version originale de ce document est disponible sur excess.org. Le code source en XML Docbook et les fichiers images EPS nécessaires à générer les différents formats de publication peuvent également être téléchargés sur excess.org. N'hésitez pas à envoyer (en anglais) des corrections ou suggestions concernant la version originale de ce document à .

La dernière version française de ce document est toujours disponible sur traduc.org. Le code source en XML Docbook et les fichiers EPS du document original peuvent également être téléchargés sur traduc.org. N'hésitez pas à nous signaler les coquilles que vous pourrez trouver, et à nous envoyer vos corrections ou suggestions d'améliorations relatives à la version française de ce document à ou à .

Les principaux composants que nous utiliserons sont :

  • CUPS

    Le système commun d'impression UNIX (The Common UNIX Printing System) est un système de gestion des impressions et un ensemble de programmes permettant d'utiliser et d'administrer les imprimantes.

  • Samba

    Samba est un logiciel permettant aux ordinateurs sous un autre système que Windows de se comporter en réseau comme des machines sous Windows. En effet, Samba met en œuvre les protocoles de partage de fichiers et d'imprimantes utilisés par Windows.

  • Pilotes d'imprimantes

    LinuxPrinting.org offre le plus grand choix de pilotes d'imprimantes et gère une base de données des imprimantes compatibles Linux. Vous devrez télécharger un pilote d'imprimante pour chaque modèle d'imprimante que vous voudrez utiliser sous Linux. Un pilote d'imprimante est constitué d'un fichier PPD et d'un filtre, ou bien uniquement d'un fichier PPD dans le cas des imprimantes compatibles PostScript.

Tous les programmes et les bibliothèques requis sont inclus en standard dans l'archive Debian. Vous pouvez télécharger et installer ces paquets en utilisant les outils classiques de gestion des paquet de Debian. Ce qui suit est une liste des paquets dont vous aurez besoin :

Les commandes suivantes installeront ces logiciels :

apt-get update
apt-get install cupsys cupsys-bsd cupsys-client foomatic-bin \
                samba smbclient gs-esp a2ps

Des paquets additionnels peuvent être nécessaires pour certaines imprimantes spécifiques. Par exemple, le paquet hpijs doit être installé pour permettre le fonctionnement correct des imprimantes InkJet de HP.


Les documents sont envoyés dans la file d'attente via la commande lpr ou lp suivie du nom de fichier. Vous pouvez voir la file d'attente et consulter le statut de l'imprimante avec les commandes lpstat -o et lpstat -p. Pour annuler une impression, utilisez la commande cancel ou lprm suivie du numéro identifiant l'impression.

Le serveur d'impression CUPS est appelé cupsd. Il convertit des documents vers le format PostScript, puis les convertit dans un format natif compréhensible par l'imprimante (voir le schéma de la Figure 1, « Imprimer en local »). Les imprimantes qui ne comprennent pas le format PostScript utilisent un format tramé (de matrice de points ou bitmap) pour les documents. Les formats tramés peuvent être beaucoup plus lourds que le PostScript original, et mettront plus de temps à être envoyés à l'imprimante.

Les filtres sont des programmes utilisés pour convertir des documents d'un format vers un autre. Le gestionnaire d'impression CUPS fera de son mieux pour trouver un filtre qui convienne pour les documents que vous lui fournirez. Si aucun filtre adapté n'est installé, vous recevrez un message d'erreur ressemblant à lpr : impossible d'imprimer le fichier : client-erreur-format-document-non-supporté.

Beaucoup d'applications n'offrent pas de de filtres correspondant à leur format de documents. Les documents crées avec ces applications ne peuvent être imprimés que depuis l'application elle-même, à moins d'exporter le document vers un format PostScript ou un autre format standard.


SMB et CIFS sont les protocoles utilisés par Windows pour le partage de fichiers et d'imprimantes. Nous utiliserons Samba pour communiquer avec les PC sous Windows via ces protocoles. Avant de configurer CUPS, nous devons nous assurer que nous pouvons nous connecter aux PC sous Windows en utilisant la commande smbclient, le client Samba pour les protocoles SMB et CIFS (voir le schéma de la Figure 2, « L'impression en réseau »).

Voici par exemple comment établir une nouvelle connexion à un PC sous Windows :

/usr/bin/smbclient -L orange -U fred

added interface ip=10.6.7.234 bcast=10.6.7.255 nmask=255.255.255.0
Got a positive name query response from 10.6.7.8 ( 10.6.7.8 )
Password: (non affiché)

Sharename  Type  Comment
PRINTER$   Disk
JETDENCRE  Printer
TRUCS      Disk
IPC$       IPC    Remote Inter Process Communication 

La commande utilisée ci-dessus demande la liste des partages existant sur un PC sous Windows appelé orange, avec l'identifiant utilisateur fred. Le résultat de cette commande montre une imprimante appelée JETDENCRE.

Si le service de nommage Windows n'est pas disponible, vous devrez spécifier l'adresse IP du PC sous Windows avec l'option -I comme ci-dessous :

/usr/bin/smbclient -I 10.6.7.8 -L orange -N

Pour de plus amples informations, consultez la documentation de Samba sur l'utilisation de smbclient.

Une fois que vous aurez trouvé votre imprimante Windows, vous pourrez configurer CUPS. Tout d'abord, vérifiez que votre installation de CUPS dispose de la compatibilité SMB en utilisant la commande suivante :

ls -l /usr/lib/cups/backend/smb

Si ce fichier n'existe pas, créez-le par la commande suivante :

ln -s `which smbspool` /usr/lib/cups/backend/smb

Ceci est un exemple de configuration de l'imprimante montrée plus haut :

/usr/sbin/lpadmin -p ImprimanteOrange \
                  -v smb://fred:mon_passe@orange/JETDENCE -P /root/jetdencre.ppd
/usr/bin/enable ImprimanteOrange
/usr/sbin/accept ImprimanteOrange
/usr/sbin/lpadmin -d ImprimanteOrange

Comme mentionné précédemment, bash dispose d'une commande intégrée appelée enable, donc les utilisateurs de bash doivent utiliser le chemin complet de la commande (/usr/bin/enable) lorsqu'ils souhaitent activer une imprimante.

La commande lpadmin vous permet de configurer l'accès depuis Linux à une imprimante partagée sous Windows. Il suffit de lui indiquer comme paramètre unique le nom d'utilisateur, le mot de passe, le nom netbios et le nom de l'imprimante.

Regardez la la section intitulée « Configuration de l'imprimante locale avec CUPS » pour une explication plus approfondie des commandes utilisées ci-dessus. Si le service de nommage Windows n'est pas disponible, ajoutez l'option -h suivie de l'adresse IP de la machine sous Windows à la première commande lpadmin :

/usr/sbin/lpadmin -p ImprimanteOrange -h 10.6.7.8 \
                  -v smb://fred:mon_passe@orange/jetdencre -P /root/jetdencre.ppd

Votre imprimante est maintenant prête à être testée. Envoyez un fichier à l'imprimante avec la commande lp suivie du nom de fichier, ou en imprimant la document à partir d'une application.

Si vous autorisez un accès anonyme à votre imprimante, vous devrez créer un compte utilisateur pour les impressions à distance :

/usr/sbin/adduser --system --disabled-password smbprint

Cette commande ajoute un utilisateur appelé smbprint sur votre système. Vérifiez qu'il y a assez d'espace disque dans /home/smbprint, le répertoire personnel de l'utilisateur smbprint pour stocker les fichiers en attente d'impression. Vérifiez que l'utilisateur smbprint ne dispose pas des droits de lecture ou de modification sur les fichiers et les répertoires sensibles. Si vous avez configuré CUPS pour restreindre l'impression à certains utilisateurs sur votre système, vous devrez autoriser l'utilisateur smbprint à accéder aux imprimantes que vous voulez partager.

Le fichier de configuration de Samba est /etc/samba/smb.conf. Ce qui suit est un exemple de configuration permettant d'utiliser CUPS avec l'utilisateur smbprint :

[global]
 printcap name = cups  
 printing = cups   
 security = share

[printers]   
 browseable = yes   
 printable = yes   
 public = yes   
 create mode = 0700   
 guest only = yes   
 use client driver = yes
 guest account = smbprint   
 path = /home/smbprint   

Veuillez noter que cette configuration va autoriser l'impression par toute personne pouvant établir une connexion réseau à votre ordinateur, ce qui n'est pas recommandé pour des machines situées sur des réseaux non sûrs. Ce qui est par exemple le cas des ordinateurs reliés directement à internet. Si vous devez mettre en place un contrôle d'accès, mettez security = user ou security = domain et lisez les pages de manuel de Samba pour de plus amples informations.

Une fois que vous aurez ajouté les réglages ci-dessus à votre fichier de configuration Samba, vous devez redémarrer Samba avec la commande :

/etc/init.d/samba restart

Les pilotes d'imprimante Windows formatent leur sortie pour l'imprimante avant de l'envoyer au travers du réseau. Vous devrez configurer CUPS pour accepter la sortie pré-formatée en enlevant dé-commentant[1] la ligne ci-dessous du fichier /etc/cups/mime.convs :

application/octet-stream   application/vnd.cups-raw   0   -

Vous devrez aussi dé-commenter la ligne ci-dessous dans /etc/cups/mime.types :

application/octet-stream

Maintenant, vous devez configurer CUPS pour autoriser les connexions en provenance des autres machines du réseau. Ajoutez les lignes ci-dessous au fichier /etc/cups/cupsd.conf :

<Location /printers>
 AuthType None
 Order Deny,Allow
 Deny From None
 Allow From All
</Location>

Comme dans la configuration de Samba, cette configuration autorise n'importe quelle machine à se connecter à vos imprimantes et n'est pas recommandée sur des réseaux non sécurisés. Pour apprendre comment configurer le contrôle d'accès de vos imprimantes, lisez la page de manuel du fichier cupsd.conf et la documentation de CUPS.

Finalement, redémarrez CUPS avec la commande suivante :

/etc/init.d/cupsys restart

Votre imprimante sous Linux devrait désormais être accessible par les PC sous Windows de votre réseau local. Suivez les étapes habituelles de configuration d'une imprimante réseau sur vos machines sous Windows et n'oubliez pas d'imprimer une page de test.

Parmi les autres problèmes que vous pourrez rencontrer, il y a, par exemple, le fait d'être incapable d'imprimer vers une imprimante locale ou le fait de voir les travaux d'impression disparaître de la file d'attente sans s'être imprimés. Il se peut aussi que vous voyiez des messages d'erreurs vagues tels que :

Child process 2384 exited with status 32.

Augmentez le niveau de détail du journal des erreurs (paramètre LogLevel) en lui donnant la valeur debug, ce qui vous permettra d'avoir plus d'informations sur ce qui s'est passé avant que l'impression échoue :

Vous pourrez consulter le fichier d'historique de CUPS avec la commande suivante  :

/usr/bin/tail -f /var/log/cups/error_log

Vous devriez voir une ligne disant Scheduler shutting down due to SIGTERM. Cela indique que le serveur CUPS a été correctement arrêté.

Relancez votre travail d'impression et recherchez des messages intéressants pour le diagnostic du problème.

Un exemple de message de débogage intéressant est :

GNU Ghostscript 7.05 : Can't start ijs server 'hpijs'.

Dans ce cas, la solution est d'installer le paquet hpijs.

Si vous ne pouvez pas déterminer la cause de l'échec, effectuez une recherche sur internet avec les mots clefs du message d'erreur que vous avez trouvé ; il y a des chances que quelqu'un aie déjà résolu votre problème auparavant. Vous pouvez aussi essayer de mettre à jour les paquets listés dans la la section intitulée « Logiciels requis » si une version plus à jour est disponible.



[1] C'est-à-dire en retirant le caractère dièse (« # ») en début de ligne.