Linux - Netzwerk und Serveradminstration Drucker Server: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 88: Zeile 88:
 
;AppArmor für das cups-pdf-Backend deaktivieren
 
;AppArmor für das cups-pdf-Backend deaktivieren
 
Das Backend <code>cups-pdf</code> ruft intern Ghostscript auf, das je nach Dokument diverse Systemdateien liest (Fonts, Papierformate, Temp-Verzeichnisse). Eine Freigabe einzelner Pfade im <code>usr.sbin.cupsd</code>-Profil reicht nicht aus, da Ghostscript unter einem eigenen Kind-Profil läuft (<code>/usr/lib/cups/backend/cups-pdf</code>). Statt jede einzelne Datei freizugeben, wird dieses Profil deaktiviert:
 
Das Backend <code>cups-pdf</code> ruft intern Ghostscript auf, das je nach Dokument diverse Systemdateien liest (Fonts, Papierformate, Temp-Verzeichnisse). Eine Freigabe einzelner Pfade im <code>usr.sbin.cupsd</code>-Profil reicht nicht aus, da Ghostscript unter einem eigenen Kind-Profil läuft (<code>/usr/lib/cups/backend/cups-pdf</code>). Statt jede einzelne Datei freizugeben, wird dieses Profil deaktiviert:
*sudo ln -sf /etc/apparmor.d/usr.lib.cups.backend.cups-pdf /etc/apparmor.d/disable/
+
*sudo ln -sf /etc/apparmor.d/usr.sbin.cupsd /etc/apparmor.d/disable/
*sudo apparmor_parser -R /etc/apparmor.d/usr.lib.cups.backend.cups-pdf
+
*sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.cupsd
 
;CUPS neu starten
 
;CUPS neu starten
 
*sudo systemctl restart cups
 
*sudo systemctl restart cups

Version vom 24. Juli 2026, 10:05 Uhr

Vorarbeiten

Im Nameserver eintragen und testen

cups.it2XX.int IN A 172.26.2XX.3

Debian Template klonen

DATEN

Parameter Wert Erläuterung
Netzwerk (NIC) LAN Interface-Zuweisung in VirtualBox
IP 172.26.2XX.3 Statische IP
CIDR 24 Classless Inter-Domain Routing Präfixlänge
GW 172.26.2XX.1 GATEWAY
NS 10.88.2XX.21 Resolver
FQDN cups.it2XX.int Fully Qualified Domain Name
SHORT cups Short Name
DOM it2XX.int Domain Name


Zertifikat holen

Wir befinden uns auf dem CUPS-Server

Apache2

Installation
  • apt install apache2
SSL Modul aktivieren
  • a2enmod ssl
Konfiguration
  • vi /etc/apache2/sites-enabled/000-default.conf
<VirtualHost *:443>
	DocumentRoot /var/www/html
	ErrorLog ${APACHE_LOG_DIR}/error.log
	CustomLog ${APACHE_LOG_DIR}/access.log combined

	SSLEngine on
	SSLCertificateFile /etc/ssl/own.crt
	SSLCertificateKeyFile /etc/ssl/own.key
</VirtualHost>
Restart und Kontrolle
  • systemctl restart apache2
  • ss -lntp | grep apache2

Server

Installation
  • sudo apt install cups printer-driver-cups-pdf libreoffice
Queue mit cups-pdf-Backend anlegen

Wichtig: die Device-URI muss explizit auf cups-pdf:/ gesetzt werden. Ohne diesen Schritt bleiben Druckjobs im allgemeinen Spool /var/spool/cups hängen, statt vom cups-pdf-Backend verarbeitet zu werden.

  • sudo lpadmin -p PDF -v cups-pdf:/ -P /usr/share/ppd/cups-pdf/CUPS-PDF_opt.ppd -E
Kontrolle
  • lpstat -v PDF

Erwartete Ausgabe:

device for PDF: cups-pdf:/

Steht hier etwas anderes, an dieser Stelle nicht weitermachen.

Freigabe aktivieren
  • sudo lpadmin -p PDF -o printer-is-shared=true
  • sudo cupsctl --share-printers --remote-any
Ausgabeverzeichnis festlegen

Die PDFs sollen direkt nach /var/www/html geschrieben werden (später Basis für einen Apache-Webserver).

  • sudo vi /etc/cups/cups-pdf.conf
Out /var/www/html
AnonDirName /var/www/html
UserUMask 0000
Grp lpadmin
DecodeHexStrings 1
Berechtigungen setzen
  • sudo rm -f /var/www/html/index.html
  • sudo chown root:lpadmin /var/www/html
  • sudo chmod 2775 /var/www/html

Statt 1777 wird hier 2775 mit gesetztem SetGID-Bit verwendet: Neue PDFs erben automatisch die Gruppe lpadmin (siehe Grp lpadmin in der Konfiguration oben), statt dass jeder Systembenutzer uneingeschränkten Schreibzugriff auf das komplette Verzeichnis hat.

AppArmor für das cups-pdf-Backend deaktivieren

Das Backend cups-pdf ruft intern Ghostscript auf, das je nach Dokument diverse Systemdateien liest (Fonts, Papierformate, Temp-Verzeichnisse). Eine Freigabe einzelner Pfade im usr.sbin.cupsd-Profil reicht nicht aus, da Ghostscript unter einem eigenen Kind-Profil läuft (/usr/lib/cups/backend/cups-pdf). Statt jede einzelne Datei freizugeben, wird dieses Profil deaktiviert:

  • sudo ln -sf /etc/apparmor.d/usr.sbin.cupsd /etc/apparmor.d/disable/
  • sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.cupsd
CUPS neu starten
  • sudo systemctl restart cups
Test
  • lpstat -p PDF
  • echo "Testseite" > test.txt
  • lp -d PDF test.txt
  • sleep 3
  • ls -la /var/www/html

Client

  • sudo lpadmin -p PDF -E -v ipp://<server-ip>:631/printers/PDF -m everywhere

Linux (grafisch)

Vorab
Installation
  • sudo apt install cups system-config-printer
Drucker hinzufügen
  1. GNOME Settings → Printers öffnen
  2. Add Printer... anklicken
  3. Falls der Drucker nicht automatisch per Netzwerk-Discovery erscheint: Adresse manuell eingeben
ipp://<server-ip>:631/printers/PDF
  1. Drucker PDF bestätigen und hinzufügen
Drucken
  1. Beliebige Datei öffnen (z. B. in LibreOffice)
  2. Drucken → Drucker PDF auswählen
  3. Drucken

Die fertige PDF landet auf dem Server unter /var/www/html.

Windows (grafisch)

Drucker hinzufügen
  1. EinstellungenBluetooth & GeräteDrucker & Scanner
  2. Gerät hinzufügenDer gewünschte Drucker ist nicht aufgeführt
  3. Freigegebenen Drucker über den Namen oder die TCP/IP-Adresse auswählen
  4. URL eingeben:
http://<server-ip>:631/printers/PDF
  1. Als Treiber Generic → MS Publisher Color Printer oder Generic PostScript Printer auswählen (CUPS wandelt serverseitig sowieso über cups-pdf in PDF um)
Drucken
  1. Beliebige Datei öffnen (z. B. Word)
  2. Drucken → Drucker PDF auswählen
  3. Drucken

Die fertige PDF landet auf dem Server unter /var/www/html.