Drucken im Netz

Aus LinuxUser 12/2006

Drucken im Netz

Verteilter Druck

Drucken auf dem Notebook zu Hause und auf der Arbeit: Ist Cups korrekt eingerichtet, erkennt Ihr Notebook ohne Handarbeit automatisch alle Drucker im Netz, an dem es gerade hängt.

Seit einigen Jahren dient Cups als Standardlösung für das Drucken unter Linux. Die meisten Distributionen erkennen angeschlossene Drucker und richten sie bei der Installation unter Cups ein. Doch die leistungsfähige Software kann weit mehr, als nur direkt am PC angeschlossene Drucker anzusteuern: Cups stellt auf Wunsch die von ihm verwalteten Geräte auch im Netz zur Verfügung.

Gerade für Notebooks ist das praktisch: Egal, ob Sie das Gerät zu Hause oder auf der Arbeit ans Netz anschließen, bei richtiger Konfiguration des lokalen Cups und der Cups-Serverumgebung im Netzwerk zeigen Anwendungen unter Drucken immer die gerade zur Verfügung stehenden Drucker. Dies gilt zumindest für Anwendungen, die Cups unterstützen – also alle KDE-Anwendungen, aber auch OpenOffice und Firefox sowie viele andere.

Anstellen und Filtern

Um unter Linux Textdateien auf einem Drucker auszugeben, genügt der Befehl cat Datei.txt > /dev/lp0 für einen Drucker an der ersten seriellen Schnittstelle oder cat Datei.txt > /dev/usb/lp0 für einen Drucker am USB-Port. Je nach Distribution lauten die Dateinamen für den USB-Anschluss eventuell anders. In der Praxis stellt das Kopieren auf die Device-Datei keine befriedigende Lösung dar, denn diese bleibt gesperrt, solange der Druckvorgang läuft. Ein neuer Druckauftrag lässt sich also erst abschicken, wenn der vorausgehende beendet ist. Außerdem funktioniert diese Vorgehensweise meist nur mit Textdateien.

Um wie gewohnt drucken zu können, bauen die Linux-Distributionen den rudimentären Druckerzugriff über die Device-Datei mit Cups aus:

  • Eine Warteschlange speichert anstehende Aufträge, bis der Drucker wieder bereit ist.
  • Der Befehl Drucken in Linux-Anwendungen stellt die Daten für den Druckauftrag als Postscript-Datei bereit. Die meisten Laserdrucker verarbeiten die Postscript-Befehle direkt, so gut wie allen Tintenstrahlern erfordern jedoch einen weiteren Zwischenschritt: Ghostscript übersetzt die Postscript-Anweisungen in die herstellerspezifische Druckersprache. Drucker, deren Befehlssprache nicht öffentlich dokumentiert ist, bleiben hier meist außen vor und lassen sich nicht unter Linux einsetzen. Cups ruft für jede Druckerwarteschlange Ghostscript mit der zum Drucker passendenen Treiber- oder – im Cups-Jargon – Filterdatei auf, ohne dass sich der Anwender darum kümmern muss.
  • Außerdem sendet Cups bei entsprechender Konfiguration in regelmäßigen Abständen eine Liste der lokalen Warteschlangen in das Netzwerk. Rechner, deren Cups-Server so konfiguriert sind, dass sie auf diese Broadcasts hören, können auf die veröffentlichten Drucker ohne weitere Konfiguration zugreifen.

TIPP

Infos zu Linux-kompatiblen Druckermodellen finden Sie bei Linuxprinting.org [1].

Sobald Sie einen mobilen Rechner an ein Netzwerk anschließen, in dem ein Cups-Server Broadcasts versendet, findet das Notebook die Drucker ohne weitere Konfiguration. Nicht einmal die Netzwerkadresse des Cups-Servers muss bekannt sein. Der Nachteil der großen Flexibilität liegt im Bereich Sicherheit: Nicht nur redlichen Benutzern, auch potentiellen Angreifern liefert diese Methode die Adresse des Cups-Servers und die Namen der installierten Druckerwarteschlangen.

Deswegen kennt Cups noch eine zweite Methode, um Drucker über das Netz zur Verfügung zu stellen: Auch wenn der Server aus Sicherheitsgründen keine Broadcasts versendet, kann der Client seinerseits den Server nach Druckerwarteschlangen fragen (Polling). Hierzu muss er die Netzadresse des Servers kennen. Die Methode funktioniert also nicht ohne vorherige Konfiguration in beliebigen Netzwerken. Dafür muss der Server sich nicht sicherheitstechnisch aus der Deckung wagen. Der Kasten “Stiller Cups-Server” beschreibt die Einrichtung.

