Druckserver auf Samba 4 Basis unter Debian 11

In Schulnetzen gibt es auch Bedarf, Dokumente auf den lokalen Druckern zu drucken. Ein Druckserver auf Samba Basis ist nicht schwer zu konfigurieren. 
Wenn der Druckserver eingerichtet ist, werden die Treiber des Druckers auf dem Druckserver installiert. Die Drucker sind dann im Netzwerk sichtbar.  Beim Bedarf wird der entsprechende Drucker in Windows Explorer ausgewählt, und der Treiber wird automatisch installiert. Die Treiberdateien werden vom Server geholt. 

Die Arbeiten können wir in 3 Bereiche unterteilen

  • Druckereinrichtung mit CUPS
  • Samba Konfiguration für den Druckserver
  • Treiber Installation auf dem FS1 (Filserver) mit Druckerverwaltung unter Windows

Widmen wir uns zuerst zu der Druckerinstallation unter Linux auf dem FS1.
Das Paket cups müssen wir zuerst installieren.

root@fs1:~# apt install cups

Bei der Linux Grundinstallation haben wir keine grafische Oberfläche ausgewählt. Es stellt sich die Frage, wie kann ich bequem die Drucker konfigurieren? Für diesen Zweck können wir CUPS-Webinterface nutzen. Normalerweise ist die schon für einen lokalen Zugriff konfiguriert, aber lokal haben wir keine grafische Oberfläche, deshalb müssen wir CUPS so konfigurieren, dass wir von einem anderen Gerät per Browser zugreifen dürften.
Wir brauchen auf Server kein Webserver.

Anpassung der Datei /etc/cups/cupsd.conf für den Remotezugriff

Wir öffnen die Datei /etc/cups/cupsd.conf mit beliebigem Editor und passen wir die an. Die Zeilen ändern bzw. anpassen.
Die IP Definitionen gehören selbstverständlich zu unserem Netz.

# Listen localhost:631
Listen 0.0.0.0:631

# Disable printer sharing.
# Browsing On
Browsing Off
...

# Restrict access to the server...
<Location />
  Order allow,deny
  Allow from 172.16.0.*
</Location>

# Restrict access to the admin pages...
<Location /admin>
  AuthType Default
  Order allow,deny
  Allow from 172.16.0.*
</Location>

 

Starten wir jetzt den cups Dienst neu

# systemctl restart cups


Ab jetzt können wir, in unserem Fall aus dem Netz 172.16.0.0/24 auf cups-Verwaltung auf dem Fileserver (fs1) zugreifen.
Wir starten auf beliebigem Gerät ein Browser und unter der Adresse schreiben wir, in unserem Fall http://172.16.0.5:631
 
Wenn man auf den Reiter Verwaltung klickt, dann kommt noch Benutzer/Passwort abfrage. Hier sollte man den Benutzer root und dazugehöriges Passwort eintragen. Hier kann man die Drucker verwalten, wie z.B. neuen Drucker hinzufügen. Drucker auflisten bzw. ändern kann man unter dem Reiter Drucker.

Drucker mit einer Netzwerkkarte und damit auch mit  einer IP-Adresse verbinden wir meisten per ldp bzw. socket.
Sollte der Drucker nur für Windows genutzt werden, dann wählen wir beim "Drucker Hinzufügen" den Hersteller Raw, Model Raw Queue. Windows Treiber werden später auf andere Weise auf dem Server zur Verfügung gestellt.

Die meisten Drucker sind wahrscheinlich mit einer Netzwerkkarte ausgestattet und schon mit einer IP-Adresse eingerichtet. Die entsprechenden Protokolle im Drucker müssen auch eingeschaltet sein. Es steht also nichts dagegen, die Drucker einzuschalten und in CUPS-Verwaltung die Drucker einzurichten.
Wir sollen uns bestimmte Regel, wenn es um die Benennung der Drucker geht, setzen. Die Namen sollten keine Sonderzeichen beinhalten, außer vielleicht "-" und "_" und außerdem wäre sehr hilfreich, wenn der Druckername die Raumnummer beinhalten würde.

Anpassung der Samba Konfiguration für den Druckserver


Um Samba auch als Printserver zu konfigurieren, müssen wir 

  • zwei zusätzliche Freigaben definieren und 
  • die Drucker definieren

Wir öffnen die /etc/samba/smb.conf Datei auf dem FS1 mit beliebigem Editor und ergänzen den Bereich [global] mit bestimmten Optionen. Es werden noch zwei zusätzlich Drucker-Freigaben gemacht. Hier in der Farbe Grün dargestellt.
 

