Nix mit interaktiv

Problematisch ist eigentlich nur, dass das Inputfilterskript keinerlei Interaktivität zulässt – man kann aus dem Hintergrund nicht eben mal nachfragen, ob der ausdruckende Nutzer auch tatsächlich einen SMB-Usernamen vor- und sich mit dem richtigen Passwort ausweisen kann.

Wollten wir das nachprüfen, wären wir ein paar Answer-Girls beschäftigt, und so nehmen wir seufzend in Kauf, dass wir davon ausgehen müssen, dass auf unserem Rechner niemand wirklich Drucker-Unbefugtes einen Account besitzt.

Schlimmer noch als die Schwierigkeit mit dem SMB-User wiegt die Tatsache, dass wir das SMB-Passwort im Klartext abspeichern sollen. Zwar könnten wir das if-Skript beliebig um das Auslesen und Dekodieren eines verschlüsselt abgespeicherten Passworts verkomplizieren. Doch da auch das keine Sache von zwei Zeilen ist, schieben wir den Schwarzen Peter unserem Windowsadministrator zu: Soll der doch ein Konto einrichten, das wirklich nur zum Drucken auf dem entsprechenden Gerät genutzt werden kann. Wir unsererseits sorgen (beispielsweise mit 511 smbprint) zumindest dafür, dass lediglich der Besitzer Leserechte auf die Filterdatei erhält (Schreibrechte sind sowieso out).

Die Besitzerin des Skripts in Listing 1 bin immer noch ich, doch eigentlich würde ich die Bürde gern los werden: Wieso soll ausgerechnet bei einem linuxrechnerweit verfügbaren Drucker ein Skript ausgeführt werden, das in meinem Homeverzeichnis liegt?

Eine vom Red-Hat-printtool (vgl. Kasten "printtool und Co.") erzeugte /etc/printcap weist den Weg: Hier kommt zwar nicht unser schönes selbst gestricktes if-Skript zum Einsatz, sondern ein ähnliches namens – hätten Sie's gedacht? – smbprint (bei SuSE heißt es übrigens samba_print), doch das macht ja nichts.

printtool und Co.

Grafische Frontends wie das Red-Hat'sche printtool können auch nicht hexen. Alles, was sie tun, ist, eine Eingabemaske zur Verfügung zu stellen, in der sie die benötigten Daten abfragen (Abbildung 2), und damit im Wesentlichen nichts weiter zu veranstalten, als das, was wir in diesem Artikel auch machen.

Für einen SMB/Windows 95/NT Printer (Abbildung 1) erzeugt printtool einen Eintrag in der /etc/printcap, der wie folgt aussieht:

##PRINTTOOL3## SMB ljet4 600x600 a4 {} LaserJet4 Default 1
remote|hplj4p:\
        :sd=/var/spool/lpd/ljet4:\
        :mx#0:\
        :sh:\
        :if=/var/spool/lpd/ljet4/filter:\
        :af=/var/spool/lpd/ljet4/acct:\
        :lp=/dev/null:

Bis auf den Parameter af, der ein für unsere Belange nicht unbedingt nötiges "Accounting file" festlegt, ist uns außer der ersten Zeile alles schon bekannt. In Zeile 1 versteckt printtool in einer speziell formatierten Kommentarzeile Informationen, die es für seinen Druckerfilter braucht.

Red Hats rhs-printfilters sind um einiges unübersichtlicher (da weniger modular) als das von uns verwendete magicfilter-Paket [4]. So verwundert es nicht, dass der Inputfilter filter, den Red Hat zusammen mit einigen Konfigurationsdateien im Spoolverzeichnis des betreffenden Druckers ablegt, noch nicht das Ende vom Lied ist, sondern neben der Filterei überhaupt erst das hauseigene smbprint-Skript aufruft.

SMB-Passwort und Benutzername, den Server, der den freigegebenen Drucker beherbergt, sowie dessen SMB-Namen legt printtool im Spoolverzeichnis in einer Datei namens .config ab. Da smbprint jene erst einlesen und auswerten muss, verwundert es nicht, dass es etwas komplexer als unser selbst geschriebenes ausfällt.

Warum platzieren wir es nicht einfach im Spoolverzeichnis des betreffenden Druckers (/var/spool/lpd/ljet4 in Listing 1) und ändern den if-Eintrag in der Printcap von :if=/home/trish/bin/smbprint: auf :if=/var/spool/lpd/ljet4/smbprint:? Die Besitzverhältnisse in diesem Directory weisen dann (hoffentlich!) schon darauf hin, dass der Druckermanager möglichst ein eigener Benutzer namens lp o.ä. ist.

Es muss nicht immer root sein

Manche Distributionen tragen hier allerdings root ein, was sicherheitstechnisch gesehen totaler Overkill ist: Wer Dinge, die sich auch ohne rootsche Allmächtigkeit von speziell berechtigten Usern ausführen lässt, der Systemadministratorin zuschustert, handelt im Allgemeinen grob fahrlässig.

