Um Drucker für Windows-Rechner freizugeben, die an Linux Rechnern hängen, sind ein paar kleine Erweiterungen an unserer smb.conf Datei nötig. Zunächst einmal muß geklärt werden, wie Linux druckt. In der Regel wird Linux das BSD-Drucksystem benutzen, manchmal – seltener – aber auch das PLP System. Samba muß in der [global]-Sektion einen entsprechenden Eintrag besitzen:

[global]

workgroup = ARBEITSGRUPPE netbios name = MARVIN security = SHARE guest account = nobody encrypt passwords = Yes printing = BSD Um jetzt Drucker selbst freizugeben haben wir zwei Möglichkeiten:

  • Alle Drucker werden freigegeben
  • Bestimmte Drucker werden freigegeben

Wenn alle Drucker freigegeben werden sollen wird ein Mechanismus benutzt, der dem der Userverzeichnisse ähnelt. Wir legen ein spezielles share an, das zwingend [printers] heissen muß. Dieses share enthält folgende Anweisungen:

  [printers]
    comment = All Printers
    path = /tmp
    create mask = 0700
    printable = Yes
    browseable = No
    guest ok = Yes    

Der angegebene Pfad bezieht sich auf ein Verzeichnis, in dem alle User Schreibrecht haben (und dem also das Sticky-Bit gesetzt sein sollte). Die Create Mask legt fest, welche Permissions Druckaufträge haben sollen, die in diesem Verzeichnis liegen. Die Angabe printable = Yes bedeutet, dass – selbst wenn das Verzeichnis selbst Read only = Yes als Parameter hat, Druckaufträge dort abgelegt werden dürfen. Die Angabe browseable = No bedeutet, dass der share [printers] selbst nicht erscheint.

Auf diese Weise werden alle Drucker, die unter Linux in der /etc/printcap Datei auftauchen, dem Windows-Rechner angezeigt und freigegeben. Das heißt, dass auch wenn – wie bei vielen Distributionen üblich – mehrere logische Drucker angelegt werden, all diese logischen Drucker auch angezeigt werden:

Das kann einen unbedarften Windows-User natürlich verwirren. Um aber nur einen einzigen Drucker anzuzeigen, wird statt des [printers] Abschnitts ein Abschnitt für den freizugebenden Drucker angelegt, dessen Name jetzt wieder frei wählbar ist:

  [PSLaser]
    comment = PS_600dpi-a4-auto-mono-600
    path = /tmp
    create mask = 0700
    guest ok = Yes
    printable = Yes
    printer name = lp2

Der entscheidende Unterschied zu einem share für Verzeichnisse sind eigentlich nur die Anweisungen printable = yes und printer name = lp2

Daran merkt Samba, dass es sich hierbei um einen Drucker-Dienst und nicht um einen Dateidienst handelt. Der Windows-User bekommt jetzt folgendes Bild zu sehen:

Die Angabe printer name = lp2 bezieht sich auf den Namen des Druckers, der unter Linux gültig ist. In diesem Fall darf natürlich auch nicht browseable = No eingetragen werden, sonst sieht der Windows-User den Drucker nicht in seiner Liste.

Die Angabe guest ok = yes ermöglicht das Drucken ohne Passworteingabe.