[global]
   workgroup = SCHULE
   realm = SCHULE.LAN
   netbios name = FS1
   server string = Fileserver
   security = ADS
   idmap config * : backend = tdb
   idmap config * : range = 3000-7999
   idmap config SCHULE : backend = rid
   idmap config SCHULE : range = 10000-999999
   idmap config SCHULE : schema_mode = rfc2307
   idmap config SCHULE : unix_nss_info = yes
   template shell = /bin/bash
   # template homedir = /home/%U
   domain master = no
   winbind nss info = rfc2307
   winbind use default domain = Yes
   oplocks = no
   vfs objects = acl_xattr
   map acl inherit = yes
   store dos attributes = yes
   # admin users = Administrator

   printing = CUPS
   load printers = yes
   rpc_server:spoolss = external
   rpc_daemon:spoolssd = fork
   spoolss: architecture = Windows x64

# ...

[printers]
   comment = Drucker
   browseable = no
   path = /tmp
   printable = yes
   public = no
   writable = no
   create mode = 0700

[print$]
   comment = Printer Drivers
   path = /var/lib/samba/drivers
   browseable = yes
   guest ok = no
   read only = no
   write list = root, Administrator, @Printer-Admins

# ...

 

Wir setzten Druckprivilegien für die Gruppe "Domain Admins" ein.

 

rootr@fs1:~# net rpc rights grant "SCHULE\domain admins" SePrintOperatorPrivilege -U "SCHULE\Administrator"

 

Die Privilegien können wir wie folgt auflisten.

 

root@fs1:~# net rpc rights list privileges SePrintOperatorPrivilege -U "SCHULE\Administrator"

Wir setzen noch bestimmte Berechtigungen für den Ordner, in dem sich die Treiber befinden sollen.

 

root@fs1:~# chgrp -R "SCHULE\Domain Admins" /var/lib/samba/drivers/
root@fs1:~# chmod -R 2775 /var/lib/samba/drivers/

 

Das sollte man noch wissen: Die Rechte werden auf einem Samba als Domänen-Mitglied gesetzt. Sollte jemand auf die Idee kommen, den DC auch als Druckserver zu konfigurieren, dann werden die Befehle nicht funktionieren.

Der Samba Dienst wird neu gestartet.

root@fs1:~# systemctl restart samba-ad-dc.service

Wir werden jetzt die Treiber für die Drucker auf dem Server, in unserem Fall auf dem FS1, installieren. Die Installation der Treiber können wir von einem Windows Rechner durchführen, der muss sich aber in der Domäne befinden.
Wir melden uns als Administrator oder mit einem Benutzer mit Domänen Admin-Rechten an einem Windows Rechner ein. 
Wir starten die App "Systemsteuerung"
Dann auf "System und Sicherheit" -> "Verwaltung" und auf "Druckerverwaltung".
Zuerst wird es der Name des Printservers eingefügt. Den Namen des lokalen PC können wir entfernen.

Jetzt können wir den bzw. die Druckertreiber installieren. Wir klicken einfach auf "Treiber" und mit der rechten Maustaste auf "Treiber hinzufügen ..."

Die Drucker, die in cups erstellt waren, sind auch sichtbar. Wir müssen noch den Treiber zu dem Drucker zuweisen. Der Drucker wird markiert und dann auf "Eigenschaften".
Den Reiter "Erweitert" bitte auswählen und den richtigen Treiber zuweisen. In meinem Fall wäre das der Brother Druckertreiber.

In der Windows-Netzwerkumgebung unter \\FS1 sehen wir alle Freigaben und auch die Drucker. Klickt man auf einen Drucker, wird dieser lokal installiert. Die Druckertreiber werden vom Server geholt. 

Damit auch die Benutzer ohne Adminrechte die Treiber auf dem Windows Gerät installieren könnten, müssen wir eine Gruppenrichtlinie anpassen.
Wir starten Gruppenrichtlinienverwaltung und erstellen neue Richtlinie, z.B. "GPO-C-Printer-Add-Users". Danach mit der rechten Maustaste auf die Richtlinien und auf "Bearbeiten ..."
-> Computerkonfiguration -> Administrative Verlagen -> Point-and-Point-Einschränkungen
und aktivieren wir diese Richtlinie. Die Optionen wie unten angezeigt. 

  • Point-and-Point ist nur mit Computern der eigenen Gesamtstruktur möglich
  • Sicherheitshinweise nicht anzeigen bei
    • Beim Installieren von Treiber für eine neue Verbindung:
    • Beim Aktualisieren von Treibern für eine vorhandene Verbindung

Nach der Aktivierung der Richtlinie können Benutzer ohne Adminrechte die entsprechenden Treiber von Server installieren.