Und wenn wir schon einmal sicherheitsbewusst denken, so schreiben wir nicht nur den Namen des im Skript verwendeten Programms smbclient hinein, sondern auch den Pfad (/usr/sbin) dahin. So schließt man aus, dass ggf. ein unerwünschtes, jedoch ebenfalls im Suchpfad liegendes smbclient benutzt wird.

Wie dem auch sei – aufmerksame Leser(innen) haben schon bemerkt, dass Listing 2b noch zwei Änderungen zur Version aus Heft 06/00 (Listing 2a) enthält: Statt den Windows-typischen Backslashes \ als "Verzeichnistrenner" im Share-Namen \\server\drucker, die zudem noch zu \\\\server\\drucker "escapt" werden mussten, lässt smbclient auch die "unixoide" Schreibweise mit / statt \ zu. Da der einfache Slash gemäß seiner Sonderbedeutung als "Verzeichnistrennzeichen" eingesetzt wird, brauchen wir hier keine Fluchtzeichen.

Schließlich wird noch ein logfile als Variable definiert, eine Datei namens smb-print.log im Verzeichnis /var/log, in dem Systemprogramme, normalerweise unterstützt vom System-Log-Dämon syslogd, mitprotokollieren, was ihnen im Laufe ihres Arbeitslebens so alles widerfährt.

Durch Voranstellen eines $ holen wir uns ganz am Ende den Inhalt der Variablen, also /var/log/smb-print.log, um ans Ende dieser Datei durch den "Doppelpfeil" >> all das anhängen zu lassen, was smbprint an Meldungen von sich gibt. Da wir im Laufe unserer Tests schon festgestellt haben, dass dazu keine Zeitangabe gehört, lassen wir uns die durch das Kommando date voranstellen.

lpr/lpd oder lprng?

Welches Print-Spooling-System man installiert hat (bzw. ob überhaupt), erfährt man vom Paketmanager seiner Distribution:

  • rpm -qa | lpr z.B. bei SuSE, Caldera, Red Hat und Derivaten
  • dpkg -l | grep lpr bei Debian und Abkömmlingen Einen Hinweis auf lprng erhält man u.U. auch vom ps-Kommando. Spuckt ps -auxw | grep lpd in der ersten Spalte aus, dass der Lineprinter-Dämon nicht von root, sondern beispielsweise dem Benutzer lp gestartet wird, haben Sie's auf jeden Fall mit dem "next generation"-lpd zu tun. lprng wurde u.a. auch deshalb entwickelt, damit man den lpd nicht mehr mit root-Rechten starten muss.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Drucker-Konfiguration unter Linux
    Natürlich muss man auch unter Linux nicht auf einen Drucker verzichten. In diesem Artikel wird Ihnen erklärt wie Sie Ihren Drucker unter verschiedenen Distributionen einrichten und benutzen.
  • The Answer Girl
    Dass der Computeralltag auch unter Linux des Öfteren für Überraschungen gut ist, ist eher eine Binsenweisheit: Immer wieder funktionieren Dinge nicht oder nicht so, wie eigentlich angenommen. Das Answer-Girl im LinuxUser zeigt, wie man mit solchen Problemchen elegant fertig wird.
  • Der lange Weg der Druckdaten
    Welche Wege und Umwege nimmt eine Datei, bis ihr Inhalt farbig oder schwarz auf weiß zu Papier gelangt?
  • Printserver mit Samba
  • Netzwerk im Gleichschritt
    Zentrales Backup, gemeinsam genutzte Dateien und Drucker – es gibt viele Argumente für einen Samba-Server im lokalen Netzwerk. Wie schnell und einfach Sie diesen aufsetzen, zeigt dieser Artikel.
Kommentare

Infos zur Publikation

LU 10/2017: Daten retten & sichern

Digitale Ausgabe: Preis € 8,50
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Stellenmarkt

Aktuelle Fragen

Lieber Linux oder Windows- Betriebssystem?
Sina Kaul, 13.10.2017 16:17, 2 Antworten
Hallo, bis jetzt hatte ich immer nur mit
IT-Kurse
Alice Trader, 26.09.2017 11:35, 2 Antworten
Hallo liebe Community, ich brauche Hilfe und bin sehr verzweifelt. Ih bin noch sehr neu in eure...
Backup mit KUP unter Suse 42.3
Horst Schwarz, 24.09.2017 13:16, 3 Antworten
Ich möchte auch wieder unter Suse 42.3 mit Kup meine Backup durchführen. Eine Installationsmöglic...
kein foto, etc. upload möglich, wo liegt mein fehler?
kerstin brums, 17.09.2017 22:08, 5 Antworten
moin, zum erstellen einer einfachen wordpress website kann ich keine fotos uploaden. vom rechne...
Arch Linux Netzwerkkonfigurationen
Franziska Schley, 15.09.2017 18:04, 0 Antworten
Moin liebe Linux community, ich habe momentan Probleme mit der Einstellung des Lan/Wlan in Arc...