LINUX:Gestion d'imprimantes
But
Pour pouvoir envoyer un document à l'impression, il faut installer un service d'impression: CUPS.
Ce service sert à:
- Ajouter une nouvelle imprimante à gérer (ou la supprimer)
- Envoyer un document à imprimer vers l'imprimante désirée
- Gérer les files d'impression
Ce service doit être présent aussi bien sur un serveur que sur une station de travail dès lors que l'impression est concernée.
Installation
Le paquet suivant doit être installé s'il ne l'est pas:
dnf install cups
D'autres paquets sont conseillés:
- pour obtenir les pilotes (ou drivers) des imprimantes HP
dnf install hplip
- pour générer des fichiers de type PDF à partir d'un document quelconque
dnf install cups-pdf
Configuration
Les fichiers de configuration se trouvent dans le dossier "/etc/cups".
Il convient de passer en revue le fichier "/etc/cups/cupsd.conf".
Ce service CUPS vient avec un interface Web d'administration.
Ce service, à la base, n'est utilisable que sur la machine locale, ce qui est suffisant sur une station de travail autonome. Mais en tant qu'administrateur, on souhaite l'utiliser à distance, ce pour quoi est conçu un interface Web.
En premier lieu, nous allons l'ouvrir à notre réseau pour le protocole IPV4. La ligne:
... Listen localhost:631 ...
est à adapté comme suit:
... Listen 0.0.0.0:631 ...
Dès que l'on lancera ce service on verra apparaître le port 631 à l'écoute:
netstat -nltp | grep 631
qui donnera:
tcp 0 0 0.0.0.0:631 0.0.0.0:* LISTEN 1334/cupsd
Ensuite il faut permettre à une ou plusieurs adresses IP de notre réseau local d'y accéder.
On ajoute des lignes en gras suivantes:
... <Location /> Order allow,deny Allow From 192.168.1.2 </Location> <Location /admin> AuthType Default Require user @SYSTEM Order allow,deny Allow From 192.168.1.2 </Location> <Location /admin/conf> AuthType Default Require user @SYSTEM Order allow,deny Allow From 192.168.1.2 </Location> <Location /admin/log> AuthType Default Require user @SYSTEM Order allow,deny Allow From 192.168.1.2 </Location> ...
Pour que la machine "192.168.1.2" puisse accéder à l'interface Web.
Enfin on impose l'utilisation du cryptage Web (HTTPS):
... DefaultEncryption Required ...
Il va utiliser le certificat auto-signé généré automatiquement. Mais il est possible de configurer un certificat comme décrit dans l'article sur la Sécurité via les certificats.
Activer et lancer le service
Le service à lancer est CUPS. La première commande active le service, son socket et son chemin pour qu'à chaque démarrage du serveur, le service se lance. La seconde lance directement le service. La troisième relance le service.
systemctl enable cups systemctl start cups systemctl restart cups
Il est conseillé d'activer le service Avahi si on désire rechercher des imprimantes sur le réseau:
systemctl enable avahi-daemon systemctl start avahi-daemon systemctl restart avahi-daemon
Configurer le mur de feu ou FireWall
Vous avez sûrement activé le FireWall du serveur. Comme c'est un service proposé, il faut ouvrir diverses portes.
En premier, ce service propose un interface Web d'administration sur le port TCP/631. Comme spécifié ci-dessus, on ne l'a ouvert que pour une seule machine de notre réseau local. Et d'autre part, il va aussi écouter le réseau à la recherche d'autres services d'impression disponibles (mDNS, port UDP/5353). Signalons que les imprimantes réseaux, spécialement de la marque HP, sont accessibles via les ports de TCP/9100 à TCP/9102 et envoient des informations en utilisant le protocole SNMP (port UDP/161).
Nous utilisons IPTABLES; voici les lignes à ajouter:
-A INPUT -p tcp -m tcp --dport 631 -s 192.168.1.2 -m conntrack --ctstate NEW -j ACCEPT -A INPUT -p udp -m udp --dport 5353 -s 192.168.1.0/24 -m conntrack --state NEW -j ACCEPT -A INPUT -p tcp -m tcp --sport 161 -s 192.168.1.0/24 -m conntrack --ctstate NEW -j ACCEPT
Projet
Pour illustrer diverses utilisations, nous avons regroupé différents cas dans un projet selon le schéma ci-dessous.

