Home / LinuxUser / 2000 / 08 / The Answer Girl

Newsletter abonnieren

Lies uns auf...

Folge LinuxCommunity auf Twitter

Top-Beiträge

Mandriva gibt Distribution in die Hände der Community
(268 Punkte bei 24 Stimmen)
Neues vom Systemd
(161 Punkte bei 4 Stimmen)
Mandriva in Nöten
(161 Punkte bei 4 Stimmen)

Heftarchiv

LinuxUser Heftarchiv

EasyLinux Heftarchiv

Ubuntu User Heftarchiv

Ubuntu User Heftarchiv

Partner-Links:

Shopping
Topsuche
 
Yatego Deutschlands größte Shoppingmall. 10000 Shops,
3.5 Mio Artikel. Alle Bestseller, Servertechnik und Technik Themenwelten.

Notebooks und Netzwerkhardware bei Mercateo günstig kaufen.
Internet Telefonie mit VoIP Telefonen von Gigaset
Das B2B Portal www.Linx.de informiert über Produkte und Dienstleistungen.
Günstige Digitalkameras finden Sie im Preisvergleich.

Gut gedruckt

The Answer Girl

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.
Einem Freund empfehlen    Druckansicht Bookmark and Share
Kommentare

Hits
Wertung: 0 Punkte (0 Stimmen)

Schlecht Gut

Infos zur Publikation

Infos zur Publikation

LinuxUser 06/2012

Aktuelle Ausgabe kaufen:

Heft bestellen Heft als PDF kaufen

LinuxUser erscheint monatlich und kostet in der Nomedia-Ausgabe EUR 5,50 und mit DVD EUR 8,50. Weitere Informationen zum Heft finden Sie auf der LinuxUser-Homepage.

Im LinuxUser-Probeabo erhalten Sie drei Ausgaben für 3 Euro. Das Jahresabo (ab EUR 56,10) können Sie im LNM-Shop bestellen.

Tipp der Woche

Adobe AIR
Adobe-AIR-Programme installieren und (manuell) starten
Tim Schürmann, 14.05.2012 13:09, 0 Kommentare

Es gibt sie noch: neue Anwendungen, die Adobes Integrated Runtime voraussetzen. Aktuellstes und vermutlich auch größtes Beispiel ist das Adventure Botanicula

Aktuelle Fragen

gibt es ein Kommandozeilen Tool, um ein X11-Fenster in ein Anderes einzubetten?
GoaSkin , 21.05.2012 16:44, 0 Antworten
Das XEmbed-Protokoll ist u.A. dazu gedacht, dass man eine X11-Anwendung in eine andere wie ein Wi...
Apache2, Options -Indexes geht nicht
no no, 12.05.2012 19:01, 8 Antworten
Habe in apache2.conf folgendes stehen: Options -Indexes ...
LInux auf Dell LS H500
Andreas Endresl, 09.05.2012 08:54, 2 Antworten
Habe einen alten Dell Latitude LS H500 nur mit ext. Floppy und CD es geht nur immer eines von den...
Datenwiederherstellung unter Ubuntu 12.04 mit "Simple Backup" nach Umzug von Linux Mint
Christian Lottmann, 07.05.2012 13:33, 0 Antworten
Vor dem Umzug auf Ubuntu 12.04 habe ich unter Linux MInt mit "Simple Backup" voll (15.4.2012) und...
DKMS für den propritären NVIDIA-Treiber
Commander Data, 26.04.2012 22:02, 2 Antworten
Hallo an die Gemeinde. Ich habe hier ein interessantes Stück openSuSE gefunden. http://forums.op...