alex
/ doc / serveur
d'impression
$Revision: 1.11 $
$Date: 2004/01/23 10:25:11 $
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.
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]
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;
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
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é).
foomatic-filters. C'est le cas de l'imprimante
HP LaserJet 2200. Symptômes quand ce paquet n'est pas installé
: Le serveur cherche un filtre introuvable, foomatic-rip.
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"
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.
/etc/init.d/cupsys restart
lpinfo -v
network socketComme l'imprimante est connectée au port parallèle,
c'est la ligne
network http
network ipp
network lpd
direct parallel:/dev/lp0
serial serial:/dev/ttyS0?baud=115200
...
direct usb:/dev/usb/lp15
network smb
"direct parallel:/dev/lp0" qui nous
intéresse.
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...
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.
Dans un navigateur, affichez la page http://impression.toto.net:631/admin/
et connectez-vous en qualité de root.
Sur la page Admin, cliquez sur Add Printer.
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).
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.
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.
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.
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 :
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.
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).
Contrôler l'accès par adresses IP seulement dans le serveur d'impression.
À 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.
Si nécessaire, installez samba (apt-get install samba).
Consultez la doc de Samba (notamment la page de manuel de smb.conf)
pour avoir une idée des options disponibles.
security = user) et Share (security = share).
Dans le premier cas, les utilisateurs Windows doivent avoir un compte sur
le serveur Linux (avec le même nom d'utilisateur et le même mot
de passe). Dans le deuxième cas, un mot de passe est associé
aux dossiers partagés, ce qui évite d'avoir à définir
un compte pour chaque utilisateur du serveur. Il est également possible
d'offrir un accès sans mot de passe à une ressource (accès
guest). Premier exemple : sécurité en mode User ; aucun accès public.
/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 [printers]
comment = Imprimantes
browseable = yes
path = /tmp
printable = yes
public = no
writable = no
create mode = 0700
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.
/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 [printers]
comment = Imprimantes
browseable = yes
path = /tmp
printable = yes
public = yes
writable = no
create mode = 0700
Créez les utilisateurs ayant accès au serveur de fichiers/d'impression :
adduser titi
smbpasswd titi
/etc/init.d/samba restart
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 :
Dans le fichier /etc/cups/mime.convs , activez la ligne suivante :
application/octet-stream application/vnd.cups-raw 0 -
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.
Site LinuxPrinting
Sharing A Linux Printer With Windows Machines (SMB Howto)
Setting Up CUPS under Debian GNU/Linux, Brian Stult, mars 2002
Printing in Linux with CUPS, Robert Spotswood
Applications Using PPD Files and the LinuxPrinting.org Database (explications sur l'installation des fichiers PPD)
Téléchargement de fichiers PPD (imprimantes HP notamment)
Base de données
sur les imprimantes et leurs fonctions sur Linux
$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