Abbildung 1: Cups kennt zwei Methoden, um Drucker im Netz bereit zu stellen: Beim Broadcasting veröffentlicht der Server die lokal installierten Drucker, beim Polling liegt die Initiative beim Client, was eine erhöhte Sicherheit bietet.

Abbildung 1: Cups kennt zwei Methoden, um Drucker im Netz bereit zu stellen: Beim Broadcasting veröffentlicht der Server die lokal installierten Drucker, beim Polling liegt die Initiative beim Client, was eine erhöhte Sicherheit bietet.

Server-Konfiguration

Dieser Artikel geht davon aus, dass die Drucker, die Sie im Netz freigeben möchten, bereits lokal eingerichtet sind und funktionieren. Sollte das noch nicht der Fall sein, hilft ein Artikel aus LinuxUser 11/2005 [2] weiter.

Die Datei /etc/cups/cupsd.conf beziehungsweise /etc/cups/cupsd/browse.conf unter Ubuntu regelt die Freigabe per Broadcasting: Der Parameter BrowseAddress legt fest, unter welcher Netzwerkadresse der Server die lokal vorhandenen Drucker anbietet. Obwohl es in Cups verschiedene Mechanismen gibt, die den Zugriff auf die lokalen Drucker einschränken (siehe Kasten “Cups und Sicherheit”), ist es trotzdem nicht sinnvoll, dass Cups im gesamten Internet bekannt gibt, welche Drucker bei Ihnen zu Hause oder in der Firma stehen.

Folgende Einträge in /etc/cups/cupsd.conf, begrenzen die Freigabe: BrowseAddress 192.168.0.1 veröffentlicht die Warteschlangen nur auf den Rechnern mit den angegebenen IP-Adresse, 192.168.0.* bezieht den Adressbereich von 192.168.0.0 bis 192.168.0.255 ein. Verbindet sich der Cups-Server über zwei unterschiedliche Karten mit dem lokalen Netzwerk und dem Internet, ist es am sinnvollsten, hier einen Netzadapter anzugeben (zum Beispiel BrowseAddress @IF(eth0)). Hier können Sie Mehrere BrowseAddress-Einträge vornehmen. Damit das Browsing überhaupt funktioniert, muss außerdem der Wert des Eintrags Browsing auf On stehen, der Wert von BrowseProtocols muss cups, cups slp oder all lauten. Beides ist in der Cups-Standardeinstellung der Fall.

Das KDE-Kontrollzentrum stellt allen, die nicht die Konfigurationsdateien direkt verändern möchten, unter Angeschlossene Geräte | Drucker ein übersichtliches grafisches Werkzeug zur Konfiguration des Cups-Servers zur Verfügung. Die Option Server einrichten im Pulldown-Menü Druckserver öffnet das Konfigurationswerkzeug (Abbildung 2).

Unter der Kategorie Durchsuchen passen Sie die Broadcast/Browsing-Einstellungen an: Achten Sie darauf, dass die Kontrollkästchen Durchsuchen und CUPS aktiv sind. Alle anderen Einstellungen behalten die Standardwerte. Fügen Sie nun mit dem Button Hinzufügen Adressen, Adressbereiche oder Netzwerkschnittstellen hinzu, an die der Server seine Broadcasts senden soll: Belassen Sie den Typ im sich öffnenden Dialogfeld auf Senden. Für die Adresse oder Netzwerkschnittstelle geben Sie einen der im vorigen Absatz beschriebenen Werte ein.

Beschwert sich das Einrichtungswerkzeug über fehlende Rechte, klicken Sie auf den Button Systemverwaltermodus rechts unten. Suse Linux stellt mit YaST ein weiteres grafisches Werkzeug zur Konfiguration des Cups-Server bereit (siehe Kasten “Netzwerkdrucker mit YaST einrichten”).

Abbildung 2: Das Kde-Kontrollzentrum enthält ein übersichtliches Konfigurationswerkzeug für den Cups-Server.

Abbildung 2: Das Kde-Kontrollzentrum enthält ein übersichtliches Konfigurationswerkzeug für den Cups-Server.

Nun muss nur noch sichergestellt sein, dass der Client auch auf den Server zugreifen darf. Der Kasten “Cups und Sicherheit” erläutert, wie Cups den Zugriff auf die Drucker absichert oder freigibt.

Client-Konfiguration