Nous avons:
- une machine Linux B secondaire
- avec son service CUPS
- qui utilise une imprimante parallèle reliée à cette machine Linux
- avec son service CUPS
- une machine Linux A qui sera au centre de notre infrastructure d'impression.
- avec le service CUPS
- qui comprend une imprimante virtuelle PDF
- qui utilise une imprimante USB reliée à cette machine Linux
- qui envoie ses impressions à une imprimante réseau
- qui envoie ses impressions à l'imprimante parallèle via la machine Linux B
- avec le service SAMBA (protocole SMB)
- avec le service CUPS
- une machine MS Windows
- client SMB du service SAMBA de la machine Linux A
- qui envoie ses impressions au service CUPS de la machine Linux A
- client SMB du service SAMBA de la machine Linux A
Avec cette infrastructure:
- la machine Linux B peut imprimer localement sous Linux
- la machine Linux A peut imprimer sous Linux sur toutes les imprimantes locales et réseaux
- la machine MS Windows peut imprimer sous Windows sur toutes les imprimantes
Ajout d'imprimantes
Nous allons utiliser l'interface Web. Nous y accédons en utilisant un explorateur Internet tel Firefox. Notre serveur s'appelant "serverdb.home.dom" nous utilisons l'URL suivante: https://serverdb.home.dom:631/admin
Nous obtenons l'écran suivant à partir duquel nous allons ajouter diverses imprimantes de divers types.
Un nom d'utilisateur et son mot de passe sera demandé en guise d'authentification. Vous donnez le nom d'un utilisateur de la machine Linux hébergeant ce service CUPS qui a les droits administrateurs.

Remarquez que l'option "Partager les imprimantes connectées à ce système" est cochée (sur la machine Linux B), ce qui nous permettra dans le cas, de connecter la machine Linux A à l'imprimante de la machine Linux B.
Ajout d'une imprimante virtuelle PDF
La première sera une imprimante virtuelle qui va générer des fichiers PDF. Nous le faisons sur la machine Linux A mais on peut le faire aussi sur la machine Linux B.
Ajout d'une imprimante sur le port parallèle
Sur notre vieille machine Linux B, nous avons encore un port parallèle et aussi une vieille imprimante laser Brother. Nous allons l'ajouter.
Ajout d'une imprimante sur le port USB
Actuellement la majorité des imprimantes se connectent via le port USB. Nous allons ajouter une imprimante HP sur la machine Linux A.
Ajout d'une imprimante réseau
Beaucoup d'imprimantes se connectent directement sur le réseau câble ou plus souvent Wifi. Notre imprimante HP a aussi un port Wifi. Nous allons l'ajouter sur la machine Linux A.
Ajout d'une imprimante distante d'une autre machine
Sur la machine Linux B, nous avions ajouté une imprimante locale (sous-point deux ci-dessus). A partie de la machine Linux B, nous allons l'ajouter. Les impressions de la machine Linux A seront donc renvoyés vers cette machine Linux B qui se chargera de l'imprimer.
Fichiers de configuration des imprimantes
Toute la configuration des diverses imprimantes ajoutées ci-dessus est ajoutée dans le fichier "/etc/cups/printers.conf". Pour chaque imprimante, est généré un pilote portant le même nom que celui de l'imprimante; ils se retrouvent dans le dossier "/etc/cups/ppd" et ont l'extension ".ppd".
Un autre fichier synthétique "printcap" est aussi créé. On y retrouve chaque imprimante, une par ligne.
Son emplacement diffère selon les distributions:
- sur Linux Fedora, il se trouve dans le dossier "/etc",
- sur Linux Mint, il se trouve dans le dossier "/run/cups/printcap"
Son emplacement peut être modifié via une option du fichier "/etc/cups/cups-files.conf". Par exemple, l'extrait ci-dessous le met dans son emplacement traditionnel:
... Printcap /etc/printcap ...
Il est inutile de le modifier manuellement car il est généré automatiquement par le service CUPS.
Ajout et gestion d'imprimantes sous Linux sur une station de travail
L'ajout et la gestion d'imprimantes sous Linux sur une station de travail peut se faire comme ci-dessus via l'interface Web mais une gestion interne est intégrée à l'interface de fenêtrage de Linux (Gnome, Cinammon,...).
Par exemple, sous l'interface Cinammon, on trouve en bas à droite, une icône représentant une imprimante. Si on clique dessus, le liste des imprimantes apparaît.

Si on y sélectionne, la première entrée de la liste "Imprimantes", une fenêtre s'ouvre reprenant toutes les imprimantes configurées.

La suite est proche dans sa conception, de l'interface Web de CUPS. Par exemple, voici le contenu de la fenêtre pour l'ajout d'une imprimante accessible via le bouton "Ajouter".

Utilisation des imprimantes du serveur
Si vous avez configuré des imprimantes gérées sur le serveur SAMBA par le service CUPS, elles peuvent être utilisées par les clients SMB comme Microsoft Windows.