# Le système d'exploitation GNU-Linux/Le serveur d'impression CUPS

* Qu'est-ce qu'un système d'exploitation ?
* Unix et Linux
* Partitionnement du disque
* Installation
** Installer Debian via le réseau
* Utilisateur Unix, l'interface console
** Le login
** Variables d'environnement
** Commandes de base
** L'aide en ligne man
** L'éditeur de texte vi
** Les shells
** La complétion
** Les jokers
** Les répertoires importants
** Redirection des entrées/sorties
** Invoquer un programme en tâche de fond
** Propriétaires et droits d'accès
** Processus
** Locale
* Administration du système
** Configuration du réseau
** Les utilisateurs et groupes
** Le processus d'initialisation
** Les systèmes de fichiers
** Le système virtuel /proc
** Les périphériques /dev
** L'ordonnanceur de travaux cron
** Le backup : tar et gzip
** ghost avec partimage
** sauvegarde de fichiers avec rsync
** Les fichiers journaux syslog
** Installation de nouveaux logiciels
** Le noyau Linux et les modules
** Autres commandes utiles
** Installation RAID1 logiciel + LVM + XFS
** Scripts de surveillance
** Réseaux sans fil
* Administration des services réseaux
** L'outil d'administration Webmin
** telnet
** cURL
** wget
** Le serveur de noms BIND
** Le serveur de configuration réseau DHCP
** Le serveur de shell distant SSH
** Le partage de fichiers Samba
** Le partage de fichiers NFS
** Le serveur d'impression CUPS
** Le serveur de fichiers FTP
** Le serveur Web Apache
** Le serveur Web Nginx
** La base de données MySQL
** La base de données Memcached
** La base de données Redis
** Le serveur de mails Postfix
** Les annuaires LDAP
** La supervision Nagios
* Sécurisation d'un serveur Linux
** Installation d'un service en mode chroot
** Protection avec iptables
* Erreurs connues
* Médiagraphie
* Auteurs
* Qu'est-ce qu'un système d'exploitation ?
* Unix et Linux
* Partitionnement du disque
* Installation
** Installer Debian via le réseau
* Utilisateur Unix, l'interface console
** Le login
** Variables d'environnement
** Commandes de base
** L'aide en ligne man
** L'éditeur de texte vi
** Les shells
** La complétion
** Les jokers
** Les répertoires importants
** Redirection des entrées/sorties
** Invoquer un programme en tâche de fond
** Propriétaires et droits d'accès
** Processus
** Locale
* Administration du système
** Configuration du réseau
** Les utilisateurs et groupes
** Le processus d'initialisation
** Les systèmes de fichiers
** Le système virtuel /proc
** Les périphériques /dev
** L'ordonnanceur de travaux cron
** Le backup : tar et gzip
** ghost avec partimage
** sauvegarde de fichiers avec rsync
** Les fichiers journaux syslog
** Installation de nouveaux logiciels
** Le noyau Linux et les modules
** Autres commandes utiles
** Installation RAID1 logiciel + LVM + XFS
** Scripts de surveillance
** Réseaux sans fil
* Administration des services réseaux
** L'outil d'administration Webmin
** telnet
** cURL
** wget
** Le serveur de noms BIND
** Le serveur de configuration réseau DHCP
** Le serveur de shell distant SSH
** Le partage de fichiers Samba
** Le partage de fichiers NFS
** Le serveur d'impression CUPS
** Le serveur de fichiers FTP
** Le serveur Web Apache
** Le serveur Web Nginx
** La base de données MySQL
** La base de données Memcached
** La base de données Redis
** Le serveur de mails Postfix
** Les annuaires LDAP
** La supervision Nagios
* Sécurisation d'un serveur Linux
** Installation d'un service en mode chroot
** Protection avec iptables
* Erreurs connues
* Médiagraphie
* Auteurs
[ Modifier le sommaire ]

## Introduction

CUPS (Common Unix Printing System) est un serveur d'impression. CUPS permet ainsi d'imprimer sur une imprimante accessible sur le réseau ou locale (généralement connectée avec un câble USB). La communication avec les imprimantes utilise le protocole IPP (Internet Printing Protocol).
CUPS est très simple à configurer. De ce fait, il est de plus en plus souvent utilisé en remplacement de LPR (premier serveur sous UNIX).
Site Internet : www.cups.org
Le site linuxprinting.org liste les imprimantes compatibles avec CUPS.
Généralement, un système linux moderne est désormais livré avec les utilitaires nécessaire pour détecter, configurer et utiliser des imprimantes.

### Installation (Debian)