Wenn der Server Broadcasts aussendet, müssen Sie abschließend nur noch dafür sorgen, dass der Client diese auch auswertet. Am einfachsten haben es hier Anwender von Fedora Core 5: Auf der Desktop-Distribution von Red Hat ist dies ohne weitere Anpassungen der Fall. Unter Ubuntu aktivieren Sie unter System | Administration | Drucker den Eintrag Globale Einstellungen | LAN-Drucker erkennen.

Suse fragt bei der Installation nach, ob Cups auf Warteschlangen im Netz lauschen soll (Abbildung 3). Nachträglich lässt sich dieses Feature über das Drucker-Modul von YaST aktivieren

Abbildung 3: Suse fragt bei der Installation, ob der lokale Cups-Server auf die Broadcasts anderer Cups-Server im Netzwerk Ausschau halten soll.

Abbildung 3: Suse fragt bei der Installation, ob der lokale Cups-Server auf die Broadcasts anderer Cups-Server im Netzwerk Ausschau halten soll.

Netzwerkdrucker mit YaST einrichten

Das Drucker-Modul in YaST ist zwar nicht besonders übersichtlich, bietet jedoch Zugriff auf alle Cups-Funktionen: Es konfiguriert Cups als Client und Server.

Client-Konfiguration

Fügen Sie im Wizard Druckerkonfiguration eine neue Druckerwarteschlange vom Typ Netzwerkdrucker (Einstellung im nächster Dialog) hinzu. Auf die nächste Frage antworten Sie Drucken über CUPS-Netzwerkserver und schließlich CUPS — Broadcasting verwenden. Weiter bringt Sie zum letzten Screen des Wizards. Aktivieren Sie hier IPP-Broadcast-Pakete überwachen (Abbildung 4). Das Kontrollkästchen Firewallport öffnen sorgt dafür, dass die Firewall den Port 631 freigibt. Auf anderen Distributionen stellen Sie wenn nötig per Hand sicher, dass die Firewall Anfragen an Port 631 passieren lässt.

Abbildung 4: Ist das Kontrollkästchen "IPP-Broadcast-Pakete überwachen", richtet YaST den lokalen Cups-Server so ein, dass von anderen Servern veröffentlichte Druckerwarteschlangen auch auf dem eigenen Rechner zur Verfügung stehen.

Abbildung 4: Ist das Kontrollkästchen “IPP-Broadcast-Pakete überwachen”, richtet YaST den lokalen Cups-Server so ein, dass von anderen Servern veröffentlichte Druckerwarteschlangen auch auf dem eigenen Rechner zur Verfügung stehen.

Möchten Sie alle Cups-Server im Netz einbeziehen, klicken Sie nun auf OK. Im Regelfall ist dies das richtige Vorgehen. Möchten Sie jedoch den Empfang von Cups-Broadcasts einschränken, klicken Sie zunächst auf Adressen auswählen. Über Hinzufügen lassen sich Adressen, Adressbereiche oder Interfaces angeben, die Sie explizit einschließen (Option Erlauben von im Dialog IP-Adresse) oder ausschließen möchten (Option Verweigern von).

Wichtig ist außerdem noch die Einstellung Erlauben, Verweigern oder Verweigern, Erlauben im übergeordneten Fenster: Hiermit legen Sie fest, ob ohne explizite Angabe erst einmal alles erlaubt ist (Erlauben, Verweigern) oder ohne ausdrückliche Erlaubnis alle Adressen gesperrt bleiben (Verweigern, Erlauben). Klicken Sie auf OK und beenden Sie auch den übergeordneten Dialog.

Im Fenster Druckerkonfiguration findet sich nun eine neue Warteschlange mit dem Namen unkown und dem Druckermodell unknown, die die unter Umständen wechselnden Drucker im Netzwerk repräsentiert. Beenden wendet die Einstellungen endgültig an.

Öffnen Sie das Druckerkonfigurationsmodul erneut, zeigt sich ein Bug von YaST: Die Warteschlange unknown ist verschwunden und muss erneut eingerichtet werden. So lange Sie das YaST-Modul nicht öffnen, funktioniert das Browsing jedoch. Wenn Sie nach der Einrichtung mit YaST die Konfigurationsdateien per Hand anpassen, beachten Sie, dass YaST die Werte für den Cups-Client nicht in /etc/cups/client.conf einträgt, wie der Name andeutet, sondern am Dateiende der von /etc/cups/cupsd.conf.

Server-Konfiguration

Starten Sie zum Einrichten des Lauschens auf entfernte Drucker das Modul Hardware | Drucker und wählen Sie im Listenfeld rechts unten im Dialog den Eintrag Cups-Einstellungen für Experten und schließlich CUPS-Servereinstellungen.

