Good to Know Database

CentOS 5: CUPS einrichten


1. Einleitung

Das Common UNIX Printing System (kurz CUPS) stellt eine portierbare Druckerschicht für Unix und Linux bereit und wird bei den meisten Linux-Distributionen als Standard Drucksystem verwendet.

In der folgenden Anleitung soll gezeigt werden wie Sie unter CentOS 5 einen Druckserver mit CUPS einrichten. Als Drucker soll hier exemplarisch ein PDF-Drucker eingerichtet werden.

2. CUPS installieren

Bei der Installation von CentOS 5 wird normalerweise das Paket cups automatisch installiert, der CUPS-Daemon in den entstrechenden Runlevels aktiviert und die benötigte Firewall-Regel erstellt. Sollte wider erwartens dieses Paket nicht installiert sein, können Sie dies mit dem folgenden Befehl nachholen.

[root@centos5 ~]# yum install cups

Ob der CUPS-Daemon beim Wechseln des Runlevels automatisch gestartet und beendet wird, können Sie wie folgt überprüfen.

[root@centos5 ~]# chkconfig --list cups
cups            0:Aus   1:Aus   2:Ein   3:Ein   4:Ein   5:Ein   6:Aus

Falls der CUPS-Daemon nicht aktiviert ist, können Sie dies folgendermaßen nachholen.

[root@centos5 ~]# chkconfig cups on

Die notwendigen Firewall-Regeln werden wenn nötig durch folgende Befehle erstellt und in der /etc/sysconfig/iptables gespeichert.

[root@centos5 ~]# iptables -I INPUT -p udp -m udp --dport 631 -j ACCEPT
[root@centos5 ~]# iptables -I INPUT -p tcp -m tcp --dport 631 -j ACCEPT
[root@centos5 ~]# service iptables save

3. CUPS konfigurieren

Die Konfiguration des Common UNIX Printing System erfolgt durch die Datei /etc/cups/cupsd.conf.

[root@centos5 ~]# vi /etc/cups/cupsd.conf

Direkt nach der Installation enthält diese Datei bereits eine Beispielkonfiguration, welche Sie entsprechend anpassen und erweitern können. Im folgenden Listing finden Sie die angepasste Konfiguration, welche in dieser Anleitung verwendet wird.

Hinweis: Die Zugriffsbeschränkungen auf das Webinterface von CUPS erfolgen in der hier beschriebenen Konfiguration nur anhand der IP-Adresse des Clients.

# Maximum size of the log files before they are rotated (0 to disable rotation)
MaxLogSize 2000000

# Logging level for the ErrorLog file
LogLevel info

# Listens to the specified address and port or domain socket path
Listen localhost:631
Listen 192.168.10.1:631
Listen /var/run/cups/cups.sock

# Enable remote printer browsing
Browsing Yes
BrowseOrder allow,deny
BrowseAllow 192.168.10.0/24

# Preserve the job history after they are printed
PreserveJobHistory Off

# Preserve job files after they are printed
PreserveJobFiles Off

# Restrict access to the server
<Location />
  Order allow,deny
  Allow 192.168.10.0/24
</Location>

# Restrict access to the admin pages
<Location /admin>
  Order allow,deny
  Allow 192.168.10.33
</Location>

# Restrict access to configuration files
<Location /admin/conf>
  Order allow,deny
  Allow 192.168.10.33
</Location>

# Set the default printer/job policies
<Policy default>
  # Job-related operations
  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job>
    Order deny,allow
    Allow 192.168.10.33
  </Limit>

  # All administration operations
  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
    Order deny,allow
    Allow 192.168.10.33
  </Limit>

  # All printer operations
  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs CUPS-Reject-Jobs>
    Order deny,allow
    Allow 192.168.10.33
  </Limit>

  # Cancel or authenticate a job
  <Limit Cancel-Job CUPS-Authenticate-Job>
    Order deny,allow
    Allow 192.168.10.33
  </Limit>

  <Limit All>
    Order deny,allow
  </Limit>
</Policy>

Die hier verwendeten Direktiven werden im folgenden noch erläutert.

