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

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 58: Zeile 58:
 
;Installation
 
;Installation
 
*sudo apt install cups printer-driver-cups-pdf libreoffice
 
*sudo apt install cups printer-driver-cups-pdf libreoffice
 +
;Queue mit cups-pdf-Backend anlegen
 +
Wichtig: die Device-URI muss explizit auf <code>cups-pdf:/</code> gesetzt werden. Ohne diesen Schritt bleiben Druckjobs im allgemeinen Spool <code>/var/spool/cups</code> hängen, statt vom cups-pdf-Backend verarbeitet zu werden.
 +
*sudo lpadmin -p PDF -v cups-pdf:/ -m everywhere -E
 +
;Kontrolle
 +
*lpstat -v PDF
 +
Erwartete Ausgabe:
 +
<pre>
 +
device for PDF: cups-pdf:/
 +
</pre>
 +
Steht hier etwas anderes, an dieser Stelle nicht weitermachen.
 
;Freigabe aktivieren
 
;Freigabe aktivieren
 +
*sudo lpadmin -p PDF -o printer-is-shared=true
 
*sudo cupsctl --share-printers --remote-any
 
*sudo cupsctl --share-printers --remote-any
'''!!!Ein bisschen warten!!!'''
 
 
*sudo lpadmin -p PDF -o printer-is-shared=true
 
 
;Ausgabeverzeichnis festlegen
 
;Ausgabeverzeichnis festlegen
 
Die PDFs sollen direkt nach <code>/var/www/html</code> geschrieben werden (später Basis für einen Apache-Webserver).
 
Die PDFs sollen direkt nach <code>/var/www/html</code> geschrieben werden (später Basis für einen Apache-Webserver).
Zeile 72: Zeile 80:
 
Grp lpadmin
 
Grp lpadmin
 
DecodeHexStrings 1
 
DecodeHexStrings 1
 
 
</pre>
 
</pre>
 
;Berechtigungen setzen
 
;Berechtigungen setzen
*sudo rm /var/www/html/index.html
+
*sudo rm -f /var/www/html/index.html
*sudo chown root:root /var/www/html
+
*sudo chown root:lpadmin /var/www/html
*sudo chmod 1777 /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.
 
;AppArmor freigeben
 
;AppArmor freigeben
 
AppArmor blockiert standardmäßig Schreibzugriff von cupsd außerhalb von <code>/var/spool/cups-pdf</code>. Folgende Zeile in <code>/etc/apparmor.d/usr.sbin.cupsd</code> innerhalb des <code>profile /usr/sbin/cupsd {...}</code>-Blocks ergänzen:
 
AppArmor blockiert standardmäßig Schreibzugriff von cupsd außerhalb von <code>/var/spool/cups-pdf</code>. Folgende Zeile in <code>/etc/apparmor.d/usr.sbin.cupsd</code> innerhalb des <code>profile /usr/sbin/cupsd {...}</code>-Blocks ergänzen:
Zeile 85: Zeile 93:
 
</pre>
 
</pre>
 
*sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.cupsd
 
*sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.cupsd
 +
;Kontrolle
 +
*sudo aa-status | grep cupsd
 +
Muss den <code>cupsd</code>-Eintrag im enforce-Modus zeigen, ohne Parser-Fehler.
 
;CUPS neu starten
 
;CUPS neu starten
 
*sudo systemctl restart cups
 
*sudo systemctl restart cups
Zeile 91: Zeile 102:
 
*echo "Testseite" > test.txt
 
*echo "Testseite" > test.txt
 
*lp -d PDF test.txt
 
*lp -d PDF test.txt
 +
*sleep 3
 
*ls -la /var/www/html
 
*ls -la /var/www/html
 +
*sudo journalctl -k --since "1 min ago" | grep -i DENIED
 +
Erst wenn die PDF in <code>/var/www/html</code> liegt und keine AppArmor-DENIED-Zeile erscheint, weiter zum Client-Kapitel.
  
 
= Client =
 
= Client =

Version vom 24. Juli 2026, 09:13 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:/ -m everywhere -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 freigeben

AppArmor blockiert standardmäßig Schreibzugriff von cupsd außerhalb von /var/spool/cups-pdf. Folgende Zeile in /etc/apparmor.d/usr.sbin.cupsd innerhalb des profile /usr/sbin/cupsd {...}-Blocks ergänzen:

  • sudo vi /etc/apparmor.d/usr.sbin.cupsd
/var/www/html/** rw,
  • sudo apparmor_parser -r /etc/apparmor.d/usr.sbin.cupsd
Kontrolle
  • sudo aa-status | grep cupsd

Muss den cupsd-Eintrag im enforce-Modus zeigen, ohne Parser-Fehler.

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
  • sudo journalctl -k --since "1 min ago" | grep -i DENIED

Erst wenn die PDF in /var/www/html liegt und keine AppArmor-DENIED-Zeile erscheint, weiter zum Client-Kapitel.

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.