Drucken mit Samba: Difference between revisions
m (→Printer config) |
|||
Line 43: | Line 43: | ||
== Printer config == |
== Printer config == |
||
Falls man mehrere Drucker über samba zugänglich machen will, legt man am besten einen globalen Abschnitt [printers] an bzw. |
Falls man mehrere Drucker über samba zugänglich machen will, legt man am besten einen globalen Abschnitt [printers] an bzw. modifiziert die Parameter in der Datei: |
||
[printers] |
[printers] |
||
browseable = No |
browseable = No |
Latest revision as of 14:13, 18 August 2024
Anwendungsfall
Der USB-Drucker ist am PC/Server angeschlossen und per CUPS eingerichtet. Jetzt würde man gerne noch von der Windowskiste auf eben diesen Drucker drucken. Eine Möglichkeit ist, den Drucker über Samba zu sharen.
Samba
Samba [1] heißt eigentlich SMB (Server Message Block) und wurde zur Förderung der Kompatibilität zwischen Windows und Linux entwickelt. Wir behandeln hier nicht das Sharing via freigegebene Ordner, sondern das Drucken.
Installation
# apt install samba
Configuration
Dies soll kein Samba-Tutorial ersetzen. Eine Übersicht über alle möglichen Konfigurationsparameter gibt es hier: https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html
Die Configurationsdatei für samba liegt unter /etc/samba/smb.conf.
Globale Einstellungen
Hier ein paar halbwegs sinnvolle Einstellungen für den Abschnitt [global]. Wichtig ist hier v.a. die server role standalone server und security = user.
[global] log file = /var/log/samba/log.%m logging = file map to guest = Bad User max log size = 1000 netbios aliases = smb1 netbios name = SAMBASERVER obey pam restrictions = Yes pam password change = Yes panic action = /usr/share/samba/panic-action %d passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . passwd program = /usr/bin/passwd %u security = USER server role = standalone server server string = %L for %S unix password sync = Yes username map = /etc/samba/usermap.txt usershare allow guests = Yes workgroup = OFFICE idmap config * : backend = tdb
Bei Problemen kann man zudem den log level raufdrehen, z.B. log level = 9. Nicht vergessen, die Aktion asap rückgängig zu machen, sonst bekommt man riesige Logfiles!
Printer config
Falls man mehrere Drucker über samba zugänglich machen will, legt man am besten einen globalen Abschnitt [printers] an bzw. modifiziert die Parameter in der Datei:
[printers] browseable = No comment = All Printers create mask = 0700 guest ok = Yes path = /var/spool/samba printable = Yes
Für Windowsclients braucht es zudem einen print$-Abschnitt:
[print$] comment = Printer Drivers path = /var/lib/samba/printers
Nun legen wir den eigentlichen Drucker an. Der Name in den eckigen Klammern ist frei wählbar (zumindest fast, s. Fehlerfall unten), der printer name muss dem entsprechen, was im CUPS angezeigt wird.
[HP] comment = HP printer on %L guest ok = Yes path = /var/tmp printable = Yes printer name = HP_Deskjet_1000_J110_series
Authentisierung
Um den Dienst nutzen zu können, müssen sich die User anmelden. Samba kennt 3 Account information databases: smbpasswd, tdbsam und ldapsam. In unserem Fall wurde tdbsam gewählt und per unix password sync = Yes für ein Mapping mit der passwd datei gesorgt. Die User müssen trotzdem sowohl per passwd als auch per smbpasswd angelegt werden:
# useradd -m testy # smbpasswd -a testy
Config überprüfen
Mit dem Tool
testparm
werden eventuelle Fehler in der Configuration ausgegeben. Etwas ausführlicher ist das Command
# smba-tool testparm
Test via smbclient
Man kann den Drucker auch von einem anderen Linuxhost aus testen mit Hilfe des Tools smbclient.
$ smbclient //<IP des samba servers>/HP/ -c "print /etc/hosts" -U testy
Sollte alles funktionieren, wird man nach dem Passwort gefragt und danach fällt eine gedruckte /etc/hosts heraus.
Fehlerfall
Sollte der Drucker nicht reagieren und im Log folgende Fehlermeldung auftauchen:
client-error-not-found
Könnte das ein Hinweis sein, dass der Name des Printershares zu lang ist (z.B. [HP_Deskjet_1000_J110_series]). Mehr als 15 Buchstaben sind nicht zulässig. In dem Fall einfach einen kürzeren Namen wählen, z.B. [HP]. Bei printer_name muss natürlich der volle CUPS Name angegeben sein, hier spielt die Länge aber keine Rolle.