[Accueil] alex / doc / serveur d'impression


Installation d'un serveur d'impression avec CUPS et Samba sur Debian Woody

$Revision: 1.11 $
$Date: 2004/01/23 10:25:11 $

Introduction

Ce document explique comment installer un serveur d'impression sur Debian Woody pour partager une imprimante laser HP LaserJet 6MP avec un réseau local composés de postes Windows 2000, XP et NT 4. Les postes Windows 2000 et XP accèdent à l'imprimante en utilisant le protocole IPP ; l'imprimante est également partagée avec Samba pour être accessible par les postes Windows NT 4.

Dans cet exemple, le serveur d'impression tourne sur Debian GNU/Linux 3.0 et le réseau local utilise le domaine toto.net. Les postes Windows 2000 ont les Services Packs 1 ou 3.

2004-01-19 : ajout de précisions après l'installation d'une imprimante HP LaserJet 2200.

Licence

Copyright 2002-2004 Alexandre Ratti. Document diffusé dans les conditions des licences GPL 2 (GNU General Public License) et GFDL 1.2 (GNU Free Documentation License). [Explications]

Paramétrage du noyau

La prise en charge du port parallèle et des imprimantes sur port parallèle doit être activée dans le noyau du serveur Linux. Si nécessaire, recompilez le noyau en choisissant les options suivantes :

Pour plus d'informations sur la recompilation du noyau à la mode Debian, consultez la section Compiler un nouveau noyau du Manuel d'installation de Debian GNU/Linux 3.0.

Après avoir installé le nouveau noyau (dpkg -i paquet_du_noyau.deb), redémarrez le serveur Linux. Si vous avez compilé les options ci-dessus sous la forme de modules, vérifiez que ces derniers sont chargés avec modconf.

Si le message "Can't locate module parport_lowlevel" apparaît dans /var/log/syslog au redémarrage, vous avez peut-être oublié d'activer l'option PC-style hardware.

Si le port parallèle est bien reconnu, la commande "dmesg | grep parport" doit faire apparaître des lignes du type :

parport0: PC-style at 0x378 [PCSPP,TRISTATE]
parport0: Printer, Hewlett-Packard HP LaserJet 6MP
lp0: using parport0 (polling).

Autre test : la commande "cat /proc/sys/dev/parport/parport0/autoprobe" affiche les infos suivantes dans cet exemple :

CLASS:PRINTER;
MODEL:HP LaserJet 6MP;
MANUFACTURER:Hewlett-Packard;
DESCRIPTION:Hewlett-Packard LaserJet 6MP Printer;
COMMAND SET:PJL,MLC,PCLXL,PCL,POSTSCRIPT;

