Common Unix Printing System

Aus Mikiwiki
Wechseln zu: Navigation, Suche

Das Drucksystem Common Unix Printing System / CUPS ermöglicht das Drucken unter den verschiedenen unixoiden Betriebssystemen.

Konzept

CUPS verwendet das Client-Server-Modell:

  • Der Druckserver (der Daemon cupsd) nimmt den Druckauftrag entgegen und leitet ihn an das gewünschte Gerät weiter. Ist dieses gerade beschäftigt, so wandert der Drcukauftrag in eine Warteschlange.
  • Der Druckclient schickt den Druckauftrag. Alle Rechner, welche die Druckdienste in Anspruch nehmen, werden in der CUPS-Terminologie als Clients bezeichnet. Auf ihnen muss lediglich CUPS laufen - die Einrichtung von Druckern ist hier nicht nötig.

Der Druckauftrag eines Druckclient wird an einen Scheduler gesendet, der die zu druckenden Daten durch ein Filtersystem in das portable Postscript-Format konvertiert. Diese Daten werden schliesslich zu einem Backend gesendet, welches sie entweder auf dem entsprechenden Drucker druckt (und die Postscript-Daten dafür umwandelt) oder sie über ein Rechnernetz an einen anderen CUPS-Server verschickt.

Der Hauptvorteil von CUPS gegenüber anderen Drucksystemen ist, dass CUPS ein standardisiertes und modularisiertes System ist, das eine Vielzahl von unterschiedlichen Daten auf dem Druckserver versteht (z. B. PDF-Dateien, PNG-Bilder, Latex-Texte). Mit einem solchen System ist plattformübergreifendes Arbeiten in heterogenen Rechnernetzen möglich. In Verbindung mit Samba lassen sich sogar CUPS-Dateien über einen virtuellen Spooler drucken, mit dem Microsoft Windows-Rechner kommunizieren können.

In einem CUPS-Server ist standardmässig ein HTTP-Server integriert. Dies ermöglicht zum einen eine Konfiguration jedes Rechners im Rechnernetz des CUPS-Servers, zum anderen ist so auch eine gewisse Benutzerfreundlichkeit durch ein ohne besondere Software nutzbares Steuerungssystem geschaffen (lediglich ein Webbrowser ist notwendig).

Konfiguration

Die Web-Benutzeroberfläche wird über die Adresse http://localhost:631/ aufgerufen.

Die Konfigurationsdatei von CUPS heisst "/etc/cups/cupsd.conf".

Parameter Beschreibung
BrowseInterval Die Anzahl Sekunden, nach denen cupsd seine Konfiguration übers Netz propagiert. Da sich die angeschlossenen Drucker in einem kleinen Netzwerk nicht oft ändern, kann hier ein höherer Wert als die voreingestellten 30 Sekunden gewählt werden.
BrowseAddress Dahinter folgt die IP-Adresse, an die CUPS seine Informationen sendet. Hier kann ein einzelner Rechner (z. B. "192.168.1.1") oder eine Broadcast-Adresse (z. B. "192.168.0.255") angegeben werden. Im zweiten Fall würden die Konfigurationsinformationen an alle Rechner gesendet, deren IP-Adresse mit "192.168.0" beginnt.
Browsing Zum Einschalten auf "On" setzen. Unter Ubuntu findet sich diese Option in der Datei "/etc/cups/cupsd-browsing.conf".

Der Fernzugriff (hier für "192.168.0.12" sowie alle mit "172.16.66" beginnenden IP-Adressen) wird wie folgt ermöglicht.

<Location>
Allow From 192.168.0.12
Allow From 172.16.66.*
</Location>

Standardmässig erlaubt cupsd den Zugriff auf die Web-Benutzeroberfläche nur von dem Rechner aus, auf dem cupsd läuft. Um auch anderen Benutzern (hier der IP-Adresse "192.168.0.12") den Zugriff auf das Menü "Einrichtungsaufgaben" zu erlauben wird folgendes eingetragen. Der Zugriff ist allerdings erst nach einem Neustart des cupsd möglich.

