31.6. Sonderfunktionen in SUSE Linux

Für SUSE Linux wurden mehrere CUPS-Funktionen angepasst. Im Folgenden werden einige der wichtigsten Änderungen beschrieben.

31.6.1. CUPS-Server und Firewall

Es gibt mehrere Möglichkeiten, CUPS als Client eines Netzwerkservers zu konfigurieren.

  1. Sie können für jede Warteschlange auf dem Netzwerkserver eine lokale Warteschlange konfigurieren, über die alle Druckaufträge an den entsprechenden Netzwerkserver weitergeleitet werden. Dieser Ansatz wird in der Regel jedoch nicht empfohlen, da alle Client-Computer neu konfiguriert werden müssen, wenn sich die Konfiguration des Netzwerkservers ändert.

  2. Druckaufträge können auch direkt an einen Netzwerkserver weitergeleitet werden. Für diesen Konfigurationstyp wird kein lokaler CUPS-Daemon ausgeführt. lp oder entsprechende Bibilotheksaufrufe anderer Programme können die Druckaufträge direkt an den Netzwerkserver senden. Diese Konfiguration funktioniert jedoch nicht, wenn Sie gleichzeitig auf einem lokalen Drucker drucken möchten.

  3. Der CUPS-Daemon kann auf IPP-Broadcast-Pakete lauschen, die andere Netzwerkserver senden, um die verfügbaren Warteschlangen bekannt zu geben. Für diese Methode muss Port 631/UDP für eingehende Pakete geöffnet sein.

    Dies ist die beste CUPS-Konfiguration für das Drucken über entfernte CUPS-Server. Es besteht jedoch das Risiko, dass ein Angreifer IPP-Broadcast-Pakete mit Warteschlangen sendet und der lokale Daemon auf eine gefälschte Warteschlange zugreift. Wenn die Warteschlange dann mit demselben Namen wie die andere Warteschlange auf dem lokalen Server angezeigt wird, glaubt der Eigentümer des Auftrags möglicherweise, dass der Auftrag an einen lokalen Server gesendet wird, während er in Wirklichkeit an den Server des Angreifers geleitet wird.

YaST kann CUPS-Server ermitteln, indem es alle Netzwerk-Hosts durchsucht, um zu sehen, ob diese den entsprechenden Dienst anbieten, und durch Lauschen auf IPP-Broadcast-Pakete. Die zweite Methode wird während der Systeminstallation zur Erkennung von CUPS-Servern verwendet, um diese vorschlagen zu können. Hierfür ist es erforderlich, dass Port 631/UDP für eingehende Pakete geöffnet ist. Das Öffnen eines Ports zum Konfigurieren des Zugriffs auf entfernte Warteschlangen mithilfe der zweiten Methode kann ein Sicherheitsrisiko darstellen, da ein Angreifer einen Server anbieten kann, der dann möglicherweise von den Benutzern angenommen wird.

Die Standardeinstellung der im Dialogfeld "Vorschlag" angegebenen Firewall ist, IPP-Broadcast-Pakete auf allen Schnittstellen abzulehnen. Daher können die zweite Methode für das Erkennen von entfernten Warteschlangen und die dritte Methode für den Zugriff auf entfernte Warteschlangen nicht funktionieren. Aus diesem Grund muss die Firewall-Konfiguration so geändert werden, dass eine der Schnittstellen als intern markiert wird, wodurch der Port standardmäßig geöffnet ist, oder indem der Port einer externen Schnittstelle explizit geöffnet wird. Aus Sicherheitsgründen sollten überhaupt keine Ports standardmäßig geöffnet werden.

Die vorgeschlagene Firewall-Konfiguration muss geändert werden, damit CUPS entfernte Warteschlangen während der Installation erkennen und während des normalen Betriebs vom lokalen System aus auf entfernte Server zugreifen kann. Alternativ kann der Benutzer CUPS-Server erkennen, indem er die lokalen Netzwerk-Hosts aktiv durchsucht oder alle Warteschlangen manuell konfiguriert. Aufgrund der am Anfang dieses Abschnitts erwähnten Gründe wird diese Methode nicht empfohlen.

31.6.2. Änderungen am CUPS-Druckdienst

Diese Änderungen wurden ursprünglich in SUSE Linux 9.1 vorgenommen.

31.6.2.1. cupsd wird als Benutzer lp ausgeführt

Beim Start ändert sich cupsd vom Benutzer root in den Benutzer lp. Dies bietet einen viel höheren Grad an Sicherheit, da der CUPS-Druckdienst nicht mit uneingeschränkten Berechtigungen, sondern nur mit den für den Druckdienst erforderlichen Berechtigungen ausgeführt wird.

