CyberSDF

Reprenez la main sur votre numérique

Partager une imprimante Linux avec CUPS

Imprimante réseau vue de dos, câble Ethernet branché et voyant ambre allumé.

Verdict. Pour partager une imprimante branchée à Linux, utilisez CUPS comme serveur de file et IPP comme transport réseau. Installez CUPS, rendez son écoute accessible sur le LAN, publiez la file choisie, puis ajoutez son adresse depuis chaque poste client. Le port IPP standard est 631/tcp.

Sommaire
  1. Le modèle tient en une file et une adresse IPP
  2. Préparez la machine qui tient l’imprimante
  3. Ouvrez CUPS seulement sur le réseau local
  4. Publiez la file choisie, pas le service entier
  5. Ajoutez l’imprimante depuis un poste Linux
  6. Le chemin Windows n’est pas le même protocole
  7. Vérifiez le trajet avant de relancer un travail
  8. Revenez à l’état précédent sans improviser

Si vous devez d’abord choisir votre base Linux, commencez par les repères Linux et terminal. Le serveur tient la file et parle directement à l’imprimante. Un client envoie son document à cette file, sans accéder au périphérique USB ou réseau. Cette séparation évite de réinstaller la même imprimante sur chaque poste et rend le diagnostic lisible.

Repère mesuré le 17 septembre 2026. La commande getent services ipp renvoie ipp 631/tcp sur une base de services Linux. Servez-vous de cette valeur pour relire l’écoute et le pare-feu, sans en déduire que le service est déjà démarré.

Le modèle tient en une file et une adresse IPP

Une file CUPS possède un nom local, par exemple bureau. Une fois partagée, elle devient accessible à l’adresse ipp://serveur:631/printers/bureau. Le mot serveur désigne le nom DNS ou l’adresse IP de la machine Linux, pas le nom de l’imprimante.

La documentation CUPS sur le partage d’imprimantes distingue bien les deux gestes : activer le partage général avec cupsctl, puis marquer chaque file avec lpadmin. Ne partagez donc pas toutes les files par défaut si une seule doit être visible.

Sur un petit réseau, gardez l’accès au sous-réseau local. L’option --remote-any élargit l’accès à tout réseau capable d’atteindre le serveur ; elle n’est pas nécessaire pour un poste de la même maison ou du même bureau.

Préparez la machine qui tient l’imprimante

Commencez par une file qui imprime déjà localement. Sur Ubuntu ou Debian, installez le service, activez-le et listez les files connues :

sudo apt update
sudo apt install cups
sudo systemctl enable --now cups
lpstat -p -d

Si lpstat affiche une file, retenez son nom exact. Pour une imprimante réseau récente qui parle IPP, CUPS peut la créer avec le pilote générique everywhere :

lpinfo -v
sudo lpadmin -p bureau -E -v ipp://192.168.10.60/ipp/print -m everywhere
lpstat -p bureau -l

Remplacez l’URI par celle annoncée par l’imprimante. La documentation d’administration CUPS présente lpinfo, les URI des backends et le modèle everywhere pour les équipements IPP modernes.

Limite utile. Cette procédure suppose que l’imprimante est déjà reconnue par CUPS ; si elle n’apparaît pas dans lpstat, identifiez d’abord son pilote ou son URI auprès de sa documentation avant de partager la file.

Ouvrez CUPS seulement sur le réseau local

Par défaut, Ubuntu fait écouter CUPS sur la boucle locale. Il faut ajouter l’adresse LAN du serveur dans /etc/cups/cupsd.conf, sans supprimer la ligne de socket présente dans votre installation. Faites une copie avant l’édition :

sudo cp -a /etc/cups/cupsd.conf /etc/cups/cupsd.conf.before-sharing
sudoedit /etc/cups/cupsd.conf

Conservez les directives Listen déjà présentes et ajoutez l’adresse du serveur. Dans cet exemple, le serveur porte l’adresse 192.168.10.60 :

Listen 127.0.0.1:631
Listen /var/run/cups/cups.sock
Listen 192.168.10.60:631

Le chemin du socket peut être /run/cups/cups.sock sur votre distribution. Reprenez celui qui existe déjà au lieu de créer une deuxième ligne au hasard.

L’écoute réseau ne suffit pas : les blocs <Location> contrôlent encore qui peut envoyer des requêtes. Dans le bloc existant <Location />, autorisez le sous-réseau du LAN :

<Location />
  Order allow,deny
  Allow localhost
  Allow 192.168.10.*
</Location>

Remplacez 192.168.10.* par votre réseau réel, par exemple 192.168.1.*. Ne dupliquez pas un bloc déjà présent. La documentation Ubuntu du serveur CUPS détaille aussi les blocs d’administration et de configuration ; gardez-les limités au même réseau, et exigez une authentification pour les opérations d’administration.

Si UFW est actif, ouvrez uniquement le port TCP 631 depuis le LAN :