Installation du serveur CUPS

  1. Si l'imprimante n'est utilisée qu'en réseau, depuis des postes Windows 2000 ou XP, il suffit d'installer le paquet cupsys (et ses dépendances, qui sont sélectionnées automatiquement).

    apt-get install cupsys

  2. Si vous voulez également imprimer depuis des postes Windows 9x ou Windows NT 4, qui ne gèrent pas le protocole IPP, vous devrez partager l'imprimante avec Samba. Installez également le paquet cupsys-bsd.

    apt-get install cupsys-bsd

    Pour imprimer avec le protocole IPP sur un client Windows 98/Me, vous devriez pouvoir utiliser le client IPP disponible sur le CD-ROM de Windows Me (non testé).

  3. Si le PPD de l'imprimante utilise l'outil Foomatic, vous devez également installer le paquet foomatic-filters. C'est le cas de l'imprimante HP LaserJet 2200. Symptômes quand ce paquet n'est pas installé :

  4. Enfin, vous aurez besoin d'un fichier PPD (fichier de description de l'imprimante). Vous pouvez installer le paquet cupsomatic-ppd, qui en contient un grand nombre, ou récupérer celui qui vous intéresse sur le site LinuxPrinting. J'ai choisi la 2ème solution. Si vous avez l'URL, vous pouvez utiliser wget pour télécharger le fichier en ligne de commande. Si l'URL est compliquée, mettez des guillemets autour. Renommez le fichier après son téléchargement.

    wget "http://www.linuxprinting.org/ppd-o-matic.cgi?driver=Postscript
    &printer=HP-LaserJet_2200&show=0"

  5. Le serveur CUPS est paramétrable grâce à une interface Web très pratique. Par défaut, elle n'est accessible qu'en local, ce qui pose problème si le serveur n'a ni écran, ni interface graphique. Nous allons donc la rendre accessible depuis les postes du réseau local.

    Attention : le mot de passe de root va circuler en clair sur le réseau local. Si vous ne faites pas entièrement confiance au réseau local, ne modifiez pas le paramètre <Location /admin> et paramétrez le serveur en local.

    A compléter : peut-on utiliser SSL pour sécuriser les communications ? Peut-on créer un compte d'administration dans CUPS pour éviter d'utiliser le compte root ? Autre solution : créer l'imprimante sans passer par l'interface graphique.

    Apportez les modifications suivantes au fichier /etc/cups/cupsd.conf (les lignes ajoutées ou modifiées sont en bleu) :

    HostNameLookups On

    <Location />
    Order Deny,Allow
    Deny From All
    Allow From 127.0.0.1
    Allow From .toto.net
    </Location>

    <Location /admin>
    AuthType Basic
    AuthClass System

    Order Deny,Allow
    Deny From All
    Allow From 127.0.0.1
    Allow From .toto.net
    </Location>

    Si vous indiquez un nom de domaine (.toto.net), n'oubliez pas d'activer l'option HostNameLookups, sinon l'authentification échouera.

  6. Redémarrez le serveur CUPS et vérifiez qu'il est bien chargé :

    /etc/init.d/cupsys restart

    lpinfo -v

    network socket
    network http
    network ipp
    network lpd
    direct parallel:/dev/lp0
    serial serial:/dev/ttyS0?baud=115200
    ...
    direct usb:/dev/usb/lp15
    network smb

    Comme l'imprimante est connectée au port parallèle, c'est la ligne "direct parallel:/dev/lp0" qui nous intéresse.

  7. Si vous avez récupéré un fichier PPD, sur LinuxPrinting par exemple, c'est le moment de l'installer. Placez-le dans le dossier /usr/share/cups/model/ et donnez-lui les mêmes autorisations que les fichiers qui s'y trouvent déjà.

    Ensuite, redémarrez le serveur CUPS (/etc/init.d/cupsys restart). Des messages d'informations devraient apparaître dans /var/log/cups/error_log :

    I [03/Feb/2003:17:15:18 +0100] LoadPPDs: Read "/etc/cups/ppds.dat", 12 PPDs...
    I [03/Feb/2003:17:15:18 +0100] LoadPPDs: Wrote "/etc/cups/ppds.dat", 13 PPDs...

  8. Si vous voulez associer un sous-domaine au serveur d'impression (impression.toto.net, par exemple), définissez-le dans le serveur DNS qui dessert le réseau, puis modifiez le fichier /etc/cups/cupsd.conf :

    ServerName impression.toto.net

    et redémarrez le serveur CUPS.

  9. Dans un navigateur, affichez la page http://impression.toto.net:631/admin/ et connectez-vous en qualité de root.

  10. Sur la page Admin, cliquez sur Add Printer.

  11. Dans la rubrique Add New Printer, donnez un nom à l'imprimante dans le champ Name, puis cliquez sur Continue. L'imprimante sera accessible sous ce nom (HPLJ6MP dans cet exemple).

  12. Dans la rubrique Device for HPLJ6MP, sélectionnez Parallel Port. Si l'imprimante a été détectée automatiquement par le système, son nom apparaît également ("Parallel Port #1 (Hewlett-Packard HP LaserJet 6MP)", par exemple). Cliquez ensuite sur Continue.

  13. Dans la rubrique Model/Driver for HPLJ6MP, cliquez sur le nom du fabricant de l'imprimante, puis sur Continue. Sur l'écran suivant, choisissez le modèle. Vous devriez retrouver ici les infos du fichier PPD installé précédemment. Cliquez sur Continue pour terminer la définition de l'imprimante.

  14. Affichez la page Printer en cliquant sur le menu Printers en haut de l'écran. Pour tester l'imprimante, cliquez sur Print Test Page. Si tout va bien, une page de test devrait être imprimée.

Paramétrage d'un poste Windows 2000 ou XP

L'imprimante que nous venons de créer est accessible à l'adresse :

http://impression.toto.net:631/printers/HPLJ6MP