Die Authentifizierung (die Passwortüberprüfung) kann nicht über /etc/shadow ausgeführt werden, da lp keinen Zugriff auf /etc/shadow hat. Stattdessen muss die CUPS-spezifische Authentifizierung über /etc/cups/passwd.md5 verwendet werden. Zu diesem Zweck muss ein CUPS-Administrator mit der CUPS-Administrationsgruppe sys und einem CUPS-Passwort in /etc/cups/passwd.md5 eingegeben werden. Geben Sie hierzu als root Folgendes ein:

lppasswd -g sys -a CUPS-Admin-Name

Diese Einstellung ist außerdem wichtig, wenn Sie das Web-Administrations-Frontend (CUPS) oder das Werkzeug für die Druckeradministration (KDE) verwenden möchten.

Wenn cupsd als lp ausgeführt wird, kann /etc/printcap nicht generiert werden, da lp nicht berechtigt ist, Dateien in /etc/ zu erstellen. Daher generiert cupsd die Datei /etc/cups/printcap. Um sicherzustellen, dass Anwendungen, die Warteschlangennamen in /etc/printcap nur lesen können, weiter ordnungsgemäß funktionieren, ist /etc/printcap ein symbolischer Link, der auf /etc/cups/printcap verweist.

Wenn cupsd als lp ausgeführt wird, kann Port 631 nicht geöffnet werden. Daher kann cupsd mit dem Befehl rccups reload nicht neu geladen werden. Verwenden Sie stattdessen rccups restart.

31.6.2.2. Allgemeinere Funktionalität für BrowseAllow und BrowseDeny

Die festgelegten Zugriffsberechtigungen für BrowseAllow und BrowseDeny gelten für alle Pakettypen, die an cupsd gesendet werden. Die Standardeinstellungen in /etc/cups/cupsd.conf lauten wie folgt:

BrowseAllow @LOCAL
BrowseDeny All

und

<Location /> 
  Order Deny,Allow 
  Deny From All 
  Allow From 127.0.0.1 
  Allow From 127.0.0.2 
  Allow From @LOCAL
</Location>

Auf diese Weise können nur LOCAL-Hosts auf cupsd auf einem CUPS-Server zugreifen. LOCAL-Hosts sind Hosts, deren IP-Adressen zu einer Nicht-PPP-Schnittstelle (Schnittstellen, deren IFF_POINTOPOINT-Flags nicht gesetzt sind) und zum selben Netzwerk wie der CUPS-Server gehören. Pakete von allen anderen Hosts werden sofort abgelehnt.

31.6.2.3. cupsd standardmäßig aktiviert

In einer Standardinstallation ist cupsd automatisch aktiviert und ermöglicht so den Zugriff auf die Warteschlangen des CUPS-Netzwerkservers, ohne dass ein weiteres Eingreifen erforderlich ist. Die Einstellungen in Abschnitt 31.6.2.1, „cupsd wird als Benutzer lp ausgeführt“ und Abschnitt 31.6.2.2, „Allgemeinere Funktionalität für BrowseAllow und BrowseDeny sind wichtige Voraussetzungen für diese Funktion, da anderenfalls die Sicherheit für eine automatische Aktivierung von cupsd nicht ausreichend wäre.

31.6.3. PPD-Dateien in unterschiedlichen Paketen

Die YaST-Druckerkonfiguration richtet die Warteschlangen für CUPS auf dem System nur unter Verwendung der in /usr/share/cups/model/ installierten PPD-Dateien ein. Um die geeigneten PPD-Dateien für das Druckermodell zu finden, vergleicht YaST während der Hardware-Erkennung den Hersteller und das Modell mit den Herstellern und Modellen, die auf dem System in den PPD-Dateien unter /usr/share/cups/model/ enthalten sind. Zu diesem Zweck generiert die YaST-Druckerkonfiguration eine Datenbank mit den Hersteller- und Modelldaten, die aus den PPD-Dateien extrahiert werden. Wenn Sie in der Liste der Hersteller und Modelle einen Drucker auswählen, erhalten Sie die PPD-Dateien, die dem Hersteller und dem Modell entsprechen.

Die Konfiguration, die nur PPD-Dateien und keine weiteren Informationsquellen verwendet, hat den Vorteil, dass die PPD-Dateien in /usr/share/cups/model/ nach Bedarf geändert werden können. Die YaST-Druckerkonfiguration erkennt die Änderungen und generiert die Hersteller- und Modelldatenbank neu. Wenn Sie beispielsweise nur mit PostScript-Druckern arbeiten, sind die Foomatic-PPD-Dateien im Paket cups-drivers oder die Gimp-Print-PPD-Dateien im Paket cups-drivers-stp in der Regel nicht erforderlich. Die PPD-Dateien für die PostScript-Drucker können direkt in /usr/share/cups/model/ kopiert werden (wenn sie nicht bereits im Paket manufacturer-PPDs vorhanden sind), um eine optimale Konfiguration der Drucker zu erzielen.