L'installation initiale de CUPS sous Debian peut se faire avec la commande suivante :
Le paquet cups-pdf fournit une imprimante virtuelle qui permet de générer des fichiers PDF.
Le paquet cups-bsd fournit les commandes traditionnelles lpr, lpq et lprm.
Les paquets foomatic-db-compressed-ppds et openprinting-ppds contiennent des descriptions PPD (PostScript Printer Description) pour un très grand nombre d'imprimantes.
D'autres paquets de PPD sont également disponibles comme hp-ppd ou hpijs-ppds. Mais aussi le meta-paquet printer-driver-all-enforce qui englobe une vingtaine de paquets de différents drivers CUPS.

## Configuration côté serveur

CUPS se configure via une interface web accessible par l'adresse http://localhost:631/ .
* On Clique sur Add Printer pour ajouter une imprimante
* On spécifie son nom, sa localisation physique et sa description. Exemple : HP1200, Salle D11, L'imprimante laser de la salle D11
* On choisit ensuite le périphérique correspondant au mode de connexion de l'imprimante avec le PC (ex: port parallèle, USB, ipp, http...etc)
* Si l'imprimante est partagée par un autre serveur CUPS, il faut spécifier l'adresse IPP de l'imprimante, comme par exemple : ipp://192.168.30.210/printers/hp1200
* On choisit ensuite le constructeur de l'imprimante. Dans le cas où votre constructeur n'est pas dans la liste, il faut télécharger sur Internet le fichier PPD (Printer Postscript Description) correspondant et utiliser le bouton Parcourir pour uploader le fichier
* On choisit ensuite le driver correspondant au modèle de l'imprimante. Certains drivers sont les mêmes pour des imprimantes différentes. Si on ne trouve pas son imprimante, il faut aller sur www.linuxprinting.org pour connaitre la compatibilité de l'imprimante avec un autre driver
* Pour valider les modifications, on s'authentifie avec le compte root pour que le logiciel puisse écrire le fichier de configuration de CUPS

### Fichier de configuration

Le fichier principal de configuration de CUPS est /etc/cups/cupsd.conf. Il faut le modifier pour indiquer à quel réseau on partage les imprimantes.
Tout d'abord, on indique à CUPS d'écouter sur toutes les interfaces réseaux. On remplace Listen localhost:631 par :
Dans la balise <Location />, il faut rajouter "Allow" suivi de l'adresse du réseau sur lequel se trouve l'imprimante afin de permettre à mon réseau d'accéder à celle-ci.
Lorsque ce fichier est modifié, il faut relancer le service :

## Configuration côté client / utilisateur
### Interface(s) graphiques

Des outils d'interface graphique permettant d'accéder au système CUPS existent :
    gtklp (Gtk/Gnome)
    system-config-printer-gnome (Gtk/Gnome)

### Interface web

Comme pour la configuration côté serveur, on configure CUPS côté client via l'interface WEB.
Dans la procédure décrite ci dessus, au lieu de spécifier un périphérique local (port parallèle, USB ou autre), on spécifie l'adresse IPP de l'imprimante.
Exemple:
ou (sous Windows) :

## Impression

Les imprimantes sont normalement utilisables via les applications qui ont besoin d'imprimer (menu «Imprimer» !) : suite bureautique, navigateur internet...
Néanmoins, il est possible de les utiliser sans passer par une application, et même de contrôler directement l'état des imprimantes, en utilisant des commandes spécifiques du système.

### Les commandes d'impression

Ces commandes sont fournies par le paquet cupsys-bsd installé précédement.

#### La commande lpr

    permet d'imprimer un fichier :
Pour imprimer sur une imprimante en particulier :
Pour spécifier le nombre de copies (ici 2 copies) :

#### La commande lpq

    permet d'afficher la file d'impression (queue) et connaître les numéros de "job" :
    L'imprimante HP1200 est opérationnelle et en cours d'impression. C'est l'impression de l'utilisateur alex qui est en cours.
    L'impression de l'utilisateur root est en première position de la file d'attente.
Pour voir la file d'attente d'une imprimante en particulier :

#### La commande lprm

    (lp remove) permet de supprimer une impression de la file d'attente à l'aide de son numéro de "job" :
Pour supprimer toute la file d'attente (cette action n'est permise que pour le compte root) :

#### La commande lpstat

    (lp statistiques) permet d'obtenir diverses statistiques
* La liste des imprimantes installées et l'imprimante par défaut
* etc...

## Supervision

La supervision s'intéresse au suivi du bon fonctionnement et à la détection (et correction!) des problèmes.

### Logs

Le premier outil de supervision est l'examen des fichiers «journaux» (logs) de fonctionnement du système CUPS. Ces fichiers sont localisés dans le répertoire
On y trouve trois type d'enregistrements
    access.log : enregistrement des accès d'impressions
    error.log : enregistrement des erreurs
    page.log : enregistrement des pages pour statistiques
Pou obtenir le maximum d'information, il faut positionner le mode Debug dans le fichier de configuration du serveur CUPS
Une surveillance simple dans un terminal :