Common Unix Printing System
Contenu : Bref historique Fonctionnement schématique Internet Printing Protocol Fichiers de configuration Commandes Interaction avec LPD Interaction avec Samba
Bref historique L'impression sous UNIX : années '70 (LPD, AT&T) Autres essais : LPRng, Palladin, PLP... Problème majeur: aucun standard réel 2 solutions ont été apportées : -IEEE avec le Posix Printing Standard -IETF avec Internet Printing Protocol
Bref historique (suite) IPP s'est imposé comme le nouveau standard. En 1999 sort la 1ère version de CUPS, se basant sur ce protocole d'impression.
Fonctionnement schématique CUPS se base sur un processus central de schedule d'impression qui doit : Gérer les jobs d'impression Gérer les commandes administratives Fournir des infos sur l'état actuel des imprimantes et jobs ( que ce soit des imprimantes locales ou à distance )
Fonctionnement schématique
Avantages de CUPS L'impression par réseau est une des choses des plus ardues à rendre fonctionnel sous UNIX. CUPS permet d'autodétecter les imprimantes présentes sur le réseau ( via l'option Browsing ) Système de classes d'imprimantes
Avantages de CUPS Prend en charge les clients LPD Interface web de configuration Authentification sécurisée pour l'impression ( via encryption des données qui transitent sur le réseau et par cryptage MD5 des mots de passe )
Internet Printing Protocol IPP a été conçu de manière à définir une nouvelle couche d'application dans le stack TCP/IP Fonctionnalités recherchées : Vérifier la disponibilité d'une imprimante réseau Soumettre des jobs à cette imprimante Controler l'état d'avancement d'un job en cours Annuler un job soumis au préalable.
Internet Printing Protocol Schémas de fonctionnement d'IPP : Protocole de type client-serveur Serveur indépendant : machine à laquelle est connectée une ou plusieurs imprimantes Serveur « imprimante » : imprimante réseau Il fallait des facilités à retrouver une imprimante sur le réseau. Authentification du client et du serveur Garantie de la confidentialité des données circulant sur le réseau.
Internet Printing Protocol CUPS utilise une version enrichie d'IPP, avec 13 nouvelles fonctionnalités par rapport au standard.
Fichiers de configuration Les fichiers sont présents dans /etc/cups/ Serveur : cupsd.conf Client : client.conf classes.conf & printers.conf mime.convs & mime.types lpoptions et passwd.md5
Répertoires importants /var/log/cups/ C'est là que se trouvent les fichiers logs de CUPS. /var/spool/cups/ L'endroit où sont stockés les fichiers en attente d'être imprimés. /usr/share/cups/model/ C'est là que sont stockés l'ensemble des fichiers .ppd représentatifs des modèles d'imprimantes reconnus.
cupsd.conf La syntaxe est similaire à celle des fichiers de configuration Apache. Options trop nombreuses que pour toutes etre décrites. Nous nous intéresserons donc aux options principales.
cupsd.conf Browsing [On | Off] Permet aux serveurs de s'échanger des infos sur les imprimantes. BrowseAddress ... Permet de définir le range de machines où aboutiront les infos des imprimantes connectées au serveur.
cupsd.conf Options relatives à Browse : On peut définir d'où on accepte les informations. Exemple : BrowseOrder deny,allow BrowseDeny from All BrowseAllow from 192.168.1.0/24 BrowseAllow from ...
cupsd.conf Listen Directive indiquant sur quelle adresse réseau et sur quel port écouter en vue d'accepter des connexions. Exemple : Listen 127.0.0.1:631 Listen 192.168.0.2:631
cupsd.conf Les directives Location permettent de controler l'accès aux imprimantes, files d'impressions, interfaces de configuration de CUPS. Il s'agit de balises dans lesquelles on définit les controles d'accès.
cupsd.conf Exemple type pour Location : <Location /printers/HP> AuthClass ... AuthGroupName ... AuthType ... Order deny,allow Deny from All Allow from ... </Location>
cupsd.conf LogLevel Indique le niveau minimum à partir duquel on doit inscrire les infos dans les fichiers logs ( similaire à Syslog ) none, emerg, alert, crit, error, warn, notice, info, debug, debug2
client.conf Ce fichier doit etre configuré manuellement. Normalement, il ne contient que l'adresse du serveur CUPS avec lequel le client communique. Il y a moyen d'activer des options de cryptage des données qui transiteront sur le réseau.
printers.conf Définition des diverses imprimantes. <Printer HP> Info HP Deskjet 815C Location Bureau 1er étage DeviceURI parallel:/dev/lp0 State Idle Accepting Yes JobSheets none none QuotaPeriod 0 PageLimit 0 Klimit 0 </Printer>
classes.conf Définition des différentes classes gérées par le serveur. <Class Demonstration> State Idle StateMessage Accepting Yes JobSheets none none Printer BJC Printer HP QuotaPeriod 0 PageLimit 0 Klimite 0 </Class>
mime.convs Ce fichier reprend la liste des filtres de fichiers fournis avec CUPS. Il associe un filtre à chaque type de fichier connu permettant de convertir le fichier en un format reconnu par l'imprimante.
mime.types Ce fichier contient la liste des types de fichiers reconnus par CUPS. Chaque entrée correspond à un type et à la manière de le reconnaitre
passwd.md5 Contient la liste des comptes utilisateurs « Digest ». Chaque entrée est du type : nom:group:encrypted_passwd
lpoptions et ~/.lpoptions Ce sont des fichiers de sauvegarde des paramètres d'impression. /etc/cups/lpoptions contient les paramètres définis par l'utilisateur root. .lpoptions est présent dans la home directory de chaque utilisateur.
Commandes 3 types de commandes : - System V - Berkeley - CUPS
Commandes System V lp Commande pour lancer une impression. eric@eric:/home/eric$ lp -d Demo -n 5 test.txt request id is HP-5 (1 file(s)) cancel Commande pour annuler un job d'impression eric@eric:/home/eric$ cancel HP-5
Commandes System V lpmove Déplacer un job vers une autre imprimante eric@eric:/home/eric$ lpmove 5 BJC lpadmin Il s'agit de l'outil d'administration. 3 types d'utilisation : root@eric:/root# lpadmin -p HP [OPTIONS] root@eric:/root# lpadmin -d HP root@eric:/root# lpadmin -x HP
Commandes System V [OPTIONS] définit les caractéristiques de l'imprimante : -v parallel:/dev/lp0 -c Demonstration -D «Imprimante HP pour démo» -L «Local A2qqchose» -P HP.ppd -m modele -u allow:eric,fred,cedric,@root
Commandes System V (cups)enable (cups)disable accept reject Toutes ces commandes peuvent prendre -h server en paramètre pour répercuter la commande au niveau du serveur. Autre option : -r « motif refus »
Commandes System V lpstat La commande fournissant les informations sur l'état des imprimantes et classes. eric@eric:/root# lpstat -t scheduler is running system default destination: HP device for HP: parallel:/dev/lp0 HP accepting requests since Jan 01 00:00 printer HP is idle. enabled since Jan 01 00:00
Commandes Berkeley lpr Commande d'impression. lpq affiche l'état des jobs de l'imprimante par défaut. lprm annule le job d'impression courant.
Commandes Berkeley lpc Il s'agit d'un invite de commandes qui fourni une seule commande permettant l'accès aux infos sur les jobs et imprimantes : « status ». lpc> status HP: printer is on device 'parallel' speed -1 queuing is enabled printing is enabled no entries daemon present lpc> quit
Commandes CUPS lpinfo Permet de récupérer les infos sur : - les modèles/drivers ( -m ) - les devices ( -v )
Commandes CUPS lpoptions Définit les options par défaut pour les jobs d'impression lancés via «lp» ou «lpr». 2 cas: - exécuté par l'utilisateur : stocké dans .lpoptions - exécuté par le SU : stocké dans /etc/cups/lpoptions
Commandes CUPS lppasswd Permet la gestion des comptes utilisateurs Digest Manipule le fichier /etc/cups/passwd.md5 -a : ajouter -x : supprimer -g group : spécifie le groupe de l'utilisateur.
CUPS & LPD Impression à partir de clients LPD : Le client interagit avec le serveur CUPS de manière totalement transparente. Utilise un petit déamon servant d'interface entre le client LPD et le serveur CUPS. Limitations : configuration manuelle de l'imprimante chez tous les clients ( dans le fichier /etc/printcap )
CUPS & LPD Impression vers un serveur LPD Elle est rendue possible grace à un filtre backend destiné aux serveurs et imprimantes LPD. DeviceURI de type lpd://server/name Daemon qui s'occupe du support LPD : /usr/lib/cups/daemon/cups-polld
CUPS & Windows Impression via Samba Version 2.0.6 minimum (filtre backend non fourni sinon)
CUPS & Windows Client UNIX, serveur Windows Afin de s'assurer que CUPS a été configuré pour Samba : ln -s `which smbspool` /usr/lib/cups/backend/smb DeviceURI: smb://server/printer smb://workgroup/server/printer
CUPS & Windows Client Windows, serveur UNIX Il faut modifier /etc/samba/smb.conf La section «global» doit contenir ceci: [global] load printers = yes printing = cups printcap name = cups
CUPS & Windows Dans la section «printers» : [printers] comment = All Printers path = /var/spool/samba browseable = yes public = yes guest ok = yes writable = no printable = yes printer admin = root
CUPS & Windows Pour le partage des pilotes d'impression : [print$] comment = Printer Drivers path = /usr/share/cups/drivers browseable = yes guest ok = no read only = yes write list = root
CUPS & Windows Il faut encore exporter les imprimantes vers CUPS. cupsaddsmb -U root HP BJC cupsaddsmb -U root -a
Dernières notes Problème majeur dans l'utilisation de CUPS : présence d'un firewall bloquant le port 631 ! Solution : iptables -A INPUT -i eth0 -s 192.168.1.0/24 -p tcp --destination-port 631 -j ACCEPT
Dernières notes Afin d'intégrer CUPS aux diverses applications de KDE, il faut installer une librairie : kdelibs3-cups Les slides ainsi que le document principal de cet exposé sont disponibles à l'adresse suivante : http://eriku.free.fr/cups/