Stellen Sie sicher, das unter Browsen oben im Fenster Ein gewählt ist und fügen Sie über den Button Hinzufügen der Liste Adressen durchsuchen einen neuen Eintrag hinzu, wenn Sie das Broadcasting auf bestimmte Adressen oder Netzwerkkarten beschränken möchten.

Die Bezeichnung IP-Adressen im sich öffnenden Dialogfeld ist irreführend: Wie im Abschnitt zur manuellen Anpassung von cupsd.conf beschrieben, sind hier IP-Adressen, Adressbereiche und Netzwerkschnittstellen erlaubt.

Cups und Sicherheit

Cups kennt drei Sicherheitsstufen: Anonymer Zugriff ohne Authentifizierung, Authentifizierung über Linux-Accounts und Passwörter sowie ein Cups-eigenes, MD5-verschlüsseltes Authentifizierungsystem.

In einer sicheren, mit einer Firewall geschützten Umgebung, zu der nur vertrauenswürdige Benutzer Zutritt haben, ist der Verzicht auf Authentifizierung für das Drucken (Standardeinstellung) durchaus sinnvoll – zumal ein unerwünschter Zugang auf einen Drucker immer noch weniger schlimm ist, als ein Einbruch auf dem Server selbst.

Die Authentifizierung über Linux-Accounts, Cups’ Standardeinstellung für Verwaltungsaufgaben, befriedigt Sicherheitfanatiker vor allem deswegen nicht, weil Benutzername und Passwörter unverschlüsselt über das Netz übertragen werden. Lediglich die Authentifizierungsmethode digest kann auch in nicht vertrauenswürdigen Umgebungen als sicher gelten: Sie verschlüsselt Passwörter bei der Übertragung. Sollte eines der Passwörter einem Angreifer in die Hand fallen, so bleibt der Schaden begrenzt, weil es sich nur um ein Cups-Passwort und nicht gleichzeitig um ein Login für das Serversystem handelt.

Suse schützt den administrativen Zugriff auf den Cups-Server (also das Einrichten oder Entfernen von Druckern) mit der Digest-Methode. Das Webinterface zu Cups (http://localhost:631) funktioniert daher für Administrationsaufgaben erst nach dem Einrichten eines Cups-Accounts mit dem Befehl lppasswd -a -g sys root. Dieser Account hat nichts mit Linux-Accounts zu tun, beim Passwort muss es sich also auch nicht um das Linux-Root-Passwort handeln.

In cupsd.conf lässt sich der Zugriffschutz für verschiedene Arten von Zugriff getrennt festlegen: Was zwischen den Schlüsselwörtern <Location /> und </Location> steht, betrifft jeden Zugriff auf Cups. Fügen Sie hier die Zeile AuthType Digest ein, so ist der Zugriff nur noch mit einem Login-Passwort-Paar, das Sie zuvor mit lppasswd festgelegt haben, erlaubt. Der Block zwischen <Location /admin> und /Location regelt die Erlaubnis, Drucker einzurichten oder zu entfernen. Der <Location /jobs>-Block gibt an, wer Druckaufträge löschen darf. Auch hier regelt bei Bedarf die Zeile AuthType Digest oder AuthType Basic den Zugriff.

Stiller Cups-Server

Aus Sicherheitsgründen ist es oft unerwünscht, dass ein Cups-Server von sich aus im Netz den Zugriff auf die dem System zur Verfügung stehenden Druckern anbietet. Die Zeile BrowsePoll IP-Adresse in cupsd.conf weist den lokalen Cups-Server an, auf IP-Adresse nach Druckern zu suchen. Auch wenn das dort liegende System keine Informationen zu bereitstehenden Druckern versendet, antwortet der Cups-Server auf explizite Anfragen.

Glossar

Postscript

Eine so genannte Seitenbeschreibungssprache, also eine Sprache, mit der sich ein komplettes Seitenlayout aus Text, Vektorelementen und Bitmaps detailgetreu beschreiben lässt. Postscript wurde 1984 von Adobe entwickelt.

Ghostscript

Postscript-Befehlsinterpreter, der unter anderem zum Einsatz kommt, um die Postscript-Dateien, die Linux-Anwendungen beim Drucken an das System übergeben, zu rastern und so für nicht-postscriptfähige Tintenstrahldrucker verständlich machen.

Infos

[1] Infos zu Linux-kompatiblen Druckermodellen: http://linuxprinting.org/printer_list.cgi

[2] Drucker unter Cups einrichten: Tim Schürmann, “Einer für alle!”, LinuxUser 11/2005, S. 58, http://www.linux-user.de/ausgabe/2005/11/058-cups/

LinuxUser 12/2006 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben