Linux als Printserver mit Samba 3

13.05.2004 von STEFAN RUBNER 
Mit Hilfe von Samba lassen sich unter Linux nicht nur Dateifreigaben für Windows-Clients zur Verfügung stellen. Auch ein zentraler Printserver mit Zugriffsschutz und Statistikfunktionen ist ohne großen Aufwand realisierbar.

Neben der zentralen Datenspeicherung ist das Bereitstellen zentraler Druckdienste eine der wichtigsten Aufgaben eines Netzwerks. Die Vorteile liegen klar auf der Hand: In großen Netzen sparen zentrale Drucker Kosten, weil nicht jeder Arbeitsplatz mit einem eigenen Gerät ausgestattet werden muss. Im privaten Umfeld spielt nicht nur das gesparte Geld eine Rolle. Auch die Nerven werden deutlich weniger strapaziert, da man nicht ständig wegen eines Ausdrucks der restlichen Familienmitglieder den eigenen Arbeitsplatz räumen muss.

Unter Linux stellt Samba die netzweiten Druckfunktionen bereit. Allerdings tut es das nicht komplett alleine. Vielmehr übernimmt Samba die Rolle des Vermittlers zwischen dem Client und dem lokal auf dem Linux-Rechner laufenden Drucksystem, das die eigentliche Ausgabe vornimmt. Während es noch vor wenigen Jahren mehrere unterschiedliche Systeme gab, um von Linux aus auf einen lokal am Rechner angeschlossenen Drucker zuzugreifen, hat sich mittlerweile das Common Unix Printing System (CUPS) als Defacto-Standard bei den meisten Distributionen durchgesetzt. Neuere Samba-Versionen und damit auch die aktuelle Ausgabe 3.0.2 bieten eine direkte Schnittstelle zu diesem System. Damit Samba einen Drucker für Zugriffe aus dem Netz zur Verfügung stellen kann, muss dieser also erst einmal über CUPS eingerichtet werden. Unter SuSe Linux 9.0 erfolgt dies komfortabel über das Druckermodul von Yast2.

Diesen Artikel und eine ganze Reihe weiterer Praxis-Themen finden Sie auch in unserem neuesten tecCHANNEL-Compact. Dort erfahren Sie nicht nur, wie Sie einen Apache 1.x unfallfrei auf Apache 2 upgraden, sondern unter anderem auch wie Sie einen Email-Server mit dem Freeware-Tool XMail aufsetzen und via SpamAssassin vor unerwünschten Mails schützen. Auf der Heft-CD finden Sie einen kompletten LAMP-Server von SuSE sowie den Intel C++-Compiler für Linux, mit dem Sie Ihre Programme optimal auf Ihre Prozessor-Architektur abgestimmt compilieren können. Der Compiler ist für den Privatgebrauch sogar kostenlos. Das Compact können Sie hier in unserem Online-Shop für 9,90 Euro versandkostenfrei bestellen.

Drucker per GUI einrichten

Das Druckermodul von Yast2 erlaubt es Ihnen, sowohl lokal am Parallel- oder USB-Port angeschlossene als auch entfernte Netzwerkdrucker zu konfigurieren. Da Samba alle CUPS bekannten Drucker für die Anwender im LAN zur Verfügung stellt, ist dies auch eine gute Methode, um älteren Rechnern ohne die notwendigen Fähigkeiten Zugang zu einem Netzwerkdrucker zu verschaffen. Die meisten am USB-Port angesteckten Geräte erkennt SuSe Linux 9.0 selbstständig, bei Druckern an der parallelen Schnittstelle müssen Sie meist selbst den korrekten Treiber auswählen. Gleiches gilt für direkt im LAN arbeitende Drucker mit integriertem Printserver. Bei der Namensvergabe sollten Sie darauf achten, dass die gewählte Bezeichnung einerseits eindeutig, andererseits aber nicht zu lang ist. Vor allem Clients unter Windows 9x/ME bekommen Probleme, wenn der Name des Druckers länger als zwölf Zeichen ist. Intern arbeiten diese Betriebssysteme nämlich noch mit dem von DOS vorgegebenen Namensraum von acht Zeichen für den Dateinamen, gefolgt von einem Punkt und einer maximal drei Zeichen langen Namenserweiterung - insgesamt eben besagte zwölf Zeichen.

Drucker manuell einrichten

Wenn Ihr Linux-Rechner ohne grafische Benutzeroberfläche auskommen muss, lassen sich die Drucker auch manuell einrichten. Eine Schlüsselrolle spielt hierbei das Hilfsprogramm lpadmin. Um beispielsweise einen per USB-Port angeschlossenen HP-Deskjet unter CUPS einzurichten, genügt es, als Superuser root folgendes Kommando einzugeben:

lpadmin -p dj940c -E -P /usr/share/cups/model/HP/Deskjet_940C-cdj970.ppd.gz
lpadmin -p dj940 -v usb://dev/usb/lp0

Analog richten Sie einen älteren Laserdrucker von Xerox am Parallelport über dieses Kommando ein:

lpadmin -p x4510 -E -P /usr/share/cups/model/Xerox/DokuPrint_4508-hpijs.ppd.gz
lpadmin -p x4510 -v parallel:/dev/lp0

Für einen Netzwerkdrucker wie beispielsweise einen Kyocera FS-3700+ sähe die Befehlsfolge so aus:

lpadmin -p k3700 -E -P /usr/share/cups/model/Kyocera/FS-3700plus-PostScript.ppd.gz
lpadmin -p k3700 -v socket://192.168.27.222:9100

Die Syntax ist dabei denkbar einfach: Richte den Drucker mit Namen xyz (-p) ein und aktiviere ihn (-E), wobei der Treiber abc (-P) zu verwenden ist. Das zweite Kommando definiert die Schnittstelle (-v), über die der Drucker zu erreichen ist. Beide Befehle lassen sich auch in einer Zeile zusammenfassen, die obige Darstellung dient nur der besseren Lesbarkeit.

Im Verzeichnis /usr/share/cups/model finden sich die derzeit verfügbaren Treiber für eine Vielzahl von Druckern. Teilweise sind für ein Druckermodell auch mehrere Treiber vorhanden. Während das Yast2-Modul hier automatisch die empfohlene Variante wählt, sind Sie bei der manuellen Installation auf Glück, Intuition oder Ausprobieren angewiesen.

Netzwerkdruck vorbereiten

Bevor Sie nun darangehen können, den oder die Drucker im Netz bekannt zu machen, sind noch ein paar Vorarbeiten nötig. Als wichtigste Maßnahme müssen Sie ein Spool-Verzeichnis für Samba einrichten, auf das jeder Benutzer mindestens Schreibrechte hat:

mkdir /var/spool/samba
chmod 777 /var/spool/samba

Auch in der Konfigurationsdatei von Samba, zu finden unter /etc/samba/smb.conf, sind einige Änderungen durchzuführen. Hier müssen Sie in der globalen Sektion die Ansteuerung von CUPS als Drucksystem einrichten und Samba den Export aller in CUPS definierten Drucker über eine spezielle Sektion [printers] erlauben:

[global]
printing = cups
printcap name = cups
[printers]
path = /var/spool/samba
browsable = no
guest ok = yes
writeable = no
printable = yes
printer admin = root, @ntadmin

Diese Einstellungen bewirken, dass Samba automatisch alle via CUPS definierten Geräte als einzelne Netzwerkdrucker zur Verfügung stellt. Durch den zunächst deplaziert erscheinenden Befehl browsable = no erreichen Sie, dass die globale Ressource [printers] von den Clients aus jedoch nicht sichtbar ist. Die Zeile writeable = no schließt aus, dass Clients wahllos Dateien im Spool-Verzeichnis ablegen können, printable = yes sorgt dafür, dass Druckaufträge aber sehr wohl in das Directory geschrieben werden.

Um sicherzustellen, dass Samba diese Änderungen sofort erkennt, müssen Sie den Dienst über das Kommando /etc/init.d/smb restart neu starten. Mit Hilfe eines Client-Rechners lässt sich nun schnell feststellen, ob die Aktion erfolgreich war. Wenn ja, sollten die Drucker in der Übersicht der vom Linux-Server bereitgestellten Ressourcen erscheinen.

Treiber-Automatik einrichten

Sobald Sie aber versuchen, auf diesen Drucker zuzugreifen, erhalten Sie zunächst eine Warn- und anschließend eine Fehlermeldung, gefolgt von der Aufforderung, einen passenden Treiber für den Netzwerkdrucker zu installieren. Ursache dafür ist, dass Windows die notwendigen Treiber zunächst auf dem Server sucht, diese dort aber nicht findet und deswegen auf die lokale Installation zurückgreift.

((Die beiden folgenden Bilder bitte direkt untereinander und nur eine BU für beide zusammen))

Zugegeben, in kleinen Installationen mit wenigen Druckern und aussagekräftigen Namen ist das kein echtes Problem. Was aber, wenn aus dem Namen nicht klar ersichtlich ist, welchen Treiber man lokal installieren muss? Auch hierfür hat Samba - in Verbindung mit CUPS - eine Lösung. CUPS kann Postscript-Daten entgegennehmen und in das vom Drucker eigentlich erwartete Format übersetzen. Samba wiederum besitzt die Fähigkeit - genau wie ein echter Windows-Server - den zu einem Drucker passenden Treiber an die Clients auszuliefern. Die Lösung lautet also: Für jeden Drucker wird einfach ein generischer Postscript-Treiber installiert, das Übersetzen in das korrekte Format für den Drucker übernimmt CUPS. Das funktioniert tatsächlich, auch für Farbtintenstrahldrucker.

CUPS-Postscript-Treiber vorbereiten

Bei der Wahl des Postscript-Treibers gibt es zwei Alternativen: den von CUPS entwickelten Treiber oder die ebenfalls frei verfügbare Variante von Adobe. Die Version von CUPS bietet erweiterte Funktionen, unterstützt aber nur Windows NT, 2000, XP und 2003. Das Adobe-Produkt wiederum bietet auch Support für die älteren Windows-Versionen 9x/Me, wartet jedoch nicht mit zusätzlichen Funktionen auf. Zum Glück lassen sich mit ein wenig Geschick auch beide Versionen parallel einrichten. Beginnen wir zunächst mit dem CUPS-Treiber.

Das größte Problem ist hierbei, dass SuSE Linux 9.0 CUPS in der Version 1.1.19 enthält. Für diese ist der Windows-Postscript-Treiber nicht mehr über die Webseiten des CUPS-Projekts erhältlich, er kann nur per FTP bezogen werden. Download und Grundinstallation sind mit wenigen Befehlen erledigt:

wget ftp://ftp.cups.org/pub/cups/windows/cups-samba-1.1.16.tar.gz
tar -xvzf cups-samba-1.1.16.tar.gz
./cups-samba.install

Nachdem das Installations-Script seine Arbeit beendet hat, finden sich im Verzeichnis /usr/share/cups/drivers die Treiberdateien cups.hlp, cupsdrvr.dll und cupsui.dll.

Adobe-Treiber für Windows 9x vorbereiten

Etwas schwieriger gestalten sich die Vorbereitungen für den Adobe-Treiber zur Unterstützung von Windows 9x/Me. Leider bietet Adobe seinen Postscript-Treiber nämlich nicht als extrahierbares Archiv, sondern lediglich als installierbare Exe-Datei an. Daher benötigen Sie einen Rechner unter Windows, um an die Treiberdateien zu gelangen. Laden Sie also je nach Betriebssystem auf Ihrem Windows-Rechner den Treiber für Windows 9x/Me oder die Version für Windows NT, 2000, XP herunter und installieren Sie anschließend einen Dummy-Drucker. Suchen Sie dann auf Laufwerk C: nach der Datei ADOBEPS4.DRV. Wechseln Sie in das Verzeichnis, in dem sich der Treiber befindet. Dort sollten folgende sechs Dateien vorhanden sein: ADFONTS.MFM, ADOBEPS4.DRV, ADOBEPS4.HLP, DEFPRT2.PPD, ICONLIB.DLL und PSMON.DLL. Diese transferieren Sie auf den Linux-Rechner in das Verzeichnis /usr/share/cups/drivers. Am einfachsten geht das über eine auf dem Samba-Server eingerichtete Freigabe.

Treiber-Download aktivieren

Sind alle Daten im Treiberverzeichnis von CUPS abgelegt, stellt sich die Frage, wie die Clients nun an die Treiber kommen. Die Antwort lautet: über eine spezielle Ressource des Samba-Servers. Allerdings reicht es dazu nicht, einfach in der Samba-Konfiguration eine weitere Dateifreigabe auf das Verzeichnis mit den Treibern zu definieren - so einfach macht es uns Microsoft nicht. Eine zusätzliche Sektion in /etc/samba/smb.conf ist trotzdem nötig:

[print$]
path = /etc/samba/drivers
browsable = yes
guest ok = no
read only = yes
write list = root, @ntadmin

Da das Verzeichnis /etc/samba/drivers noch nicht existiert, müssen Sie es noch anlegen und mit den richtigen Rechten versehen:

mkdir /etc/samba/drivers
chmod 755 /etc/samba/drivers

Unterhalb dieses Verzeichnisses erwarten die Microsoft-Betriebssysteme eine spezielle Struktur, in der jede Windows-Variante die für sie bestimmten Treiber vorfindet. Anstatt diese nun per Hand zu erzeugen und die Dateien an die richtige Stelle zu kopieren, bedienen Sie sich lieber des Hilfsprogramms cupsaddsmb:

cupsaddsmb -a

Sie werden nach dem Passwort für den Samba-User root gefragt. Sollte dies mehr als einmal passieren, dann ist der Superuser noch nicht in der Benutzerdatenbank von Samba enthalten. Das ist kein Beinbruch, der Befehl smbpasswd -a root behebt das Problem.

Wenn Sie jetzt in das Verzeichnis /etc/samba/drivers wechseln und dort per ls ein Directory-Listing abrufen, sehen Sie, dass cupsaddsmb dort zwei neue Verzeichnisse angelegt hat: WIN40 und W32X86. Das erste Directory enthält die Treiber für Windows 9x/Me, im zweiten finden sich die CUPS-Treiber für die 32-Bit-Versionen von Windows. Zusätzlich sind Dateien vorhanden, die den Namen der unter CUPS definierten Drucker und die Namenserweiterung .ppd tragen.

Im Hintergrund hat das Utility cupsaddsmb also ganze Arbeit geleistet. Nicht nur, dass es die korrekte Verzeichnisstruktur erzeugt hat. Zusätzlich wurden auch die Einstellungen für die gesamten Drucker richtig gesetzt und die notwendigen Treiberdateien an die von den Clients erwartete Stelle kopiert. Starten Sie nun den Samba-Dämon per /etc/init.d/smb restart neu. Sobald Sie jetzt auf einen von diesem Server bereitgestellten Drucker zugreifen, wird - nach dem obligatorischen Warnhinweis - der Druckertreiber automatisch auf dem Client installiert.

Quoten für Druckaufträge

Der Lohn der Mühe ist nicht nur die Arbeitserleichterung, da die manuelle Installation der Treiber auf den Clients entfällt. Zumindest für Clients unter Windows NT, 2000, XP und 2003 stehen Ihnen nun auch erweiterte Optionen zur Kontrolle der Druckaufträge zur Verfügung. So können Sie beispielsweise über verschiedene Limits festsetzen, wie viele Druckjobs ein Client in einem definierten Zeitraum absetzen kann oder wie groß das Volumen der Aufträge während einer Periode sein darf. Das ist unter anderem sinnvoll, um zu verhindern, dass die Anwender Einladungen zu privaten Feiern auf dem Farbdrucker ausgeben, kann aber auch für die Umlage der Druckkosten auf einzelne Abteilungen dienen. Soll zum Beispiel verhindert werden, dass auf dem Drucker dj940c von einem User mehr als 20 Seiten pro Woche gedruckt werden, dann lässt sich das über ein einfaches Kommando erreichen:

lpadmin -p dj940c -o job-quota-period=604800 -o job-page-limit=20

Wollen Sie hingegen das Druckvolumen für den Drucker x4510 auf zwei Megabyte pro Tag begrenzen, dann wäre dies die richtige Syntax:

lpadmin -p x4510 -o job-quota-period=86400 -o job-k-limit=2048

Derzeit hat dieses Verfahren allerdings noch einige Nachteile. So können die Limits nur global vergeben werden, sie wirken sich also für alle User gleich aus. Zudem ist CUPS noch nicht in der Lage, beim Druck auftretende Fehler zu berücksichtigen. Tritt also beispielsweise bei der Ausgabe eines hundertseitigen Dokuments auf der zweiten Seite ein Papierstau auf, werden dem Anwender trotzdem 100 Seiten auf das virtuelle Konto gebucht. Mit der Version 1.2 von CUPS sollen diese Mängel behoben werden. Da sich diese derzeit noch in Entwicklung befindet, sollten Sie jedoch zumindest in Produktivumgebungen von ihrem Einsatz Abstand nehmen.

Den Zugang beschränken

Mit der bislang beschriebenen Konfiguration erhält jeder Anwender Zugriff auf alle Drucker - egal ob es sich um einen User im lokalen Netz handelt oder um einen Benutzer, der von einer völlig anderen IP-Adresse aus seine Aufträge schickt. Nun macht es zwar wenig Sinn, vom Internet aus Dokumente auf fremden Druckern auszugeben. Aber über passend modifizierte Printjobs kann man Drucker auch lahm legen und so den Arbeitsablauf eines Unternehmens empfindlich stören. Die einfachste Maßnahme gegen einen derartigen Angriff ist die Beschränkung des Zugriffs auf einen festgelegten Bereich von IP-Adressen. Dazu ist lediglich die Sektion [printers] der Samba-Konfiguration um eine Befehlszeile zu erweitern:

hosts allow = 192.168.0.0/24

Mit diesem Befehl schränken Sie den Zugriff auf Rechner ein, die eine IP-Adresse aus dem Subnetz 192.168.0.x besitzen. Wenn Sie wollen, dass sich die Anwender vor der Nutzung des Druckers auch am Server anmelden müssen, ist die Zeile mit der Anweisung guest ok zu ändern:

guest ok = no

Etwas aufwendiger wird es, wenn nicht alle am Server definierten Drucker für alle Anwender sichtbar sein sollen. Bisher hat die spezielle Samba-Ressource [printers] dafür gesorgt, dass alle unter CUPS bekannten Drucker automatisch im Netz bereitgestellt werden. Um dieses Verhalten zu ändern, muss die globale Ressource [printers] gelöscht und jeder Drucker als eigene Ressource definiert werden. Entsprechende Einträge für die Drucker dj940c und x4510 wären also:

[dj940c]
path = /var/spool/samba
browsable = no
guest ok = no
writeable = no
printable = yes
valid users = @grafik
printer admin = root, @ntadmin
[x4510]
path = /var/spool/samba
browsable = no
guest ok = no
writeable = no
printable = yes
printer admin = root, @ntadmin

Durch das Setzen der Option valid users = @grafik erhalten nur die Anwender Zugriff auf den Farbdrucker, die Mitglieder in der Linux-Benutzergruppe grafik sind, während der normale Laserdrucker allen Usern zur Verfügung steht. Wie anhand des Beispiels zu sehen ist, können die Spool-Verzeichnisse für die einzelnen Drucker auf dasselbe lokale Directory zeigen. Es lassen sich aber auch separate Verzeichnisse für jeden Drucker angeben.

Drucken mit Windows-Treibern: Vorarbeiten

Obwohl CUPS recht leistungsfähig ist und inzwischen nahezu 700 Drucker direkt unterstützt, kann es vorkommen, dass Druckaufträge über den generischen Postscript-Treiber nicht richtig auf Papier gebracht werden. In diesem Fall ist es ratsam, für den betroffenen Drucker den spezifischen Windows-Treiber zu verwenden. Dieser lässt sich leicht mit Hilfe des Wizards "Drucker hinzufügen" von Windows NT, 2000 oder XP auf dem Samba-Server installieren - wenn auch in einer nicht ganz logischen Art und Weise. Um das zu demonstrieren, richten Sie zunächst per lpadmin einen neuen Druckereintrag - zum Beispiel für den am USB-Port angeschlossenen HP Deskjet - ein:

lpadmin -p drvtest -E -P /usr/share/cups/model/HP/Deskjet_940C-cdj970.ppd.gz
lpadmin -p drvtest -v usb:/dev/usb/lp0

Wichtig ist, dass Sie diesem Drucker keinen herunterladbaren Treiber zuordnen, also das Hilfsprogramm cupsaddsmb nicht ausführen. Da nun Windows-spezifische Treiber installiert werden, müssen Sie zusätzlich CUPS darauf vorbereiten, dass es nun nicht mehr nur Postscript-Daten, sondern zusätzlich bereits für den jeweiligen Drucker aufbereitete Rohdaten verarbeiten können soll. Dazu ist jeweils eine Änderung in den beiden Dateien /etc/cups/mime.convs sowie /etc/cups/mime.types notwendig. Ziemlich am Ende dieser Dateien findet sich eine auskommentierte Zeile, die Sie durch Entfernen des Kommentarzeichens aktivieren:

