Drucken mit Samba: Difference between revisions

From Linuxwiki
Jump to navigation Jump to search
Line 16: Line 16:
=== Globale Einstellungen ===
=== 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.
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]
[global]
log file = /var/log/samba/log.%m
log file = /var/log/samba/log.%m

Revision as of 21:08, 11 December 2022

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

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

Zunächst legen wir einen Abschnitt [printers] an bzw. modifizieren 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.