Damit die Logdateien des CUPS-Daemons (/var/log/cups/*) nicht zu groß werden, wird mit der Direktive MaxLogSize ein Limit festgelegt, bei welchem die Logdateien rotiert und gegebenenfalls entfernt werden sollen. Hier soll dies bei einer Dateigröße von ca. 2MB geschehen.

# Maximum size of the log files before they are rotated (0 to disable rotation)
MaxLogSize 2000000

Welche Meldungen in den Logdateien protokolliert werden sollen kann mit der Direktive LogLevel festgelegt werden. Für die Fehlersuche können Sie den LogLevel auf debug setzen.

# Logging level for the ErrorLog file
LogLevel info

Die Schnittstelle(n) auf welcher der CUPS-Daemon auf eingehende Anfragen warten soll, geben Sie mit der Direktive Listen an. In diesem Beispiel soll CUPS auf dem Loopback-Device 127.0.0.1, auf der Netzwerkschnittstelle 192.168.10.1 und auf dem Socket /var/run/cups/cups.sock lauschen.

# Listens to the specified address and port or domain socket path
Listen localhost:631
Listen 192.168.10.1:631
Listen /var/run/cups/cups.sock

Wird das Remote Printer Browsing durch die Direktive Browsing aktiviert, wird der Drucker in der Netzwerkumgebung angezeigt. Durch BrowseOrder und BrowseAllow können Sie diese Funktion nur für bestimmte Netzwerksegmente zulassen.

# Enable remote printer browsing
Browsing Yes
BrowseOrder allow,deny
BrowseAllow 192.168.10.0/24

Standardmäßig werden die erledigten und abgebrochenen Druckaufträge in der JobHistory abgespeichert und können nur vom Administrator entfernt werden. Damit die Druckaufträge direkt nach der Fertigstellung gelöscht werden, wurde hier die Direktive PreserveJobHistory explizit auf Off gesetzt.

# Preserve the job history after they are printed
PreserveJobHistory Off

Wenn die Direktive PreserveJobFiles aktiviert ist, wird das Dokument eines Druckauftrags gespeichert und kann dadurch jederzeit erneut ausgedruckt werden. Standarmäßig ist hier der Wert Off gesetzt.

# Preserve job files after they are printed
PreserveJobFiles Off

Die folgenden Zeilen regeln den Zugriff auf das CUPS-Webinterface. Der erste Abschnitt erlaubt allen Clients des Subnetzes 192.168.10.0/24 den Zugriff auf das CUPS-Webinterface. Die letzten beiden Abschnitte erlauben nur dem Client mit der IP-Adresse 192.168.10.33 den Zugriff auf den Administrationsbereich des CUPS-Webinterfaces.

# Restrict access to the server
<Location />
  Order allow,deny
  Allow 192.168.10.0/24
</Location>

# Restrict access to the admin pages
<Location /admin>
  Order allow,deny
  Allow 192.168.10.33
</Location>

# Restrict access to configuration files
<Location /admin/conf>
  Order allow,deny
  Allow 192.168.10.33
</Location>

Im letzten Bereich der Konfigurationsdatei werden die Richtlinien für die einzelnen Funktionen des CUPS-Webinterfaces definiert. In der hier verwendeten Konfiguration werden nur dem Client-System mit der IP-Adresse 192.168.10.33 die Berechtigungen zum Verwalten von Druckern und Druckaufträgen erteilt.

# Set the default printer/job policies
<Policy default>
  # Job-related operations
  <Limit Send-Document Send-URI Hold-Job Release-Job Restart-Job Purge-Jobs Set-Job-Attributes Create-Job-Subscription Renew-Subscription Cancel-Subscription Get-Notifications Reprocess-Job Cancel-Current-Job Suspend-Current-Job Resume-Job CUPS-Move-Job>
    Order deny,allow
    Allow 192.168.10.33
  </Limit>

  # All administration operations
  <Limit CUPS-Add-Modify-Printer CUPS-Delete-Printer CUPS-Add-Modify-Class CUPS-Delete-Class CUPS-Set-Default>
    Order deny,allow
    Allow 192.168.10.33
  </Limit>

  # All printer operations
  <Limit Pause-Printer Resume-Printer Enable-Printer Disable-Printer Pause-Printer-After-Current-Job Hold-New-Jobs Release-Held-New-Jobs Deactivate-Printer Activate-Printer Restart-Printer Shutdown-Printer Startup-Printer Promote-Job Schedule-Job-After CUPS-Accept-Jobs CUPS-Reject-Jobs>
    Order deny,allow
    Allow 192.168.10.33
  </Limit>

  # Cancel or authenticate a job
  <Limit Cancel-Job CUPS-Authenticate-Job>
    Order deny,allow
    Allow 192.168.10.33
  </Limit>

  <Limit All>
    Order deny,allow
  </Limit>
</Policy>

4. CUPS-PDF installieren

Durch die Installation des Paketes cups-pdf wird ein PDF-Drucker für das Common UNIX Printing System installiert. cups-pdf verwendet Ghostscript für das Erstellen der PDF-Dateien und speichert diese standardmäßig unter /var/spool/cups-pdf/<username> ab.

Die Installation von cups-pdf erfolgt durch folgenden Befehl.

[root@centos5 ~]# yum install cups-pdf

5. CUPS-PDF konfigurieren

In der Konfigurationsdatei /etc/cups/cups-pdf.conf können Sie unter anderem den Ausgabepfad für die erstellten PDF-Dateien festlegen. In diesem Beispiel sollen die erstellten PDF-Dateien unter /data/pdf abgelegt werden.

Öffnen Sie dazu die Konfigurationsdatei mit einem Editor.

[root@centos5 ~]# vi /etc/cups/cups-pdf.conf

Suchen Sie hier die Direktiven Out und AnonDirName. Durch diese wird festgelegt, in welchem Verzeichnis die erstellten PDF-Dateien eines bakannten beziehungsweise eines anonymen Benutzers abgelegt werden. Passen Sie die beiden Direktiven wie folgt an.

Out /data/pdf/${USER}
AnonDirName /data/pdf/Anonymous

Jeder Druckauftrag erhält vom CUPS eine eindeutige Auftragsnummer. Damit diese Auftragsnummer als Präfix an den PDF-Dateinamen gehängt wird, setzen Sie die Direktive Label auf den Wert 1. Dadurch verhindern Sie, dass ältere PDF-Dateien mit dem selben Titel überschrieben werden.

Label 1

Nachdem Sie die Konfigurationsdatei angepasst haben, müssen Sie noch das Ausgabeverzeichnis erstellen.

[root@centos5 ~]# mkdir -p /data/pdf

6. CUPS-PDF vs. SELinux

Bei CentOS 5 ist standardmäßig SELinux (Security Enhanced Linux) aktiviert und läuft im Enforcing Modus. Falls Sie SELinux nicht deaktivert haben (siehe SELinux: SELinux deaktivieren) oder im Permissive Modus betreiben (siehe SELinux: SELinux-Betriebsmodus ändern), müssen Sie einen entsprechenden Security Context für das Verzeichnis /data anlegen, damit cups-pdf darauf zugreifen darf.

Erstellen Sie zuerst einen neuen Security Context für das Verzeichnis /data. Dieser wird von semanage in der Datei /etc/selinux/targeted/contexts/files/file_contexts.local abgelegt.

[root@centos5 ~]# semanage fcontext -a -t print_spool_t '/data(/.*)?'

Anschließend versehen Sie das Verzeichnis /data und dessen Inhalt mit dem neuen Security Context.

[root@centos5 ~]# restorecon -R -v /data
restorecon reset /data context root:object_r:default_t:s0->system_u:object_r:print_spool_t:s0
restorecon reset /data/pdf context root:object_r:default_t:s0->system_u:object_r:print_spool_t:s0

Überprüfen können Sie dies mit den folgenden Befehlen.

[root@centos5 ~]# ls -ldZ /data/
drwxr-xr-x  root root system_u:object_r:print_spool_t  /data/
[root@centos5 ~]# ls -ldZ /data/pdf/
drwxr-xr-x  root root system_u:object_r:print_spool_t  /data/pdf/

Hinweis: Sollten Sie SELinux im Enforcing Modus betreiben und Probleme mit cups-pdf auftreten, überprüfen Sie bei der Fehlersuche auch die Logdatei /var/log/audit/audit.log.

7. CUPS neu starten

Nachdem Sie alle Änderungen an den Konfigurationsdateien vorgenommen haben, starten Sie den CUPS-Daemon neu oder laden nur die Konfigurationsdateien neu.

[root@centos5 ~]# service cups restart

[root@centos5 ~]# service cups reload

8. CUPS Webinterface

Wie bereits erwähnt bietet das Common UNIX Printing System ein Webinterface an, mit welchem Sie bequem weitere Drucker einrichten und die bestehenden Drucker verwalten können. Das Webinterface erreichen Sie mit einem Web-Browser unter der Adresse http://<yourserver>:631. Beachten Sie jedoch, dass je nach Konfiguration nicht jeder Client Zugriff auf das Webinterface oder Teile davon erhält.

Auf die Benutzung des Webinterfaces soll hier nicht näher eingegangen werden.

9. Weiterführende Tutorials

Netzwerk-PDF-Drucker unter Ubuntu 10.04 einrichten
Netzwerk-PDF-Drucker unter Windows XP einrichten
Netzwerk-PDF-Drucker unter Windows 7 einrichten


Dieser Eintrag wurde am 03.06.2010 erstellt und zuletzt am 24.01.2016 bearbeitet.

Direkter Link zu dieser Seite: http://www.gtkdb.de/index_33_1001.html

[ Zur Startseite ]   [ Zur Kategorie ]


Valid XHTML 1.0 Transitional Valid CSS Valid Atom 1.0

© 2004-2018 by Georg Kainzbauer