sudo ufw allow from 192.168.10.0/24 to any port 631 proto tcp

Rechargez CUPS après avoir relu les adresses :

sudo systemctl restart cups

Publiez la file choisie, pas le service entier

Le partage global et la publication d’une file sont deux réglages séparés. Après le redémarrage, activez le partage local puis marquez la file bureau :

sudo cupsctl --share-printers
sudo lpadmin -p bureau -o printer-is-shared=true
lpstat -p bureau -l

La première commande permet aux clients du même sous-réseau de joindre le service. La seconde rend cette file particulière publiable. Pour arrêter le partage de cette seule file, utilisez sudo lpadmin -p bureau -o printer-is-shared=false.

N’ajoutez pas --remote-any pour résoudre un poste qui ne découvre pas la file. Commencez par l’adresse IPP directe et vérifiez le réseau ; élargir l’exposition masque souvent une erreur d’écoute ou de pare-feu.

Ajoutez l’imprimante depuis un poste Linux

L’adresse IPP directe évite la découverte automatique. Sur le client Linux, créez une file locale qui pointe vers la file du serveur :

sudo lpadmin -p bureau-reseau -E \
  -v ipp://192.168.10.60:631/printers/bureau \
  -m everywhere
lpstat -p bureau-reseau -l

Le nom local bureau-reseau peut différer du nom serveur bureau. Ce choix devient utile lorsqu’un poste utilise plusieurs serveurs d’impression. Si la commande répond avec une file active, envoyez un petit document sans toucher à la configuration du serveur :

printf 'Essai CUPS\n' | lp -d bureau-reseau

La commande lp renvoie un identifiant de demande. Cela prouve que le client a remis un travail à sa file locale ; contrôlez ensuite son état avec lpstat -o bureau-reseau et vérifiez la sortie papier.

Pour relire directement le serveur depuis le client, utilisez l’option -h :

lpstat -h 192.168.10.60:631 -p bureau -l

Le chemin Windows n’est pas le même protocole

Un chemin comme \\SERVEUR\IMPRIMANTE appartient à SMB. CUPS seul publie une file en IPP et ne crée pas cette adresse UNC. Pour conserver ce geste dans un environnement Windows, il faut ajouter Samba comme service de partage d’imprimantes et déclarer CUPS comme backend.

La documentation Samba du serveur d’impression montre le paramètre printing = CUPS et la section [printers]. Une fois le partage SMB configuré et son nom connu, l’assistant Windows utilise le nom du serveur et celui de la file. La procédure Microsoft pour ajouter une imprimante partagée décrit les écrans Windows 10 et Windows 11.

Si le poste Windows accepte directement l’IPP pour ce modèle, tentez plutôt l’adresse http://192.168.10.60:631/printers/bureau dans l’ajout manuel d’imprimante. Ne mélangez pas une adresse IPP avec l’assistant SMB : le protocole utilisé détermine le format de l’adresse et le pilote demandé.

Vérifiez le trajet avant de relancer un travail

Un diagnostic court répond à trois questions : CUPS écoute-t-il, la file est-elle partagée, et le client atteint-il cette file ? Sur le serveur :

ss -ltn '( sport = :631 )'
sudo cupsctl
lpstat -p bureau -l

La première ligne doit montrer une écoute sur l’adresse LAN et le port 631, pas seulement 127.0.0.1:631. La sortie de cupsctl permet de relire les réglages de partage ; celle de lpstat donne l’état de la file et son activation.

Depuis le client, commencez par la connexion IPP :

lpstat -h 192.168.10.60:631 -t

Si la commande ne voit pas la file, relisez l’adresse Listen, le bloc <Location /> et la règle UFW. Si elle voit la file mais qu’un travail reste en attente, regardez la file et le journal sans redémarrer au hasard :

lpstat -o bureau
journalctl -u cups --since '-10 min'

Pour le choix de l’ordre de diagnostic, les commandes de diagnostic réseau sous Linux aident à séparer interface, route, résolution de nom et service. Le détail de la lecture d’un service se trouve dans l’article sur systemd et ses journaux.

Revenez à l’état précédent sans improviser

Si l’écoute distante casse après l’édition, restaurez la copie avant partage puis redémarrez CUPS :

sudo cp -a /etc/cups/cupsd.conf.before-sharing /etc/cups/cupsd.conf
sudo systemctl restart cups
sudo cupsctl --no-share-printers
sudo lpadmin -p bureau -o printer-is-shared=false

Cette séquence retire le partage général et la publication de la file. Elle ne supprime pas la file locale ni le pilote ; vous pourrez reprendre l’ajout réseau après avoir identifié la directive qui bloquait.

Pour revenir aux commandes de base avant une nouvelle modification, retrouvez les gestes Linux de repérage et de vérification. Un chemin affiché, une adresse IP et un nom de file doivent être relus avant chaque commande qui écrit.