Sur un poste de travail Windows 2000/XP, choisissez Menu Démarrer > Paramètres > Imprimantes > Ajouter une imprimante. Dans l'Assistant Ajout d'imprimante, choisissez "Imprimante réseau", puis "Vous connecter à une imprimante sur Internet ou sur votre réseau intranet" et indiquez l'adresse de l'imprimante dans le champ URL. Le système installe ensuite le pilote de l'imprimante.

Remarques :

  1. Pour créer une imprimante réseau sur un poste Windows 2000, vous devez avoir le profil "administrateur" ou "utilisateur avec pouvoir". Les utilisateurs standard n'y sont pas autorisés.

  2. Windows 2000 et serveurs proxy : les paramètres de proxy définis dans Panneau de configuration > Options Internet sont pris en compte. Si l'accès au serveur d'impression est limité à certaines adresses IP, pensez à autoriser celle du proxy. Autre solution : sur le client Windows 2000, indiquez l'adresse IP (ou si possible le nom de domaine) du serveur d'impression parmi les adresses locales pour lesquels le serveur proxy ne doit pas être utilisé (Outils > Options Internet > Général > Connexions > Paramètres réseau).

  3. Windows XP permet d'indiquer un mot de passe et un nom d'utilisateur lors de l'installation d'une imprimante IPP. En revanche, sur Windows 2000, les paramètres utilisés sont ceux de la session Windows ouverte. Vous risquez donc d'avoir des problèmes si le serveur d'impression n'est accessible qu'aux utilisateurs disposant d'un compte Linux et si la session Windows est ouverte sous un autre nom. Dans ce cas, deux solutions :

Impression depuis un poste Windows NT 4

À ma connaissance, Windows NT 4 ne prend pas en charge le protocole IPP, qui permet d'imprimer sur un périphérique connecté à un intranet. Vous allez devoir partager l'imprimante avec Samba. Cette procédure devrait également fonctionner avec Windows 9x, mais je n'ai pas testé.

Cette partie s'inspire largement de la section Service CUPS de la FAQ debian-user-french.

Premier exemple : sécurité en mode User ; aucun accès public.

  1. Dans le fichier /etc/samba/smb.conf, ajoutez les paramètres suivants :

    [global]
    workgroup = votre_groupe_travail
    netbios name = nom_ordinateur_linux
    security = user
    printing = cups
    printcap name = /etc/printcap.cups
    load printers = yes
  2. [printers]
    comment = Imprimantes
    browseable = yes
    path = /tmp
    printable = yes
    public = no
    writable = no
    create mode = 0700

  3. Créez les utilisateurs ayant accès au serveur de fichiers/d'impression :

    adduser titi
    smbpasswd titi

    /etc/init.d/samba restart

Deuxième exemple : sécurité en mode User, mais imprimante accessible sans mot de passe sur le réseau local. Dans ce cas, l'accès a lieu sous le nom d'un utilisateur spécial défini dans smb.conf.

  1. Dans le fichier /etc/samba/smb.conf, ajoutez les paramètres suivants :

    [global]
    workgroup = votre_groupe_travail
    netbios name = nom_ordinateur_linux
    security = user
    map to guest = Bad User
    guest account = guest
    printing = cups
    printcap name = /etc/printcap.cups
    load printers = yes
  2. [printers]
    comment = Imprimantes
    browseable = yes
    path = /tmp
    printable = yes
    public = yes
    writable = no
    create mode = 0700

  3. Créez les utilisateurs ayant accès au serveur de fichiers/d'impression :

    adduser titi
    smbpasswd titi

    /etc/init.d/samba restart

  4. Créez l'utilisateur spécial guest, qui doit avoir très peu de privilèges.

    adduser --no-create-home --disabled-login --system --group guest

Dans les deux cas, vous devez également faire les modifs suivantes :

  1. Dans le fichier /etc/cups/mime.convs , activez la ligne suivante :

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

  2. Dans le fichier /etc/cups/mime.types, activez la ligne suivante :

    application/octet-stream

Sur le poste Windows NT 4, dans l'Explorateur, choisissez Voisinage réseau > nom_serveur > Imprimantes. Le nom de l'imprimante devrait apparaître ici. Cliquez dessus avec le bouton droit et choisissez Installer. Le système installe alors le pilote du périphérique.

Documentation et ressources


$Id: index.html,v 1.11 2004/01/23 10:25:11 alex Exp $
http://www.gabuzomeu.net/alex/doc/impression/index.html
courrier électronique | e-mail  Alexandre Ratti