Ein Solaris-System als Datei-, Druck- und FAX-Server im heterogenen Netz


Im folgenden Tutorial geht es – wie aus der Überschrift zu entnehmen ist – darum, mit einem Solaris-System im SOHO-Bereich die genannten Serverdienste anzubieten.

Konkret soll realisiert werden:

Vorausgesetzt ist eine Solaris 10 Developer (Minimum) Installation und die Verwendung von beiliegendem Compilerprofil (einzubinden mit source ~/cc_profil).


  1. Samba 3 als Dateiserver

    Samba 3 wird seit Solaris 10 mitgeliefert – die Pakete heißen SUNWsmbar, SUNWsmbau und SUNWsmbac. Die Installation sollte dementsprechend keine Probleme verursachen.

    Die Konfiguration ist für die Zwecke des Tutorials ebenfalls kein Problem, eine ausreichend kommentiertes Konfigurationsbeispiel (smb.conf) mit privaten Verzeichnissen der User (Sektion [homes]), einem für alle User sichtbaren (browseable) Verzeichnis (Sektion [tausch]) sowie einigen anderen Beispielen findet sich im Anhang. Sie muss in das Verzeichnis /etc/sfw/ kopiert werden, danach muss Samba neu gestartet werden.

      /etc/init.d/samba stop

      /etc/init.d/samba start

    Wichtig ist, das Samba nur die Nutzernamen nicht aber die Passwörter vom System übernimmt und daher eine eigene Passwortdatei benötigt, in die man die Samba-Nutzer mit „smbpasswd -a Nutzername“ eintragen muss (der einzutragende Nutzer muss bereits existieren) – das zu vergebende Passwort muss nicht mit dem Systempasswort des Users identisch sein. Aufgrund der verschiedenen Passwortdatenbanken macht es Sinn, die Nutzernamen und Passwörter auf den Clientsystemen (Windows) und auf dem Samba-Server aneinander anzugleichen – mit Win2k/XP erspart man sich so zusätzliche Passwortabfragen und mit Windows9x geht es gar nicht anders.

    Auf den Samba-Server kann man nun von im gleichen Netz / gleicher Arbeitsgruppe befindlichen Windows-Rechnern über die Netzwerkumgebung zugreifen. Falls der Server dort nicht aufgeführt wird oder man abkürzen möchte, kann man ihn auch direkt aus der Adressleiste eines Ornderfensters über den NetBIOS Namen (für die Beispiel-Konfiguration \\server\ ) oder seine IP-Adresse (im Beispiel \\10.0.0.50\) ansprechen.
    Freigegebene Verzeichnisse können als Netzlaufwerk gebunden (Rechtsklick auf das Verzeichnis) und dann mit den windows-typischen Laufwerksbuchstaben verwendet werden.





  1. CUPS als IPP-Druckserver

    Das stable release 1.1.23 (auf http://www.cups.org erhältlich) lässt sich ohne größere Schwierigkeiten unter Solaris 10 kompilieren.

    Nach dem Entpacken der Sourcen muss man lediglich die C Compiler festlegen, damit der Sun Studio Compiler verwendet wird.

      export CXX=CC

      export CC=CC

      ./configure --prefix=/usr/local --disable-openssl --disable-gnutls

      gmake

      gmake install

    Die Konfiguration von CUPS erfolgt über ein Web-Interface, welches standardmäßig nur über 127.0.0.1:631 erreichbar ist. Soll CUPS auch von anderen Rechnern konfigurierbar sein, muss in der Datei /usr/local/etc/cups/cupsd.conf in den Abschnitten <Location /> und <Location /admin> jeweils ein Eintrag „Allow From“ mit dem passenden Subnetz (hier 10.0.0.0/24) hinzugefügt werden.

    Beispiel:

      <Location />

      Order Deny,Allow

      Deny From All

      Allow From 127.0.0.1

      Allow From 10.0.0.0/24

      </Location>


    Einen Drucker kann man nun über das Web-Interface (im Beispiel 10.0.0.50:631) in der Sektion „Einrichtungsaufgaben“ hinzufügen.
    Um Treiberproblemen aus dem Weg zu gehen, verwende ich auf dem CUPS-Rechner den RAW-Treiber (Hersteller) und generiere die Druckdaten auf den Client-Rechnern.

    Damit die Druckdaten unverändert zum Drucker gelangen, muss in zwei Dateien je eine Zeile am Dateiende entkommentiert werden:

    Danach ist CUPS neu zustarten – /etc/init.d/cups stop && /etc/init.d/cups start

    Um den Drucker via IPP unter Windows2000/XP nutzen zu können, wählt man im Druckerinstallationsassistenten die Option Netzwerkdrucker, gibt die URL des Druckservers mit dem Port von CUPS an (z.B. http://10.0.0.50:631/printers/drucker – wobei „drucker“ der CUPS-Name des Druckers ist) und installiert dann nach Aufforderung den passenden Druckertreiber für Windows.

  1. CUPS mit Samba als Windowsdruckserver

    Nicht jedes Windows spricht IPP – falls Windows 95 / 98 Clients verwendet werden, kann man auch per Samba drucken. Diese Funktion wird durch die Sektion [printers] in der smb.conf realisiert. Samba gibt die in der printcap-Datei angegebenen Drucker (also die in CUPS eingerichteten) automatisch mit frei.

  2. Faxempfang und Weiterleitung als Mail mit PDF-Anhang mittels Hylafax
    Voraussetzung ist ein seriell angeschlossenes Fax-Modem.
    Nach dem Entpacken der Hylafax 4.2.5 (http://www.hylafax.org) Sourcen durchsucht man das Verzeichnis nach „5bin“ (grep -r 5bin ./) und ändert es an den gefundenen Stellen in „bin“, damit wieder gültige Pfade entstehen. Dann lässt Hylafax wie folgt unter Solaris 10 kompilieren:

    export CC=/opt/SUNWspro/bin/cc

    ./configure

    gmake
    gmake install

    Da das configure Script Ghostscript unter /usr/local sucht, muss man bei der Abfrage am Ende des Scripts den Pfad für gs eintragen – er ist /usr/sfw/bin/gs
    Nach der Installation führt man faxsetup aus – man kann fast alle Werte auf Standard lassen. Es ist nicht zwingend notwendig, Hylafax und SNPP in /etc/services einzutragen – ich habe daher no gewählt.
    In der folgenden Abfrage passt man Nummern wie CountryCode / AreaCode / FAXNumber (eigene) / (LongDistancePrefix / InternationalPrefix) / LocalIdentifier (eigener Name) an sein Setup an.
    Das Modem-Device ist relativ zu /dev/ anzugeben – in unserem Fall term/b, was schlussendlich das Gerät /dev/term/b – die zweite serielle Schnittstelle (die erste ist /dev/term/a) – meint.

    Bei der Abfrage der Modemklasse kann man ruhig Class2 wählen – die in den letzten Jahren gebauten Modems sollten dieser entsprechen (mein 14400er FaxModem tut dies u.a. auch). Am Ende von faxsetup lässt man faxmodem ausführen. Um Faxe empfangen zu können, muss man noch faxgetty mit der entsprechenden Schnittstelle starten – im Beispiel faxgetty /dev/term/b - jetzt sollte, wenn man das Modem anruft, den typischen Pfeifton eines Faxgerätes hören.
    Den Status des Modems kann man sich mit faxstat anzeigen lassen – im Normalfall sollte einige Sekunden nachdem faxgetty gestartet wurde, „Running and idle“ ausgegeben werden.

    Damit Hylafax TIF-Dateien generieren kann, benötigt man libtiff (www.libtiff.org) – die TIFF-Tools von Solaris haben Probleme verursacht.

    export CC=cc
    export CXX=CC
    ./configure –prefix=/usr/local
    gmake
    gmake install

    Um die empfangenen Faxe als PDF weiterleiten zu lassen, muss man die Datei FaxDispatch in /var/spool/hylafax/etc anlegen. Eine einfache Version könnte so aussehen:

    FILETYPE=pdf;
    SENDTO=faxmaster;

    Da Mail-Anhänge base64 kodiert sein müssen, benötigt man noch ein entsprechendes Programm – ich habe uuencode aus den sharutils verwendet (http://www.gnu.org/software/sharutils/) - das Kompilieren gestaltet sich wieder unkompliziert:

    export CC=cc
    export CXX=CC
    ./configure –prefix=/usr/local
    gmake
    gmake install

    Dann muss man in /var/spool/hylafax/etc/setup.cache einige Änderungen vornehmen:

    In /var/spool/hylafax/bin/faxrcvd muss an zwei Stellen (Zeile 136 und 138) grep in $GREP geändert werden, da das Script sonst das Solaris grep verwendet, welches die Option -E nicht kennt.

    Danach startet man Hylafax neu und empfangene Faxe sollten in der Mailbox des Users landen, der als Alias für Faxmaster eingetragen ist. Man kann in dieser Datei die Faxe auch nach Nummern der Sender oder nach Device verschiedenen Usern zuordnen – mehr dazu in der Manpage.

    Zum Abruf der empfangenen Faxe eignet sich ein POP3 Daemon wie z.B. QPopper (
    http://www.eudora.com/products/unsupported/qpopper/index.html). Das Kompilieren geht problemlos:

    export CC=cc
    ./configure --prefix=/usr/local –enable-standalone

    gmake
    gmake install

    Die installierte Binary heißt popper und muss einfach nur gestartet werden – dann kann man mit seinem Mailclient die Faxe abrufen, in dem man als POP3 Server den Hylafax-Rechner und als Nutzer / Passwort entsprechend den Unix-Login des Users, der als Alias für faxmaster eingetragen ist, verwendet.

  1. Faxversand von verschiedenen Clients mittels Hylafax

    Zum Fax-Versand von verschiedenen Client-Systemen eignet sich JhylaFAX (http://jhylafax.sourceforge.net/) bestens. Berechtige User werden in /var/spool/hylafax/etc/hosts.hfaxd definiert - ^nutzer@ erlaubt nutzer von jedem Rechner aus das Versenden von Faxen. Näheres zu der Vergabe von Rechten / Passwörtern in der Manpage.

  1. smb.conf

# Globale Parameter

[global]

# Anmeldeart - alternativ "security = share" - eine Nutzeranmeldung ist dann nicht notwendig

security = user

# Passwoerter werden verschluesselt uebertragen - in aelteren Windowsversionen war das nicht zwingend noetig

encrypt passwords = Yes

# Pfad zur Passwortdatei

smb passwd file = /etc/sfw/smbpasswd


# mehr Logging zwecks Fehlersuche

# je hoeher, desto mehr Datensalat findet sich in der Log-Datei - level 2 ist zur Fehlersuche meist ausreichend

log level = 2

log file = /var/log/samba.log

# maximale Groesse der Logdatei in kB

max log size = 100


# NetBIOS Informationen

# Name der Win-Arbeitsgruppe - sollte mit den Clientrechnern uebereinstimmen

workgroup = WORKGROUP

# Kommentarfeld

server string = Datei- und Druckserver

# Name des Systems

netbios name = server


# hat im [globals] Abschnitt Einfluss auf die "Sichtbarkeit" in der Netzwerkumgebung von Win

browsable = Yes


# Absicherung

# Samba reagiert nur auf Anfragen vom entsprechenden Interface

interfaces = 10.0.0.50/255.255.255.0

# und auf keine anderen

bind interfaces only = yes

# und nur auf Anfragen aus dem richtigen Subnetz

hosts allow = 10.0.0.

# root darf sich nicht per Samba anmelden

invalid users = root


# nach 10 Minuten Inaktivitaet des Clients wird die Verbindung geschlossen

deadtime = 10


# Charset des Servers - wichtig zur Konvertierung von Umlauten etc. - default ASCII

unix charset = ISO8859-1


# Festlegen des Drucksystems

printing = cups

# Ort der printcap Datei

printcap name = /etc/printcap


# alle verfügbaren Drucker werden automatisch geladen

[printers]

# Kommentarfeld

comment = freigegebene Drucker

# Spoolpfad - alle Samba-User sollten Schreibrechte haben

path = /var/spool/samba

# ein "MUST BE" laut Manpage - macht auch Sinn

printable = yes

# bei Verwendung eines RAW-Druckers kommt es mit WinNT/2k/XP sonst zu Problemen

use client driver = yes

# CUPS bringt eigene lp-Tools mit - die Solaris eigenen sind ungeeignet

print command = /usr/local/bin/lpr -P %p -o raw %s



# Home-Verzeichnisse der Nutzer - jeder Nutzer "sieht" in der Win-Netzwerkumgebung nur sein eigenes

[homes]

# Kommentarfeld

comment = Homeverzeichnis

# Schreibzugriffe moeglich

writeable = yes

# die [homes] Sektion erscheint nicht gesondert in der Win-Netzwerkumgebung

browseable = No


# [global], [printers] und [homes] sind spezielle Sektionen von Samba


# einfache Freigabe fuer alle Nutzer des Servers

[tausch]

# freigegebenes Verzeichnis

path = /export/home/tausch

# Schreibzugriff moeglich

writeable = yes

# auch per Windows-Gastanmeldung zugaenglich

guest ok = yes

# Unix-Rechte bei erstellten Dateien ...

create mask = 0666

# ... und Verzeichnissen

directory mask = 0777



# lesbare Freigabe fuer alle Nutzer des Servers

[installer]

# freigegebenes Verzeichnis

path = /export/home/installer

# Schreibzugriff moeglich

writeable = yes

# auch per Windows-Gastanmeldung zugaenglich

guest ok = yes

# Schreib- und Lesezugriff nur fuer Mitglieder der Gruppe admin (writelist)

create mask = 0664

directory mask = 0775

writelist = @admin

  1. cc_profil

CC=/opt/SUNWspro/bin/cc

CXX=/opt/SUNWspro/bin/CC


PATH=/usr/local/bin:/usr/local/sbin::/usr/sfw/bin:/usr/sfw/sbin:/usr/bin:/usr/sbin:/usr/ccs/bin:/opt/SUNWspro/bin

CFLAGS="-xtarget=native -xarch=v8 -xO3 "

CXXFLAGS="-xtarget=native -xarch=v8 -xO3"

CPPFLAGS="-I/usr/local/include -I/usr/sfw/include"

LDFLAGS="-L/usr/local/lib -R/usr/local/lib -L/usr/sfw/lib -R/usr/sfw/lib"


export CC CXX PATH CFLAGS CXXFLAGS CPPFLAGS LDFLAGS