\documentclass[a4paper,german]{article}
\newif\ifpdf
\ifx\pdfoutput\undefined
  \pdffalse % we do not use PDFLaTeX
\else
  \pdfoutput=1 % we use PDFLaTeX
  \pdftrue
\fi
\usepackage{linuxdoc-sgml}
\usepackage{qwertz}
\usepackage{url}
\usepackage[latin1]{inputenc}
\ifpdf
  \usepackage[pdftex,colorlinks=true,urlcolor=blue,linkcolor=blue]{hyperref}
  \pdfcompresslevel=9
\else
  \usepackage{t1enc}
%%  \usepackage[dvips]{hyperref}
\fi
\usepackage[english]{babel}
\usepackage{epsfig}
\usepackage{null}
\def\addbibtoc{
\addcontentsline{toc}{section}{\numberline{\mbox{}}\relax\bibname}
}%end-preamble
\setcounter{page}{1}
\urldef{\aaaurl} \url{mailto:andreas_kretschmer@despammed.com}
\urldef{\aaburl} \url{http://samba.org/}
\urldef{\aacurl} \url{http://Samba.SerNet.DE/info.html/}
\urldef{\aadurl} \url{http://de.samba.org/samba/ftp/docs/htmldocs/samba-pdc-faq.html/}
\urldef{\aaeurl} \url{http://us2.samba.org/samba/ftp/docs/htmldocs/Samba-PDC-HOWTO.html/}
\urldef{\aafurl} \url{http://samba.idealx.org/}
\title{SAMBA -- Br\"ucke zwischen den Welten}
\author{
{\em Andreas Kretschmer} {\tt \aaaurl}
}
\date{18. Oktober 2003}
\abstract{Die Welt besteht nicht nur aus *NIX-Systemen, daher steht man als Admin oft genug vor der Aufgabe,
auch PCs, die unter dem OS eines amerikanischen Herstellers von Spielekonsolen laufen, mit File- und Druckdiensten zu versorgen. Und ja, Pinguine vertragen auch \"Apfel. Aber darauf gehe ich hier nicht ein.
Ich m\"ochte hier eine einfache Installation und Konfiguration eines SAMBA-Servers vorstellen, mit Windows2000-
Clients, die in einer durch SAMBA kontrollierten Dom\"ane sind. Zur Passwortverwaltung dient smbpasswd.}


\begin{document}
\maketitle

\section{Was ist SAMBA?}




\subsection{Geschichte}

In einer gemischten Umgebung, der der man untereinander kommunizieren will, m\"ussen sich alle Teilnehmer
auf den kleinsten gemeinsamen Nenner einigen.

Auch wenn Linux in solch einer Umgebung mit z.B. NFS oder anderen Netzwerkdiensten aufwarten kann - Windows-Rechner 
k\"onnen es, zumindest von Haus aus, nicht. Was aber Microsoft all seinen neueren Produkten beilegt, ist das
SMB-Protokoll.

Um also in einem Windows-Netzwerk mit seinem Pinguin nicht nur mitreden zu k\"onnen, sondern standesgem\"a\ss{} den Ton
angeben zu k\"onnen, ist SAMBA das Mittel der Wahl.

Andrew Tridgell, Informatikstudent am Computer Science Lab der Australia National Univerity in Canberra, versuchte
1991 eine Verbindung zwischen seinem DOS-Rechner und dem SMB-Server von DCE aufzubauen.

Er begann, die Kommunikation zwischen Client und Server zu analysieren. Er schrieb ein Analysetool, das er 
{\itshape sockspy.c\/} nannte und das auch lange Zeit zu SAMBA geh\"orte.
Irgendwann verstand er die Kommunikation und bastelte ein einfaches Serverprogramm. Im Januar 1992 ver\"offentlichte
er {\ttfamily Server 0.1}, im monatlichen Abstand folgten {\ttfamily Server 0.5} und {\ttfamily Server 1.0}.

Nachdem er Linux entdeckte ;-), portierte er das nach Linux, es lief auf Anhieb. Er hatte inzwischen auch die Dokumentation
zu dem SMB-Protokoll erhalten und begann, das Programm weiterzuentwickeln. Dennoch blieb die Entwicklung durch
Reverse-Engineering kennzeichnend f\"ur SAMBA, insbesondere, weil Microsoft das Protokoll zwar st\"andig
weiterentwickelte, aber keine Details ver\"offentlichte. Mittlerweile ist der 'harte Kern' der Entwickler
ca. 20 Personen gro\ss{}.




\subsection{Details}

Das SMB-Protokoll (Server Message Block) legt fest, wie Windows-Computer im Netzwerk kommunizieren.
SMB erm\"oglicht den Zugriff auf Dateien, Drucker, serielle Schnittstellen und Kommunikationskan\"ale
wie benannte Pipes und Mail-Slots. SAMBA ist eine freie SMB-Implementierung.

Der Ursprung von SMB ist gemeinsam mit NetBIOS, was urspr\"unglich sowohl Programmierschnittstelle als
auch Transportprotokoll war und 1983 von Sytec f\"ur IBM programmiert wurde.
Das Transportprotokoll nennt IBM NetBIOS Frame Protocol (NBF), was h\"aufig auch als NetBIOS-Protokoll
bezeichnet wird.

Im Laufe der Zeit zeigte sich, da\ss{} NetBIOS den Anforderungen gr\"o\ss{}erer Netze nicht gerecht wurde, das
NBF wurde durch das NetBIOS Extended User Protocol ersetzt.

Da es keinerlei Konfiguration erfordert (au\ss{}er da\ss{} jeder Rechner einen eigenst\"andigen NetBIOS-Namen haben mu\ss{}),
setzte es sich schnell in Windows-Netzwerken durch.

Sp\"ater wurden M\"oglichkeiten geschaffen, SMB-Daten in anderen Transportprotokollen zu kapseln. Dies
erm\"oglicht es, Netzwerkfreigaben auch \"uber Routergrenzen hinweg zu nutzen.
Die Kapselung in TCP/IP wird von MS NetBIOS over TCP/IP (NBT, NetBT) genannt.

Zentraler Punkt dieser Integration ist die Aufl\"osung der NetBIOS-Namen in IP-Adressen. Sie erfolgt \"uber
Namens-Server f\"ur NetBIOS, den NBNS (NetBIOS Name Server), Microsoft verwendet daf\"ur den Begriff
WINS (Windows Internet Name Service).







F\"ur diese ganze Geschichte, also der korrekten Namensaufl\"osung, dient unter SAMBA der {\itshape nmbd\/}.

F\"ur das Bereitstellen der Freigaben ist der {\itshape smbd\/} zust\"andig.






\section{Installation}

In der Regel verwendet man das der jeweiligen Distribution beiliegende Paket und installiert es mit den
daf\"ur vorgesehenen Tools.

Unter Debian also:

\begin{verbatim}
kretschmer@kaufbach:~$ apt-cache search samba | grep "^samba"
samba - a LanManager-like file and printer server for Unix
samba-common - Samba common files used by both the server and the client
samba-doc - Samba documentation
\end{verbatim}


F\"ur andere Distributionen sollte man halt die beiliegenden Tools zur Paketverwaltung nutzen.






\subsection{Und selberbauen?}

Der Eigenbau erfolgt, nach dem Download der Quellen, i.d.R. unkompliziert nach dem Linux-Dreisatz.

Also die Quellen runterladen, diese z.B. in /usr/src/ entpacken (tar -xvzf ...). Es entstehen einige
Unterverzeichnisse, u.a. {\itshape docs\/}. Dieses sollte man sich anschauen, die dortigen Dateien sind oft hilfreich.

Nun erst einmal die Doku lesen, man kann mit Parametern f\"ur {\ttfamily configure} noch diverse Dinge einstellen
und seinen Bed\"urfnissen anpassen.



Der zweite Schritt ist configure, dann erfolgt make, make install.






\subsection{Auf die Pl\"atze - fertig - los!}

Der Start von SAMBA (smbd und nmbd) erfolgt \"ublicherweise \"uber die Startscripte, auch hier liefern
die Distributionen passende dazu. Dem Vernehmen nach startet bei SuSE 8.x defaultm\"a\ss{}ig der nmbd nicht
mit, zumindest klang das gelegentlich in Newsgroups an.

Die Folge ist, da\ss{} der SAMBA-Server nicht in der Netzwerkumgebung der Clients auftaucht. Wer also dieses Problem
hat, sollte als erstes pr\"ufen, ob der {\itshape nmbd\/} l\"auft.




\section{Benutzer}

Linux und auch Windows ab NT unterscheidet nach Benutzer, damit wird auch ein Benutzerkennwort erforderlich.
Da SAMBA unter Unix l\"auft, nutzt es nat\"urlich dessen Benutzerkonzept. Leider ist dieses Konzept vom
WindowsNT-Konzept v\"ollig verschieden. Die daraus resultierenden Probleme m\"ussen gel\"ost werden.

Normalerweise sollte jedem Benutzer ein Benutzerkonto eingerichtet werden. Man kann allerdings auch
einrichten, da\ss{} ein Benutzer unter anderem Namen am Client als am Unix angemeldet ist. Dazu kann man
eine Mapping-Datei nutzen, darauf m\"ochte ich hier aber nicht weiter eingehen, sondern nur auf die M\"oglichkeit verweisen.




\subsection{Verschl\"usselung}

Fr\"uhere Versionen des SMB \"ubertrugen Passw\"orter im Klartext, mittlerweile, mit Win 9x/NT, werden Passw\"orter verschl\"usselt
\"ubertragen. SAMBA kann mit beiden Varianten umgehen.

Falls Sie \"altere Clients haben, die nicht verschl\"usseln k\"onnen, m\"ussen Sie SAMBA so einstellen, da\ss{} Klartext-Passw\"orter
akzeptiert werden. Clients, die normalerweise verschl\"usselt \"ubertragen wollen, m\"ussen dann auf unverschl\"usselt
umgestellt werden. Im SAMBA-Paket finden sich dazu passende Registry-Anweisungen.

Wo immer m\"oglich sollte dies aber nicht erfolgen, sondern mit verschl\"usselten Passworten gearbeitet werden.

Da Windows eine andere Verschl\"usselungsroutine als Linux benutzt, sind die Linux-Passwortdateien (passwd, shadow)
oder die NIS-Datenbank so nicht nutzbar. SAMBA verwendet die {\ttfamily smbpasswd} im {\ttfamily private}-Verzeichnis.

Zur Verwaltung der verschl\"usselten SMB-Passw\"orter dient das Programm {\ttfamily smbpasswd}.

Wer von unverschl\"usselten zu verschl\"usselten Passw\"ortern migrieren will, kann mittels folgendem Aufruf erst einmal
alle Benutzer aus {\ttfamily /etc/passwd} in der {\ttfamily /usr/local/samba/private/smbpasswd} erfassen:

\begin{verbatim}
cat /etc/passwd | /usr/src/samba/script/mksmbpasswd.sh > /usr/local/samba/private/smbpasswd
\end{verbatim}


Damit sind alle Passw\"orter allerdings auf leer gesetzt, weil es keinen Weg gibt, ein Passwort zu entschl\"usseln.

Ich habe das vor einiger Zeit auch an einigen Firmenstandorten gemacht, anschlie\ss{}end mit folgenden Eintr\"agen in der
{\ttfamily smb.cond} den Umstieg mir erleichtert:

\begin{verbatim}
update encrypted = yes
encrypt password = no
\end{verbatim}


Nach einiger Zeit, wenn sich alle wenigstens einmal angemeldet haben, disabled man das update und enabled verschl\"usselte
Passw\"orter - die User merken davon nix.




\subsection{Browsing}

Unter Windows hat man die 'Netzwerkumgebung'. Sicher hat der eine oder andere schon einmal bemerkt, da\ss{} es da mitunter
lustige Effekte gibt. Beispiel:

\begin{enumerate}
\item  Rechner A ist zwar nicht zu sehen, aber wenn man seinen Namen kennt, kann man dennoch darauf zugreifen
\item  Rechner B ist zu sehen, aber ein Zugriffsversuch schl\"agt fehl
\end{enumerate}


Nun, die Funktion, die die Netzwerkumgebung aufbaut, nennt sich {\itshape Browsing\/} und z\"ahlt nicht direkt zu den Glanzleistungen
im Netzwerkbereich.




\subsubsection{Browsing - kurz erkl\"art}

Um alle Rechner im Netz in der Netzwerkumgebung zu sehen, mu\ss{} erst einmal eine Liste der Rechner aufgebaut werden.

F\"ur jede Arbeitsgruppe wird ein Rechner zum 'Chef' erkoren, er ist der {\itshape Masterbrowser\/} Er sammelt alle IP-Adressen
und Rechnernamen, die er finden kann, und erstellt diese Liste. Au\ss{}erdem registriert er f\"ur sich den Namen {\ttfamily \_\_MSBROWSER\_\_}.

Das gr\"o\ss{}te Problem an dieser Liste ist die Aktualit\"at. Die Rechner melden sich beim booten an, au\ss{}erdem regelm\"a\ss{}ig im Betrieb.
Diese Meldungen erfolgen als UDP-Broadcasts. Da UDP keine gesicherte Verbindung darstellt, kann der Masterbrowser nicht sofort
einen Client aus seiner Liste streichen, wenn mal kein Paket kommt. Dies erfolgt erst nach 36 Minuten. Wir haben Fall B.

Da der Masterbrowser bestrebt ist, seinen Job sorgf\"altig zu machen, versucht er, seine Liste an einen Backup-Browser zu geben.
Dadurch braucht er nicht selbst alle Anfragen von Clients nach der Liste beantworten, sondern kann es an den Backup-Server
delegieren. Da dieser aber nur aller 15 Minuten aktualisiert wird, kann Fall 1 eintreten.



Nun stellt sich noch die Frage: Wer wird Masterbrowser?





Dazu hat MS seinen Betriebssystemen einen festen Wert mitgegeben:

\begin{verbatim}
WfW                          1
W9x                          2
WinNT Workstation 3.51      16
WinNT Workstation 4.0       17
WinNT Server 3.51           32
WinNT Server 4.0            33
\end{verbatim}


Und SAMBA?

Das ist bei SAMBA der OS-Level und ist frei definierbar. Mit 64 gewinnt er immer ;-)

\begin{verbatim}
preferred master       Browser-Wahl bei jedem Start von nmbd durchführen
local master           an der Browser-Wahl teilnehmen
\end{verbatim}


Damit kann man noch steuern, ob eine Wahl erzwungen werden soll und ob SAMBA als Masterbrowser \"uberhaupt zur
Verf\"ugung stehen soll. Es kann nur einen geben!






\section{Konfiguration}

Die zentrale Konfiguration von SAMBA erfolgt in der Datei {\itshape smb.conf\/}, die distributionsabh\"angig
an unterschiedlichen Orten sich befinden kann. \"Anderungen an dieser Datei bemerkt SAMBA selbst\"andig,
man braucht also nach \"Anderungen den Dienst i.d.R. nicht neustarten.

Der Aufbau dieser Datei ist simpel:

Es gibt einzelne Sektionen, die die f\"ur diese Sektion g\"ultigen Optionen beinhaltet. Ich m\"ochte dies
an einem Beispiel erkl\"aren:




\subsection{Server}






\subsubsection{Global}

Zuerst einmal {\itshape {[}global]\/}

\begin{verbatim}
# Global parameters
[global]
        security = user
        encrypt passwords = Yes
        workgroup = SGS
        browsable = Yes
        browse list = Yes
        netbios name = pinguin
        interfaces = 192.168.1.1/255.255.255.0 lo
        bind interfaces only = yes
#
        read bmpx = Yes
        max xmit = 8192

# nach 10 Minuten werden Verbindungen ohne offene Files als geschlossen betrachtet
        deadtime = 10


        keepalive = 30
        read size = 8192
        socket options = TCP_NODELAY SO_SNDBUF=8192 SO_RCVBUF=8192

# wichtig: unser Logon-Script. Relativ zu [netlogon]!
# Wichtig: DOS-Datei mit DOS-Zeilenenden!
        logon script = LOGON.BAT

# für uns wichtig
        domain logons = Yes

# damit gewinnt SAMBA gegen eNTen
        os level = 64

# JA!, wir sind der Master-Browser!
        preferred master = Yes
        domain master = Yes
        local master = Yes

# Ja!, wir sind auch WINS-Server
        wins support = Yes


        create mask = 0600

        character set = iso8859-1
        client code page = 850
        logon drive = y:


# angeblich braucht Access folgendes:
        oplocks = yes
        strict locking = yes

        printcap name = /etc/printcap
        load printers = yes
\end{verbatim}






Damit ist der grundlegende Serverdienst konfiguriert - kommen wir nun an die eigentlichen Shares:




\subsubsection{Logon und Rechner-Verzeichnis}



Das Rechner-Verzeichnis ist eine Sache, die ich mir eingerichtet habe, dazu sp\"ater mehr.



\begin{verbatim}
[netlogon]
        comment = Netzwerk-Login
        # preexec = echo \"%u connected to %S from %m (%I)\" >> /tmp/samba.log
        path = /usr/local/samba/netlogon

[machine]
        comment = Netzwerk-Login
        path = /usr/local/samba/netlogon/%m
\end{verbatim}






Man kann seine Konfiguration mittels {\itshape testparm\/} aus dem SAMBA-Paket testen. Damit k\"onnen
Syntaxfehler leicht gefunden werden, nat\"urlich keine logischen Fehler wie falsche Rechte.












\subsubsection{Logon-Script}

\"Uber das Logon-Script, welches bei einer Dom\"anen-Anmeldung auf dem Client ausgef\"uhrt wird, kann man auf den
Clients diverse Dinge tun, u.a. Uhrzeit stellen und Laufwerke zu Shares mappen.
Achtung: um Win2000-Clients mit der Uhrzeit versorgen zu k\"onnen, mu\ss{} man in den lokalen Sicherheitseinstellungen
authentifizierten Benutzern das Recht zur Uhrzeiteinstellung einr\"aumen.



\begin{verbatim}
net time \\pinguin /set /yes
net use X: /d
net use X: \\pinguin\machine
call X:\machine.bat
net use X: /d
net use W: \\pinguin\Arbeitsvorbereitung
net use X: \\pinguin\Allgemein
net use Y: \\pinguin\homes
call y:\user.bat
\end{verbatim}


Der 2. Befehl unmountet ein evtl. vorhandenes gemapptes Share an X:, um dort das Share "machine" zu mappen.
Dieses Share ist in der smb.conf als {\ttfamily  /usr/local/samba/netlogon/\%m } definiert, das Makro {\ttfamily \%m}
wird mit dem NetBIOS-Namen des Clients erweitert. Ich habe f\"ur einige Rechner spezielle Mappings, z.B. f\"ur
Rechner, an denen ein Scanner angeschlossen ist. Daher rufe ich mit dem 4. Befehl dann eine rechnerspezifische
Startdatei auf.

Weiter rufe ich eine Userspezifische Batch-Datei auf. Dies enth\"alt dann z.B. f\"ur unterschiedliche Mitarbeiter
unterschiedliche Mappings von Laufwerken. So erreiche ich, da\ss{} sich z.B. ein Mitarbeiter auch an einen Rechner
eines anderen anmelden kann und dennoch seine gewohnten Laufwerke gemappt vorfindet.



Zu beachten ist bei diesen Startdateien, da\ss{} diese auf dem Client durchgef\"uhrt werden, also m\"ussen sie dort
korrekt lesbar sein. Daher Achtung, wenn man diese auf dem Server editiert, es m\"ussen die DOS-typischen Zeilenumbr\"uche
vorhanden sein.(vi: set ff=dos)



Wie im Beispiel gesehen, k\"onnen diverse Makros verwendet werden. Hier einige dieser Makros:
\begin{verbatim}
%u   Username
%m   NetBios-Name des Clients
%I   IP-Adresse von Client
%d   PID des Serverprozesses
%a   Betriebssystemversion vom Client
%T   aktuelle Datum und Uhrzeit
\end{verbatim}





\subsubsection{HOME}

\begin{verbatim}
[homes]
        #preexec = echo \"%u connected to %S from %m (%I)\" >> /tmp/samba.log
        comment = Heimatverzeichnis
        veto files = .*
        writeable = Yes
        browseable = No
# Achtung: folgendes ist wichtig für Win200 ab SP2 zur Ablage der Profile
        nt acl support = no
\end{verbatim}







\subsubsection{spezielle Anforderungen}

Manchmal ist z.B. ein f\"ur alle frei zug\"angliches Verzeichnis recht nett. Ich nenne ein solches Share "Allgemein":
\begin{verbatim}
[Allgemein]
        comment = Allgemein
        path = /usr/local/samba/Allgemein
        read only = no
        public = yes
        guest ok = yes
        create mask = 0666
        directory mask = 0777
\end{verbatim}


Oder ich m\"ochte ein Verzeichnis, was nur von einer Mitarbeitergruppe ansprechbar ist:
\begin{verbatim}
[Objekt]
        comment = Objektteam Heynitz
        path = /usr/local/samba/Objektteam
        read only = no
        create mask = 0660
        directory mask = 0770
        force group = objekt
        valid users = @objekt
\end{verbatim}







\subsubsection{Drucker}

Da bei uns das 'normale' lpr-System l\"auft, gestaltet sich die Freigabe der Drucker recht einfach:

\begin{verbatim}
[printers]
   comment = All Printers
   path = /var/spool/lpd
   browseable = yes
   public = yes
   guest ok = yes
   printable = yes
\end{verbatim}


Damit werden alle dem Server bekannten Drucker (/etc/printcap) auch unter SAMBA sichtbar.












\subsection{Und die Clients}

Win2000 kann echt zickig sein und erfreut oft mit sinnfreien Fehlermeldungen. Daher sollten
einige Dinge beachtet werden:

\begin{enumerate}
\item  auf dem Server zuerst einen Maschinenaccount anlegen
\begin{verbatim}
root# /usr/sbin/useradd -g 100 -d /dev/null -c "machine nickname" -s /bin/false machine_name$ 
root# passwd -l machine_name$
root# smbpasswd -a -m machine_name
\end{verbatim}
\item  root mu\ss{} als SMB-User angelegt sein (smbpasswd -a root), hierbei kann ein anderes Passwort
als das UNIX-Passwort verwendet werden.
\item  es d\"urfen keinerlei Laufwerke gemappt sein
\end{enumerate}







\subsection{SWAT}

SWAT {\itshape Samba Web Administration Tool\/} richtet sich vor allem an Anwender, die (noch) ihre
Probleme mit der Kommandozeile haben.

SWAT erm\"oglicht, via Web-Oberfl\"ache die vielf\"altigen Optionen der SAMBA-Konfiguration auf einfache
Art und Weise zu beeinflussen.






\subsection{WebMin}

Eine weitere M\"oglichkeit der grafischen Administration von SAMBA stellt WebMin bereit.



Da ich weder SWAT noch WebMin nutze, gehe ich auf diese Programme nicht weiter ein.






\subsection{Fehlersuche}

Normalerweise l\"auft SAMBA auf Anhieb. Falls es dennoch Probleme geben sollte, sollte man in dieser Reihenfolge
auf Fehlersuche gehen:

\begin{enumerate}
\item Die einfachsten Sachen sind manchmal das gr\"o\ss{}te Problem. Findet der {\itshape smbd\/} seine Konfiguration?
Mittels {\ttfamily testparm} ist das einfach zu testen, es sucht in dem einkompiliertem Standardverzeichnis nach der 
{\ttfamily smb.conf} und pr\"uft ihren Inhalt.
\item Steht das Netz? Testen Sie das mit {\ttfamily ping} unter Verwendung der IP-Adresse.
\item Klappt die Namensaufl\"osung? Testen Sie mit {\ttfamily ping}, nun aber mit den Rechnernamen.
\item Sie k\"onnen auf dem Server die Freigabeliste testen: {\ttfamily smbclient -L server}
\item {\ttfamily nmblookup -B server \_\_SAMBA\_\_} testet die NetBios-Namensaufl\"osung und sollte die IP des Servers
liefern
\item Suchen Sie vom Server aus die Clients:
\begin{verbatim}
nmblookup -B IP-des-Client '*'
nmblookup -B IP-des-Client Client
\end{verbatim}

Beide Abfragen sollten mindestens die IP des Clients liefern, wenn nicht, sind die Clients nicht richtig
konfiguriert.
\end{enumerate}







\section{Tuning}



SAMBA kann vom SOHO-System bis zu richtig gro\ss{}en 'Tr\"ummern' laufen - ein Patentrezept f\"urs Tuning f\"allt da schwer.
Au\ss{}erdem ist es oft auch eine Entscheidung mit Nebeneffekten. Hier ein paar Tricks:




\subsection{diverse Tipps}






\subsubsection{Access}

F\"ur Shares, auf denen Access-Dateien liegen, kann dieser Schalter hilfreich sein:
\begin{verbatim}
kernel oplocks = no
\end{verbatim}


Allerdings bedeuted dies oft auch einen Geschwindigkeitsverlust.






\subsubsection{Netzwerk}

Die Broadcasts k\"onnen in gr\"o\ss{}eren Netzen recht schnell zur Plage werden. Abhilfe schafft hier WINS, so wie auch
in der Konfiguration verwendet.




\subsubsection{Verbindungen}

Nicht aktive Verbindungen k\"onnen getrennt werden, das spart Ressourcen auf dem Server. Dazu dient
{\ttfamily deadtime}




\subsubsection{Cache}

Mit {\ttfamily getwd cache = yes} kann ein Cache f\"ur des Inhaltsverzeichnis eingeschaltet werden.






\subsubsection{WinXP}

WinXP testet zuerst die Erreichbarkeit des Servers auf Port 80. (WebDAV). Falls kein Apache installiert ist,
liefert der TCP/IP-Stack ein 'port unreachable', falls er l\"auft, eine Antwort. Falls man aber z.B. seinen
Server in eine DMZ stellt und Anfragen DROPt (was selten gut ist), wartet XP bis zum Timeout.

Abhilfe:

\begin{enumerate}
\item  REJECT statt DROP
\item  HKEY\_LOCAL\_MACHINE$\backslash$SYSTEM$\backslash$CurrentControlSet$\backslash$Services$\backslash$MRxDAV auf 0 setzen
\end{enumerate}







\subsubsection{Fehlermeldungen W2K bei Beitritt in Dom\"ane}

\begin{verbatim}
"Bei dem Versuch der Domäne "" beizutreten, trat folgender Fehler auf.
Die angegebende Anmeldeinformation stehen mit vorhandenen
Anmeldeinformationen im Konflikt"
\end{verbatim}

Bestehende Verbindungen (gemappte Laufwerke) trennen.

\begin{verbatim}
"Das verwendete Konto ist ein Arbeitsstationskonto. Verwenden
Sie Ihr normales Benutzerkonto oder lokales Benutzerkonto, um
auf diesen Server zuzugreifen"
\end{verbatim}

Dom\"anen-Anmeldung geht nur als Administrator.





Ansonsten sind viele Tipps und Tricks zum Tuning in der Doku zu SAMBA, insbesondere in Speed.txt, genannt.

Was die Geschwindigkeit allgemein anbelangt:
\begin{verbatim}

,----[  http://www.heise.de/newsticker/data/ps-15.10.03-000/  ]
| Samba 3 schneller als Windows 2003 Server
|
| Die britische IT Week hat Ergebnisse von Benchmarks veröffentlicht, die sie mit
| Samba 3 und Windows 2003 Server unternommen hat. Demnach ist das neue Samba 3
| bis zu zweieinhalb mal schneller als Windows 2003 Server. Damit hat sich die
| freie Server-Software laut IT Week sogar noch gesteigert: Im vergangenen Jahr
| war in ihrer Untersuchung die Version 2 im Vergleich zum Windows 2000 Server
| lediglich doppelt so schnell.
|
| Über die eigentliche Untersuchung erfährt man bei IT Week nicht allzu viel. Als
| Testsoftware kam der Ziff-Davis NetBench zum Einsatz. Als Server diente ein mit
| 900 MHz getakteter Pentium III mit IDE-Platte und 512 MByte RAM. Weitere
| Untersuchungen zu diesem Thema dürften nicht lang auf sich warten lassen.
| Bisher gelang es beiden Seiten, sehr unterschiedliche Aussagen über die
| Performance zu treffen, so zuletzt Veritest im Auftrag von Microsoft. (ps/c't)
`----
\end{verbatim}







\section{Linux als Client}

Nat\"urlich ist auch der umgekehrte Weg m\"oglich, also Linux nutzt Freigaben von Windows-Rechnern.

Ich nutze es allerdings eher selten, f\"ur mich ist der Linux-Server zentraler Punkt des Netzes,
nicht zuletzt wegen der Sicherungsm\"oglichkeiten.

Wer also Freigaben von Windows nutzen will, kann mittels {\ttfamily smbclient} eine FTP-\"ahnliche
Verbindung zu einer Windows-Freigabe machen bzw. mittels {\ttfamily smbmount} Freigaben direkt mounten.
Man kann mittels {\ttfamily smbclient} auch Drucker nutzen und auch Backups von Shares erstellen.

Falls die Clients Windows NT oder h\"oher haben, kann man dort auch sehr einfach einen {\itshape lpr\/}-Dienst
installieren und angeschlossene Drucker einfacher und unkomplizierter als via {\ttfamily smbclient}nutzen,
sie verhalten sich dann wie ein Printserver. Allerdings meint manchmal der Druckertreiber von Windows,
die Druckdaten versch\"onern zu m\"ussen, was eher selten gut ausgeht. Daher installiere ich solche
Drucker auf Windows-Seite als 'Nur-Text-Drucker'.








\section{Sicherheit - eine schlechte und eine gute Nachricht}

Die schlechte Nachricht:
Auch SAMBA ist hin und wieder gut f\"ur \"Uberraschungen.

Daher ist es notwendig, sich \"uber die Sicherheit seiner Konfiguration Gedanken zu machen. In so mancher
kleinen Firma werkelt ein SAMBA gleichzeitig mit anderen Diensten auf einem Gateway zum Internet, und
nicht nur in kleinen, wie ich aus eigener Erfahrung wei\ss{}.

Da\ss{} das nicht optimal ist, liegt auf der Hand. Andererseits will man nicht immer Geld und Arbeit in 2 Systeme
stecken. Kurz und gut: kann ja mal passieren.

Die gute Nachricht: auch sowas kann man weitestgehend sicher bekommen.

Erste Ma\ss{}nahme sollte sein:

\begin{verbatim}
interfaces = eth0 192.168.1.1/24 lo
bind interfaces only = yes
\end{verbatim}


Der {\itshape nmbd\/} lauscht allerdings weiter auf Broadcasts, verwirft jedoch Pakete mit fremder SRC.
Um ganz sicher zu gehen, kann man mit iptables nachhelfen:

\begin{verbatim}
iptables -A INPUT -i ippp0 -p TCP --dport 137:139 -j --reject-with tcp-reset
iptables -A INPUT -i ippp0 -p UDP --dport 137:139 -j --reject-with icmp-port-unreachable
\end{verbatim}











\subsection{Und wer SMB via Internet anbieten will?}

Der sollte sich das nocheinmal \"uberlegen. Eine einfache Alternative w\"are SSH/SCP, eine umfangreichere
Variante w\"are ein VPN.












\section{Ausblick}

Ich habe hier eine konkrete Installation eines SAMBA 2.2.x beschrieben, allerdings ohne viel technische
Raffinessen.

\begin{itemize}
\item  Die Userverwaltung in gr\"o\ss{}eren Netzen kann man zentralisieren, das Mittel der Wahl ist LDAP. Auch SAMBA
kann das nutzen.
\item  Drucker lassen sich bequemer \"uber CUPS verwalten, man kann auch Druckertreiber f\"ur die Clients auf dem Server
bereitstellen, die sich die Clients bei Bedarf dort holen.
\item  Seit ein paar Wochen ist SAMBA 3 verf\"ugbar. Es bringt u.a. ADS-Support, Unicode, besseren Druckersupport und anderes.
\end{itemize}





















\section{weiterf\"uhrende Quellen}




{\em } {\tt \aaburl}



{\em } {\tt \aacurl}



{\em } {\tt \aadurl}



{\em } {\tt \aaeurl}



{\em } {\tt \aafurl}




Newsgroup  de.comp.os.unix.networking.samba





\end{document}