31.6.3.1. CUPS-PPD-Dateien im Paket cups

Die generischen PPD-Dateien im Paket cups wurden durch angepasste Foomatic-PPD-Dateien für PostScript-Drucker der Level 1 und Level 2 ergänzt:

  • /usr/share/cups/model/Postscript-level1.ppd.gz

  • /usr/share/cups/model/Postscript-level2.ppd.gz

31.6.3.2. PPD-Dateien im Paket cups-drivers

Der Foomatic-Druckerfilter foomatic-rip wird in der Regel zusammen mit Ghostscript für Nicht-PostScript-Drucker verwendet. Die entsprechenden Foomatic-PPD-Dateien haben die Einträge *NickName: ... Foomatic/Ghostscript driver und *cupsFilter: ... foomatic-rip. Diese PPD-Dateien befinden sich im Paket cups-drivers.

YaST bevorzugt eine Foomatic-PPD-Datei, wenn eine Foomatic-PPD-Datei mit dem Eintrag *NickName: ... Foomatic ... (recommended) dem Druckermodell entspricht und das Paket manufacturer-PPDs keine geeignetere PPD-Datei enthält.

31.6.3.3. Gimp-Print-PPD-Dateien im Paket cups-drivers-stp

Für viele Nicht-PostScript-Drucker kann an Stelle von foomatic-rip der CUPS-Filter rastertoprinter verwendet werden. Dieser Filter und die entsprechenden Gimp-Print-PPD-Dateien befinden sich im Paket cups-drivers-stp. Die Gimp-Print-PPD-Dateien befinden sich in /usr/share/cups/model/stp/ und haben die Einträge *NickName: ... CUPS+Gimp-Print und *cupsFilter: ... rastertoprinter.

31.6.3.4. PPD-Dateien von Druckerherstellern im Paket manufacturer-PPDs

Das Paket manufacturer-PPDs enthält PPD-Dateien von Druckerherstellern, die unter einer ausreichend freien Lizenz veröffentlicht werden. PostScript-Drucker sollten mit der entsprechenden PPD-Datei des Druckerherstellers konfiguriert werden, da diese Datei die Verwendung aller Funktionen des PostScript-Druckers ermöglicht. YaST bevorzugt eine PPD-Datei aus dem Paket manufacturer-PPDs, wenn folgende Bedingungen erfüllt sind:

  • Der während der Hardware-Erkennung ermittelte Hersteller und das Modell entsprechen dem Hersteller und dem Modell in einer PPD-Datei im Paket manufacturer-PPDs.

  • Die PPD-Datei im Paket manufacturer-PPDs ist die einzige geeignete PPD-Datei für das Druckermodell oder es ist eine Foomatic-PPD-Datei mit dem Eintrag *NickName: ... Foomatic/Postscript (recommended) vorhanden, die dem Druckermodell ebenfalls entspricht.

YaST verwendet demzufolge in den folgenden Fällen keine PPD-Datei aus dem Paket manufacturer-PPDs:

  • Die PPD-Datei im Paket manufacturer-PPDs entspricht nicht dem Hersteller und dem Modell. Dies kann der Fall sein, wenn das Paket manufacturer-PPDs nur eine PPD-Datei für ähnliche Modelle enthält, z. B. wenn für die einzelnen Modelle einer Modellserie keine separaten PPD-Dateien vorhanden sind, sondern die Modellbezeichnungen in der PPD-Datei beispielsweise in Form von Funprinter 1000 series angegeben werden.

  • Die Verwendung der Foomatic-PostScript-PPD-Datei wird nicht empfohlen. Der Grund dafür ist möglicherweise, dass das Druckermodell im PostScript-Modus nicht effizient genug arbeitet, weil es in diesem Modus beispielsweise aufgrund von zu wenig Speicher unzuverlässig oder wegen seines zu schwachen Prozessors zu langsam arbeitet. Des Weiteren unterstützt der Drucker möglicherweise standardmäßig kein PostScript, da die PostScript-Unterstützung nur als optionales Modul verfügbar ist.

Wenn eine PPD-Datei im Paket manufacturer-PPDs für einen PostScript-Drucker geeignet ist, YaST diesen aus den genannten Gründen aber nicht konfigurieren kann, müssen Sie das entsprechende Druckermodell manuell in YaST auswählen.