Drucken unter Linux
Das Drucksystem unter Linux basiert auf CUPS (Common Unix Printing System), entwickelt von Apple und heute der Standard auf allen gängigen Distributionen. CUPS abstrahiert Drucker als Warteschlangen (Queues), spricht das IPP-Protokoll (Internet Printing Protocol) und unterstützt Netzwerkdrucker, USB-Drucker und virtuelle Drucker (z. B. PDF).
Anwendung │ lp / lpr / Druckdialog ▼CUPS (cupsd) │ filtert Job → richtiges Format für Drucker ▼Drucker-Backend (USB, IPP, Socket, ...) │ ▼DruckerInstallation
Abschnitt betitelt „Installation“CUPS ist auf Desktop-Systemen meist vorinstalliert. Auf Servern:
# Debian/Ubuntusudo apt install cups cups-client
# RHEL/Fedorasudo dnf install cups cups-client
# openSUSEsudo zypper install cupssudo systemctl enable --now cupssystemctl status cupsWeb-Interface
Abschnitt betitelt „Web-Interface“CUPS bringt ein Web-Interface mit, das auf Port 631 lauscht:
http://localhost:631Über das Web-Interface lassen sich Drucker hinzufügen, konfigurieren und
Druckjobs verwalten. Für administrative Aufgaben wird nach dem root-Passwort
(oder einem Benutzer in der Gruppe lpadmin) gefragt.
Drucker einrichten
Abschnitt betitelt „Drucker einrichten“Automatische Erkennung
Abschnitt betitelt „Automatische Erkennung“CUPS erkennt viele USB- und Netzwerkdrucker automatisch. Im Web-Interface unter Administration → Drucker hinzufügen oder:
# Verfügbare Drucker suchenlpinfo -v# zeigt alle erkannten Geräte und Backends:# network ipp://drucker.local/ipp/print# direct usb://Canon/MF230%20SeriesDrucker über die Kommandozeile hinzufügen
Abschnitt betitelt „Drucker über die Kommandozeile hinzufügen“# Netzwerkdrucker (IPP)sudo lpadmin \ -p "BueroDrucker" \ -E \ -v "ipp://192.168.1.100/ipp/print" \ -m everywhere# -p: Name der Queue# -E: Queue aktivieren und freigeben# -v: Geräte-URI# -m everywhere: IPP Everywhere / Driverless (für moderne IPP-Drucker)
# USB-Druckersudo lpadmin -p "MeinDrucker" -E -v "usb://Canon/MF230" -m everywhereAls Standard-Drucker setzen
Abschnitt betitelt „Als Standard-Drucker setzen“sudo lpadmin -d BueroDrucker # systemweitlpoptions -d BueroDrucker # für den aktuellen BenutzerDruckertreiber
Abschnitt betitelt „Druckertreiber“Moderne Drucker unterstützen IPP Everywhere (driverless printing) — kein
separater Treiber nötig, -m everywhere reicht.
Für ältere Drucker:
# Verfügbare Treiber suchenlpinfo -m | grep -i canonlpinfo -m | grep -i "laserjet"
# Drucker mit PPD-Treiber einrichtensudo lpadmin -p "AltDrucker" -E \ -v "socket://192.168.1.101:9100" \ -m "drv:///sample.drv/generpcl.ppd"Für Drucker ohne freien Treiber gibt es oft Hersteller-PPDs oder das
Paket printer-driver-*:
apt search printer-driver # Debian/Ubuntudnf search cups-filters # RHEL/FedoraDrucker verwalten
Abschnitt betitelt „Drucker verwalten“lpstat -p # alle Drucker und Statuslpstat -d # Standard-Druckerlpstat -s # Kurzübersicht
sudo cupsenable BueroDrucker # Drucker aktivierensudo cupsdisable BueroDrucker # Drucker deaktivierensudo cupsaccept BueroDrucker # Jobs annehmensudo cupsreject BueroDrucker # Jobs ablehnen
sudo lpadmin -x BueroDrucker # Drucker löschenCUPS-Konfiguration
Abschnitt betitelt „CUPS-Konfiguration“/etc/cups/cupsd.conf # CUPS-Daemon-Konfiguration/etc/cups/printers.conf # installierte Drucker/etc/cups/ppd/ # PPD-Dateien der Drucker/var/log/cups/ # Access- und Error-LogRemote-Zugriff aktivieren
Abschnitt betitelt „Remote-Zugriff aktivieren“Der einfachste Weg ist cupsctl:
# Remote-Zugriff, Remote-Administration und Drucker-Freigabe aktivierensudo cupsctl --remote-admin --remote-any --share-printerssudo systemctl restart cupsAlternativ manuell in /etc/cups/cupsd.conf. Wichtig: Es gibt drei separate
Location-Blöcke, die alle angepasst werden müssen — nur / freizuschalten
reicht nicht für die Admin-Seiten:
Listen *:631
# Web-Interface allgemein<Location /> Order allow,deny Allow @LOCAL</Location>
# Admin-Seiten — ohne diesen Block bleibt der Zugriff verweigert<Location /admin> Order allow,deny Allow @LOCAL</Location>
# Admin-Konfiguration<Location /admin/conf> AuthType Default Require valid-user Order allow,deny Allow @LOCAL</Location>sudo systemctl restart cups@LOCAL in virtuellen Maschinen
Abschnitt betitelt „@LOCAL in virtuellen Maschinen“@LOCAL matcht Verbindungen vom gleichen Subnetz wie eine der eigenen
Netzwerkschnittstellen. Bei VM-Zugriff vom Host hängt das vom Netzwerk-Modus ab:
| VM-Netzwerk-Modus | Host-IP aus VM-Sicht | @LOCAL? |
|---|---|---|
| NAT | 10.0.2.2 (NAT-Gateway) | ✓ (gleicher /24) |
| Host-only | 192.168.x.1 | ✓ (gleicher Subnet) |
| Bridge | echte LAN-IP | ✓ wenn gleicher Subnet |
Bei Problemen: Allow all temporär zum Testen setzen, dann wieder einschränken.