#Diese Zeile aktivieren, damit CUPS auch Rohdaten verarbeitet
application/octet-stream application/vnd.cups-raw 0 -

Jetzt müssen Sie noch CUPS per /etc/init.d/cups restart und Samba per /etc/init.d/smb restart neu starten, damit diese den neuen Drucker und die aktualisierten Einstellungen erkennen.

Windows-Treiber auf dem Server installieren

Ist das erledigt, starten Sie auf einem Rechner unter Windows NT, 2000 oder XP den Explorer und öffnen dort die Netzwerkumgebung. Navigieren Sie zu Ihrem Samba-Server. Melden Sie sich als Benutzer root mit dem unter Linux für den Superuser vergebenen Passwort am Samba-Server an und wechseln Sie auf diesem in das Verzeichnis "Drucker und Faxgeräte". Es ist wichtig, dass Sie wirklich in dieses Verzeichnis wechseln und nicht den Drucker auswählen, der Ihnen bereits in der Ressourcen-Übersicht für den Samba-Server präsentiert wird.

Hier rufen Sie per Klick mit der rechten Maustaste das Kontextmenü des zuvor eingerichteten Druckers drvtest ab und wählen den Punkt "Eigenschaften".

Auf die nun folgende Frage, ob Sie die nicht vorhandenen Treiber für den gewählten Drucker installieren möchten, antworten Sie unbedingt mit "Nein". Das erscheint zwar unlogisch, ist aber die einzige Möglichkeit, für diesen Drucker den in Windows integrierten Wizard zum Upload der Treiber auf den Server zu aktivieren. Dieser verbirgt sich auf der Karteikarte "Erweitert" hinter der Schaltfläche "Neuer Treiber".

Da wir für unser Beispiel einen HP-Deskjet 940 verwendet haben, wählen Sie den passenden Treiber aus der nun dargestellten Übersicht aus. Ein Klick auf die Schaltfläche "Weiter" startet die Installation des Treibers. Diese erfolgt nun aber nicht etwa lokal, sondern auf dem Samba-Server, wie der Pfad für das Ziel der Kopieraktion unschwer erkennen lässt.

Damit sind aber erst die Treiber für Windows NT, 2000 und XP auf den Server übertragen. Um auch für Windows 95, 98 und ME die notwendigen Dateien auf dem Server zur Verfügung zu stellen, wechseln Sie auf die Karteikarte "Freigabe". Unter Windows XP kann es sein, dass Sie dort zunächst die Freigabefunktion aktivieren müssen, bevor Sie an die Schaltfläche "Zusätzliche Treiber" herankommen.

Markieren Sie hier die Option "Windows 95, 98 und ME" und quittieren Sie Ihre Wahl mit einem Klick auf den Button "Weiter". Windows fragt Sie nun nach dem Speicherort der zu transferierenden Treiberdateien. Diese müssen Sie sich in der Regel von der Website des Druckerherstellers besorgen und hoffen, dass dieser entweder direkt entpackbare Archive anbietet oder die meist anzutreffende Installationsroutine lediglich ein Verzeichnis mit den Treibern erzeugt, anstatt diese gleich auf dem Rechner einzurichten. Nach einer weiteren Bestätigung startet der Dateitransfer, diesmal in das Verzeichnis auf dem Samba-Server, aus dem die 16-Bit-Versionen von Windows ihre Treiber erwarten.

Damit ist das Einrichten der Treiber beendet. Sobald sich nun ein Windows-Client auf einem Rechner mit Intel-Architektur am Samba-Server anmeldet, erhält er automatisch die passenden Treiber gleich von dort installiert.

Fazit

Seit den ersten Anfängen hat sich Samba nicht nur zu einem leistungsfähigen Fileserver, sondern auch zu einem äußerst flexiblen Printserver für Windows-Clients gemausert. Große Teile dieser Funktionalität verdankt es dem hervorragenden Drucksystem CUPS, andere Bereiche wie die automatische Installation der Treiber auf den Clients und die gelungene Integration mit CUPS sind das Verdienst der engagierten Entwickler. Insgesamt lässt sich mit Hilfe von Samba mittlerweile ein Windows-Server wirklich vollständig ersetzen, und das auf meist weniger leistungsfähiger Hardware und somit deutlich geringeren Kosten. Demgegenüber steht nur der anfangs etwas höhere Administrationsaufwand - ein Manko, dem man mit ein wenig Lernwillen leicht begegnen kann.