<Location /admin>
Allow From 192.168.0.12
</Location>

Unter Debian funktioniert das anders: hier muss als Benutzer "root" folgenden Befehl ausführen. Der Zugriff ist auch hier erst nach einem Neustart des cupsd möglich.

# adduser cupsys shadow

Drucken unter MacOS und Windows

CUPS bietet seine Dienste nicht nur Linux-Rechnern an. Dank dem Internet Printing Protocol kommunizieren auch artfremde Systeme mit CUPS - vorausgesetzt, sie sprechen IPP. Hierzu gehört z. B. Mac OS X ab Version 10.2.

Unter Windows sollten die Drucker auf jeden Fall auf dem Server als Modell "RAW" angelegt werden. CUPS leitet dann alle Daten unverarbeitet an den entsprechenden Anschluss weiter. Das setzt voraus, dass auf dem Client ein passender Druckertreiber läuft. Windows-Rechner verwenden dann einfach den Windows-Treiber des Herstellers.

Windows 2000 und Windows XP unterstützen IPP. Vor dem Einrichten eines Druckers muss allerdings ein Fehlverhalten umschifft werden: in die Datei "hosts" muss eine Zeile mit der IP-Adresse des Druckservers und seinem Namen geschrieben werden. Danach wird im Druckerdialogfenster über "Verbindung mit einem Drucker im Internet oder Heim/Firmennetz herstellen" ein neuer Netzwerkdrucker angelegt. Als URL wird http://<Name des Druckservers>/printers/<Druckername unter CUPS> angegeben. Jetzt werden nur noch Windows-Druckertreiber benötigt.

Besitzern von Windows 95, Windows 98 oder Windows ME bleibt ausschliesslich der Weg über Samba. Auf eine Beschreibung hierzu wird verzichtet.

FAQ

Manchmal kann die Weboberfläche von CUPS nur von der Konsole aufgerufen werden. Dann muss der IP-Adresse das Recht gegeben werden, bestimmte Bereiche zu bearbeiten, ausserdem müssen aber auch folgende Einstellungen angepasst werden.

BrowseAllow 192.6.6.*
BrowseAllow 10.0.1.17
BrowseAllow @LOCAL
BrowseDeny All

Im obigen Fall können alle Rechner des Netzes 192.6.6.0/24, der Rechner mit der Ip 10.0.1.17 und die Konsole mit dem Browser auf CUPS zugreifen.

Verwendung

Starten von cupsd unter SUSE Linux.

# rccups start

Starten von cupsd unter Debian.

# /etc/init.d/cupsys start

Freischaltung der Web-Benutzeroberfläche.

# lppasswd -g sys -a root

Prüfen, ob über einen bestimmten Druckeranschluss gedruckt werden kann.

$ echo -en "Hallo\f" > /dev/lp0

Herausfinden von Benutzern, die eine bestimmte Datei verwenden.

$ fuser /dev/lp0

Abschiessen der gefundenen PID.

# kill -9 <PID>

Fehlermeldungen

client-error-forbidden

Zum Verhindern der Meldung "client-error-forbidden" beim Löschen von Druckjobs muss folgendes in die Datei "/etc/cupsd.conf" eingetragen werden.

<Location />
AuthClass System
AuthType Basic
Allow From All
</Location>

Das dann jeweils verlangte Passwort ist das von Benutzer "root".

client-error-not-possible

Die Fehlermeldung "client-error-not-possible" erscheint nur in folgenden Fällen:

  • CUPS oder der aktuelle Benutzer hat keine Schreibberechtigung für den Druckeranschluss
  • Der Benutzer hat seine Quota überschritten

Behebung:

  • # chmod 666 /dev/lp0
  • Abbrechen aller bestehenden Druckprozesse und Druckjobs
  • # /etc/init.d/cups restart

Weblinks

Vorlage:Weblinks1