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

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 86: Zeile 86:
 
*sudo chmod 2775 /var/www/html
 
*sudo chmod 2775 /var/www/html
 
Statt <code>1777</code> wird hier <code>2775</code> mit gesetztem SetGID-Bit verwendet: Neue PDFs erben automatisch die Gruppe <code>lpadmin</code> (siehe <code>Grp lpadmin</code> in der Konfiguration oben), statt dass jeder Systembenutzer uneingeschränkten Schreibzugriff auf das komplette Verzeichnis hat.
 
Statt <code>1777</code> wird hier <code>2775</code> mit gesetztem SetGID-Bit verwendet: Neue PDFs erben automatisch die Gruppe <code>lpadmin</code> (siehe <code>Grp lpadmin</code> in der Konfiguration oben), statt dass jeder Systembenutzer uneingeschränkten Schreibzugriff auf das komplette Verzeichnis hat.
;AppArmor für das cups-pdf-Backend deaktivieren
+
;AppArmor-Profil 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:
+
Der CUPS-Daemon ruft intern Ghostscript auf, das je nach Dokument diverse Systemdateien liest (Fonts, Papierformate, Temp-Verzeichnisse). Das AppArmor-Profil <code>usr.sbin.cupsd</code> blockiert diesen Zugriff standardmäßig. Statt einzelne Pfade freizugeben, wird das Profil komplett deaktiviert:
 
*sudo ln -sf /etc/apparmor.d/usr.sbin.cupsd /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.sbin.cupsd
 
*sudo apparmor_parser -R /etc/apparmor.d/usr.sbin.cupsd

Version vom 24. Juli 2026, 10:09 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-Profil deaktivieren

Der CUPS-Daemon ruft intern Ghostscript auf, das je nach Dokument diverse Systemdateien liest (Fonts, Papierformate, Temp-Verzeichnisse). Das AppArmor-Profil usr.sbin.cupsd blockiert diesen Zugriff standardmäßig. Statt einzelne Pfade freizugeben, wird das Profil komplett 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.