summaryrefslogtreecommitdiff
path: root/docs/textdocs
diff options
context:
space:
mode:
Diffstat (limited to 'docs/textdocs')
-rw-r--r--docs/textdocs/kurs.pdfbin371391 -> 0 bytes
-rw-r--r--docs/textdocs/kurs.tex4856
-rw-r--r--docs/textdocs/logo.ps344
3 files changed, 0 insertions, 5200 deletions
diff --git a/docs/textdocs/kurs.pdf b/docs/textdocs/kurs.pdf
deleted file mode 100644
index e681a05ad8..0000000000
--- a/docs/textdocs/kurs.pdf
+++ /dev/null
Binary files differ
diff --git a/docs/textdocs/kurs.tex b/docs/textdocs/kurs.tex
deleted file mode 100644
index 93771c40e8..0000000000
--- a/docs/textdocs/kurs.tex
+++ /dev/null
@@ -1,4856 +0,0 @@
-\documentclass{scrartcl}\usepackage{pslatex}\typearea{12}
-%\documentclass[ncs]{dpunkt}
-\usepackage[dvips,colorlinks=true,
- pdfauthor={Volker Lendecke, Service Network GmbH},
- pdftitle={Kursskript Samba},
- pdfsubject={Samba},
- pdfkeywords={samba,training}
- ]{hyperref}
-\usepackage[T1]{fontenc}
-\usepackage{german}
-\usepackage{pstricks}
-\usepackage[dvips]{epsfig}
-\newcommand{\prog}{\texttt}
-\newcommand{\param}{\texttt}
-\newcommand{\dateistyle}{\texttt}
-\newcommand{\nbname}{\texttt}
-\newcommand{\todo}[1]{}
-\newcommand{\defin}{\emph}
-\newcommand{\username}{\textbf}
-\hyphenation{Net-BIOS}
-
-\setcounter{tocdepth}{1}
-
-\usepackage{fancyheadings}
-\pagestyle{fancyplain}
-\lhead{}
-\rhead{\thepage}
-\rfoot{\copyright{} 1999, 2000, 2001, Volker Lendecke
-(http://www.sernet.de/vl/)}
-\cfoot{}
-
-\author{Volker Lendecke\\\texttt{VL@SerNet.DE}}
-\title{Samba for Runaways}
-
-\begin{document}
-
-\title{Kursskript\\[\baselineskip]
- \epsfig{file=logo.ps,width=6cm}}
-
-\author{Volker Lendecke\\
-Service Network GmbH\\
-G"ottingen\\
-http://www.SerNet.DE/\\
-http://samba.SerNet.DE/}
-
-\date{\today}
-
-\maketitle
-\thispagestyle{empty}
-
-\begin{quote}
- Dieses Dokument ist eine Mitschrift des Sambakurses der Service
- Network GmbH in G"ottingen. Es gibt einen guten "Uberblick "uber den
- Kurs und kann gleichzeitig als generelle Einf"uhrung in NetBIOS und
- Samba dienen.
-\end{quote}
-
-\break
-
-\tableofcontents
-
-\break
-
-\section{Einf"uhrung}
-
-Samba -- Was ist das?
-
-Kurz gesagt l"a"st Samba jeden Unixrechner in der Netzwerkumgebung von
-Windows erscheinen. Das hei"st, man kann von Windows aus auf einen
-Unixrechner genau wie auf einen anderen Windowsrechner zugreifen. Der
-Clientrechner merkt gar nicht, da"s er es nicht mit einem echten
-Windowsserver zu tun hat. Im Detail bedeutet das, da"s sehr einfach
-Dateifreigaben erstellt werden k"onnen. Jeder Benutzer kann
-transparent Dateien auf seinem Heimatverzeichnis unter Unix und in
-anderen freigegebenen Verzeichnissen ablegen. Weiterhin kann man
-Drucker, die unter Unix ansprechbar sind, als Netzwerkdrucker in
-Windows ansprechen. Dar"uber hinaus bietet Samba viele Dienste, die
-sonst nur von Windows NT geleistet werden. Dazu geh"oren:
-
-\begin{description}
-
-\item[WINS-Server] Mit Samba kann sehr einfach ein WINS-Server
- eingerichtet werden. Dieser stellt Namensdienste f"ur NetBIOS-Netze
- zur Verf"ugung, damit sich Windows-Maschinen "uber Subnetzgrenzen
- hinweg erreichen k"onnen
-
-\item[Computersuchdienst] Samba als sehr stabiler Server kann alle
- Aufgaben des Computersuchdienstes "ubernehmen. Die in Windowsumgebungen
- oft nicht sehr vorhersagbare Netzwerkumgebung kann so etwas
- stabiler gemacht werden.
-
-\item[Logon Server] F"ur Windows-95/98 ist Samba Logon-Server, kann
- also die Dom"anenanmeldung f"ur diese Systeme "ubernehmen.
-
-\item[PDC] Die Funktionalit"at des echten Primary Domain Controller
- ist nicht vollst"andig implementiert. F"ur viele Anwendungszwecke,
- insbesondere Authentifizierung von NT-Workstation\-be\-nu\-tzern, reicht
- Samba jedoch v"ollig aus.
-
-\item[Diagnosewerkzeuge] Samba bietet eine Reihe von kleinen, aber
-sehr effektiven Werkzeugen, die die oft m"uhselige Suche nach Fehlern
-im Netz vereinfachen k"onnen.
-
-\end{description}
-
-Samba bietet gegen"uber anderen Implementationen des
-SMB-Protokolls einige Vorteile. Teilweise sind diese Vorteile von Unix
-geerbt, teilweise sind sie in der Architektur von Samba begr"undet.
-
-\begin{description}
-
-\item[Entfernte Administration] Der gr"o"ste Vorteil von Samba in
- gr"o"seren Umgebungen ist die M"oglichkeit, die gesamte
- Administration von der Kommandozeile aus durchzuf"uhren. Damit
- bekommt man gegen"uber grafischen Oberfl"achen sehr viel bessere
- M"oglichkeiten, von entfernten Standorten aus zu administrieren.
- Werkzeuge wie PC Anywhere sind hier deutlich weniger flexibel.
-
- Zus"atzlich bietet Samba die M"oglichkeit der grafischen
- Administration "uber einen Webbrowser. Auch hier ist es unerheblich,
- wo sich Administrator und Server befinden.
-
-\item[Zentrale Konfiguration] Die gesamte Konfiguration von Samba
- befindet sich in einer einzigen Datei und ist nicht "uber viele
- Dialogfelder verteilt. Das erleichtert die Administration erheblich.
- So l"a"st sich eine funktionierende Konfiguration sehr einfach
- sichern und wieder einspielen.
-
-\item[Stabilit"at] Samba erbt von Unix eine hohe Stabilit"at.
- Unixrechner sind daf"ur ausgelegt, "uber Monate hinweg durchzulaufen
- und leisten dies auch. Samba als weiterer Proze"s profitiert von
- dieser hohen Verf"ugbarkeit. Die modulare Struktur von Unix l"a"st
- es dar"uber hinaus zu, da"s der Serverdienst Samba unabh"angig von
- allen anderen Systemprozessen eigenst"andig neu gestartet werden
- kann, sofern hier ein Problem vorliegen sollte.
-
- Samba hat eine Architektur, die die Stabilit"at weiter f"ordert.
- F"ur jede Clientverbindung wird ein eigener Proze"s gestartet.
- Verursacht also ein Client ein Problem auf Serverseite, wird
- m"oglicherweise der f"ur diesen Client zust"andige Proze"s
- abst"urzen. Die anderen Prozesse und damit Clients werden nicht
- gest"ort.
-
-\item[Skalierbarkeit] Samba kann von dem vielzitierten kleinen 386er
- unter Linux bis hin zu den gr"o"sten heute verf"ugbaren Maschinen
- jede Hardware optimal ausnutzen. Die Architektur von Samba
- erm"oglicht es, da"s auch Multiprozessormaschinen ausgelastet
- werden. Multiprozessormaschinen k"onnen alle Prozessoren dann
- besch"aftigen, wenn es viele unabh"angige Prozesse im System gibt.
- Samba erstellt f"ur jeden Client einen Proze"s, der auf einem
- eigenen Prozessor ablaufen kann.
-
-\item[Flexibilit"at] Samba bietet eine riesige Anzahl von
- Konfigurationsoptionen, die zun"achst einmal "uberw"altigend wirkt.
- Im Laufe des Kurses wird sich herausstellen, da"s f"ur das
- Funktionieren von Samba nur sehr wenige Optionen wirklich notwendig
- sind. Die meisten Optionen werden nur f"ur Spezialf"alle ben"otigt,
- oder sind aus Kompatibilit"atsgr"unden zu sehr exotischen Clients
- vorhanden.
-
- Soll Samba an spezielle Situationen angepa"st werden, ist es durch
- ein sehr flexibles Schema von Makroersetzungen m"oglich, die
- Konfigurationsdatei weitgehend dynamisch zu ver"andern. Damit sind
- erheblich mehr Konfigurationsm"oglichkeiten gegeben als mit Windows.
- Als Beispiel sei genannt, da"s man sehr einfach einen Sambaserver
- unter zwei verschiedenen Namen in der Netzwerkumgebung erscheinen
- lassen kann, und beide virtuelle Server unterschiedlich
- konfigurieren kann. Zu Testzwecken ist es sogar m"oglich, zwei
- unterschiedliche Versionen gleichzeitig auf einer Maschine laufen zu
- lassen.
-
-\end{description}
-
-Der Kostenaspekt ist hier bewu"st nicht mit aufgef"uhrt worden. Samba
-als freie Software\footnote{Samba wird hier bewu"st als \emph{freie}
- Software im Sinne des GNU-Projektes verstanden. Samba ist dadurch
- nat"urlich auch Open Source Software} ist unter den Bedingungen der
-GNU General Public License f"ur alle Zwecke kostenlos einsetzbar.
-Damit entstehen beim Einsatz von Samba keinerlei Lizenzkosten. Samba
-ist jedoch nicht kostenlos. Es m"ussen Administratoren eingewiesen
-werden, wenn Support ben"otigt wird, kann dieser viel Geld kosten.
-
-Das Hauptaugenmerk sollte hier auf dem Aspekt liegen, da"s Samba
-h"aufig einfach die technisch beste L"osung ist. Ein Kunde stand
-beispielsweise vor der Aufgabe, einige bestehende, kleinere NT-Server
-durch eine gr"o"sere L"osung zu ersetzen. Durch einen einzigen gro"sen
-NT-Server w"aren die bestehenden Server sehr wohl zu ersetzen gewesen.
-Das Problem bestand nun darin, da"s in vielen Dokumenten die
-vorhandenen Servernamen "uber Objektreferenzen auf vollst"andige
-UNC-Pfadnamen hart kodiert waren. Damit mu"sten die vorhandenen
-Servernamen definitiv erhalten bleiben, um nicht jedes Dokument
-anfassen zu m"ussen. Ein einziger Server unter NT kam also nicht in
-Frage, unter Samba jedoch sehr wohl. Samba erlaubt die Einrichtung
-virtueller Server unter verschiedenen Namen auf einer einzigen
-Maschine. Mehr dazu ab Seite \pageref{virtuelle-server}.
-
-\section{Eine einfache Konfiguration}
-
-F"ur den Anfang soll hier eine einfache Konfiguration beschrieben
-werden, mit der ein Samba-Server im Netz erscheint und einige, wenige
-Dienste anbietet. Diese einfache Konfiguration soll als Startpunkt das
-Experimentieren in den weiteren Kapiteln erleichtern. Die einzelnen
-Parameter werden hier kurz erkl"art, in weiteren Kapiteln gibt es
-ausf"uhrlichere Erkl"arungen.
-
-Samba wird mit der Datei \prog{smb.conf} konfiguriert. Je nach Unix
-oder Linux-Distribution kann diese Datei an unterschiedlichen Orten zu
-finden sein: \prog{/etc/smb.conf}, \prog{/etc/samba/smb.conf} oder
-auch \prog{/usr/local/samba/lib/smb.conf}, wenn Samba selbst
-kompiliert wurde. Wurde die Datei \prog{smb.conf} wie beschrieben
-angelegt, m"ussen zwei D"amonen gestartet werden: Der \prog{nmbd} und
-der \prog{smbd}. An dieser Stelle unterscheiden sich die Unix- und
-Linuxversionen erheblich, so da"s keine allgemeinen Hinweise gegeben
-werden k"onnen. Verschiedene M"oglichkeiten sind:
-
-\begin{verbatim}
-/etc/init.d/smb start
-/sbin/init.d/smb start
-/usr/local/samba/sbin/nmbd -D; /usr/local/samba/sbin/smbd -D
-rcsmb start
-\end{verbatim}
-
-Die \prog{smb.conf} f"ur eine einfache Konfiguration k"onnte so
-aussehen:
-
-\begin{verbatim}
-[global]
- workgroup = samba
- netbios name = sambaserver
- interfaces = eth0
-
- encrypt passwords = yes
-
-[homes]
- valid users = %S
- writeable = yes
- browseable = no
-
-[cdrom]
- path = /cdrom
-
-[public]
- path = /pub
- writeable = yes
-\end{verbatim}
-
-Wenn man mit dieser Einstellung Zugriff auf den Server erm"oglichen
-m"ochte, mu"s man f"ur jeden Benutzer einen Eintrag in der Datei
-\dateistyle{smbpasswd} machen, da verschl"usselte Pa"sw"orter
-(\param{encrypt passwords = yes}) eingesetzt werden. Dies geschieht
-beispielsweise f"ur den Benutzer \username{linux} "uber:
-
-\begin{verbatim}
-delphin:~ # smbpasswd -a linux
-New SMB password:
-Retype new SMB password:
-Added user linux.
-delphin:~ #
-\end{verbatim}
-
-Die einzelnen Zeilen haben folgende Wirkung:
-
-\begin{description}
-\item[\param{[global]}] leitet globale Servereinstellungen ein. Alle
- anderen Abschnitte beschreiben Freigaben.
-\item[\param{workgoup = samba}] legt die Arbeitsgruppe fest, in der
- der Server auftauchen soll.
-\item[\param{netbios name = sambaserver}] gibt dem Server einen Namen,
- unter dem er im Netz erscheint.
-\item[\param{interfaces = eth0}] beschreibt das Netzwerkinterface, auf
- dem Samba Dienste anbieten soll. Selbst wenn der Rechner nur ein
- einziges Netzwerkinterface hat, sollte dieser Parameter angegeben
- werden. Die vorhandenen Interfaces bekommt man bei den meisten
- Unixsystemen "uber den Befehl \prog{netstat -ian} heraus.
- \todo{netstat -ian?}
-\item[\param{encrypt passwords = yes}] verlangt vom Client, da"s keine
- Klartextpa"sw"orter "ubertragen werden. Mit modernen Clients gibt es
- Probleme, wenn man diese Option nicht aktiviert. Au"serdem m"ochte
- man aus Sicherheitsgr"unden seine Pa"sw"orter nicht allen mitteilen.
-\item[\param{[homes]}] leitet die Freigabe der Heimatverzeichnisse
- s"amtlicher Benutzer ein. Jeder Benutzer bekommt eine eigene
- Freigabe unter seinem eigenen Namen und hat damit einen eigenen
- Bereich, auf dem er schreiben kann.
-\item[\param{valid users = \%S}] beschr"ankt den Zugriff auf den
- Benutzer, der sich verbinden m"ochte.
-\item[\param{writeable = yes}] vergibt Schreibrecht auf die Freigabe.
- Standardm"a"sig wird nur Lesezugriff vergeben.
-\item[\param{browseable = no}] versteckt die Freigabe \param{[homes]}
- in der Netzwerkumgebung. Der Client zeigt sie nicht mehr als
- \param{[homes]} an, sondern nur noch unter dem Benutzernamen.
-\item[\param{[cdrom]}] leitet eine weitere Freigabe ein.
-\item[\param{path = /cdrom}] gibt den genannten Pfad frei. Dieser mu"s
- selbstverst"andlich im Dateisystem existieren.
-\item[\param{[public]}] macht noch eine Freigabe im Netz. Die
- Parameter sollten jetzt selbsterkl"arend sein.
-\end{description}
-
-Mit dieser minimalen \dateistyle{smb.conf} sollte es auf jeden Fall
-m"oglich sein, auf den Rechner zuzugreifen. Wenn man Probleme mit der
-Konfiguration weiterer Dienste bekommt, sollte man von einer
-m"oglichst einfachen Konfiguration ausgehen und dann Schritt f"ur
-Schritt weitere Parameter hinzunehmen.
-
-
-
-\section{NetBIOS}
-
-Sobald Windowsrechner Dateisysteme austauschen, sich gegenseitig in
-der Netzwerkumgebung sehen oder Drucker freigeben, funktioniert die
-Kommunikation "uber NetBIOS\footnote{Dies ist in reinen Windows 2000
- Umgebungen nicht mehr richtig. Microsoft hat bei Windows 2000 die
- NetBIOS-Ebene abgeschafft, Windows 2000 kommuniziert direkt "uber
- TCP. Aus Kompatibilit"atsgr"unden kann Windows 2000 jedoch noch
- "uber NetBIOS kommunizieren.}. Was ist NetBIOS? Je nachdem, wen man
-fragt, bekommt man unterschiedliche Antworten. Fragt man IBM, ist
-NetBIOS ein Protokoll, viele andere bezeichnen NetBIOS als reine
-Softwareschnittstelle zur Kommunikation von Rechnern. Mit dieser
-Schnittstelle werden Programmen unterschiedliche Dienste zur
-Kommunikation zur Verf"ugung gestellt. NetBIOS wurde entworfen, um in
-kleinen, lokalen Netzen Kommunikation zu erm"oglichen. Beim Entwurf
-von NetBIOS wurde zun"achst darauf geachtet, die Dinge sehr einfach zu
-halten, um sie in kleinen lokalen Netzen anwendbar zu machen. Auf
-Skalierbarkeit und die Andwendung in Weitverkehrsnetzen wurde beim
-Design nicht geachtet.
-
-\subsection{NetBIOS-Dienste}
-
-Die Kommunikation mit NetBIOS wurde in drei Teilbereiche aufgeteilt,
-den Namens-, den Datagramm- und den Sitzungsdienst.
-
-\begin{description}
-
-\item[Namensdienst:] Im Rahmen des Namensdienstes sind die Rechner in
- der Lage, sich gegenseitig im Netz zu identifizieren. Es sei an
- dieser Stelle betont, da"s der NetBIOS-Namensdienst nichts mit der
- Anzeige in der Netzwerkumgebung zu tun hat. Der Computersuchdienst,
- der f"ur die Netzwerkumgebung zust"andig ist, h"angt jedoch sehr
- stark von einem korrekt funktionierenden Namensdienst ab.
-
-\item[Datagrammdienst:] Betrachtet man die Rechnerkommunikation auf
- dem Netz, so sieht man, da"s die versendeten Daten in einzelne
- Pakete aufgeteilt werden. Diese einzelnen Pakete werden dann vom
- Netz nach bestem Bem"uhen an einen Zielrechner ausgeliefert. Geht
- ein Paket verloren, kann man nichts machen, man bekommt unter
- Umst"anden nicht einmal eine Benachrichtigung dar"uber, da"s etwas
- nicht stimmt. Aufeinanderfolgende Pakete k"onnen au"serdem in
- vertauschter Reihenfolge beim Empf"anger ankommen. Es kann sogar
- sein, da"s Pakete auf dem Weg dupliziert werden, also mehrfach
- ankommen.
-
- Ein solches Netzwerk ist folglich zun"achst einmal unzuverl"assig.
- Diese Unzuverl"assigkeit des Netzes wird durch den Datagrammdienst
- an die Benutzerprogramme weitergegeben. Das hei"st, wenn ein
- Programm den Datagrammdienst nutzt, kann es nicht sicher sein, da"s
- die Daten"ubertragung gew"ahrleistet ist. Das Programm mu"s selbst
- daf"ur sorgen, da"s mit Paketverlust vern"unftig umgegangen wird.
-
- Der Datagrammdienst hat jedoch nicht nur Nachteile. Zwei Vorteile
- sind der geringe Aufwand, mit dem Pakete verschickt werden k"onnen,
- und die M"oglichkeit, ein Datagramm an mehrere Rechner gleichzeitig
- zu verschicken. Die Applikation mu"s selbst entscheiden, wie sie mit
- der Unzuverl"assigkeit des Dienstes klarkommt.
-
-\item[Sitzungsdienst:] Die Unzuverl"assigkeit des Netzes ist f"ur
- bestimmte Applikationen wie Dateitransfer oder Terminalanwendungen
- nicht akzeptabel. Wenn man eine Datei "ubertr"agt, m"ochte man
- sicher sein, da"s die Datei komplett und korrekt "ubertragen wurde.
- F"ur diese h"oheren Anforderungen wurde der Sitzungsdienst
- entworfen. Zwei Rechner vereinbaren eine NetBIOS-Sitzung. Die Daten,
- die "uber diese Verbindung "ubertragen werden, kommen auf jeden Fall
- an, und zwar in der richtigen Reihenfolge. K"onnen Daten einmal
- nicht "ubertragen werden, so erh"alt die versendende Applikation
- eine Fehlermeldung. Die Applikation kann nun versuchen, die
- abgebrochene Sitzung neu aufzubauen. Dieser Zuverl"assigkeit steht
- ein erh"ohter Aufwand beim Sitzungsauf- und -abbau gegen"uber.
-
-\end{description}
-
-\subsection{NetBIOS-Namensdienst}
-
-Zwei Rechner, die kommunizieren wollen, m"ussen sich zun"achst gegenseitig
-identifizieren. NetBIOS sieht hierf"ur bis zu 16 Zeichen lange Namen
-vor. Jede Applikation kann f"ur sich beliebig viele Namen reservieren
-und unter einem dieser Namen Verbindungen aufbauen und Daten austauschen.
-Diese Reservierung von Namen gilt sowohl f"ur Server, die vom Netz aus
-erreichbar sein m"ussen, als auch f"ur Clients, die Server im Netz
-erreichen wollen, da Server wissen m"ussen, wohin die Antworten
-gehen m"ussen.
-
-Wollen zwei Anwendungen per NetBIOS miteinander kommunizieren, mu"s
-zun"achst der Server seine Bereitschaft kundtun, Verbindungen
-entgegenzunehmen. Dazu meldet er sich im Netz mit seinem Namen an.
-Diese Anmeldung geschieht per Broadcast, so da"s alle im Netz
-mith"oren k"onnen. Jeder Rechner ist frei, beliebige Namen im Netz
-f"ur sich zu beanspruchen, sofern diese noch nicht belegt
-sind\footnote{Mit dieser Freiheit ergeben sich viele M"oglicheiten,
- von einem beliebigen Rechner aus ein Windows-Netz bis zur
- Unbenutzbarkeit zu st"oren. Man mu"s nur den Namen der Dom"ane mit
- dem Namenstyp \nbname{1d} zum richtigen Zeitpunkt reservieren und
- reserviert halten. Dann bootet der PDC nicht mehr sauber.}.
-
-Eine Reservierung geschieht, indem ein Rechner per Broadcast
-ank"undigt, da"s er unter einem bestimmten Namen erreichbar ist. Dann
-wartet er auf Protest. Beklagt sich niemand, schickt er einen zweiten
-Reservierungsversuch und wartet wieder. Nach dem dritten
-Reservierungsversuch ist der Rechner ausreichend sicher, da"s kein
-anderer den Namen bereits f"ur sich eingenommen hat, und sieht ihn als
-f"ur sich reserviert an.
-
-Wenn nun ein Client mit einem Server reden m"ochte, dann mu"s er sich
-wie der Server einen eindeutigen Namen ausdenken und im Netz
-reservieren. Das Verfahren dazu ist identisch. Zus"atzlich mu"s der
-Client jedoch die MAC-Adresse des Servers herausbekommen. Die
-Mechanismen, wie dies geschieht, h"angen davon ab, wie NetBIOS
-implementiert ist.
-
-\subsection{NetBIOS-Implementationen}
-
-NetBIOS kann mit unterschiedlichen Protokollen implementiert werden.
-NetBEUI, IPX und TCP/IP sind drei heute verwendete Protokolle, wobei
-f"ur Neuinstallation TCP/IP das bevorzugte Protokoll sein sollte.
-Der Ablauf der Namensaufl"osung soll an einem
-Beispiel verdeutlicht werden.
-
-Auf einem Client soll eine Verbindung zu dem Server \nbname{samba}
-aufgebaut werden. Direkt erreicht man dies, indem man in der Taskleiste
-Start $\rightarrow$ Ausf"uhren $\rightarrow$ \verb|\\samba| eingibt.
-Im folgenden werden die unterschiedlichen Verfahren betrachtet, mit
-denen ein Rechner die MAC-Adresse des Servers herausbekommt.
-
-\begin{description}
-
-\item[NetBEUI:]
-
- \textbf{"`Samba"'$\,\Rightarrow\,$MAC-Adresse}
-
- Bei diesem Protokoll findet der Client den Server ausschlie"slich
- "uber Broadcasts. Er verschickt per Broadcast eine Anfrage, wer sich
- f"ur den gesuchten Namen verantwortlich f"uhlt. Der Rechner, der
- diesen Namen tats"achlich als Server reserviert hat, wird aufgrund
- dieser Anfrage seine eigene MAC-Adresse aus dem ROM seiner
- Netzwerkkarte auslesen und entsprechend antworten. Daraufhin kann
- der Client dann die Verbindung aufbauen. "Uber NetBEUI k"onnen also
- nur Rechner miteinander reden, die in der gleichen Broadcastdom"ane
- liegen. Sobald Router zum Einsatz kommen sollen, kann reines NetBEUI
- nicht mehr verwendet werden, da dann der Server, der kontaktiert
- werden soll, von der Namensanfrage nichts mehr mitbekommt, also auch
- nicht antworten kann.
-
-\item[IPX]
-
- \textbf{"`Samba"'$\,\Rightarrow\,$IPX-Knotenadresse
- $\,\Rightarrow\,$MAC-Adresse}
-
- Bei IPX liegt zwischen Servernamen und der MAC-Adresse die
- IPX-Knotenadresse. Diese enth"alt eine 4 Byte lange Netzwerknummer
- und die 6 Byte lange MAC-Adresse des Rechners. Die Knotenadresse
- wird anhand des NetBIOS-Namens wie bei NetBEUI per Broadcast im
- lokalen Netz gesucht. Damit w"aren Rechner hinter Routern nicht
- erreichbar, da die Namensanfrage nicht zu ihnen durchdringt.
- IPX-Router erkennen jedoch diese Namensanfragen und leiten sie per
- Broadcast in s"amtliche angeschlossenen Netze weiter, so da"s die
- Anfrage jedes Teilnetz erreicht.
-
- Jede Anfrage l"ost einen Broadcast in jedem angeschlossenen Subnetz
- aus. Einige IPX-Router speichern eine Namenstabelle und k"onnen so
- viele Anfragen selbst beantworten, so da"s die Broadcastlast
- reduziert wird.
-
-\item[TCP/IP]
-
- \textbf{"`Samba"'$\,\Rightarrow\,$IP-Adresse$\,\Rightarrow\,
- $MAC-Adresse}
-
- Bei TCP/IP mu"s der Client die IP-Adresse des Servers herausfinden.
- Dies geschieht wie bei den anderen Protokollen per Broadcast im
- lokalen Netz. IP-Router k"onnen nicht angewiesen werden, die
- Anfragen per Broadcast in alle angeschlossenen Netze weiterzuleiten.
- Aus diesem Grund gibt es hier andere Mechanismen, die im folgenden
- beschrieben werden.
-
- Nachdem die IP-Adresse herausgefunden wurde, kommen die bekannten
- Mechanismen von IP zum Tragen. Befindet sich der Rechner im eigenen
- Subnetz, wird direkt eine ARP-Anfrage nach der MAC-Adresse
- ausgel"ost. Andernfalls wird der entsprechende Router anhand der
- Routingtabelle herausgefunden und dann dessen MAC-Adresse per ARP
- festgestellt.
-
- Wenn NetBIOS "uber TCP/IP verwendet wird, kommen folgende Protokolle
- und Ports zum Einsatz:
-
- \label{protokolle-und-ports}
-% \begin{tabular}{|L|L|L|L|}\hline
-% \LCC
-% \tabulargray&\tabulargray&\tabulargray&\tabulargray\\
-% \tabularheader{Dienst}&\tabularheader{Protokoll}&\tabularheader{Port}&
-% \tabularheader{Proze"s}\\
-% \hline
-% \ECC
-% &&&\topseparation
-% Namensdienst & UDP &137 & \prog{nmbd} \\
-% Datagrammdienst & UDP &138 & \prog{nmbd} \\
-% Sitzungsdienst & TCP &139 & \prog{smbd}
-% \bottomseparationline
-% \end{tabular}
- \begin{center}\begin{tabular}{|l|l|l|l|}\hline
- Dienst&Protokoll&Port&Samba-Proze"s\\
- \hline\hline
- Namensdienst & UDP &137 & \prog{nmbd} \\\hline
- Datagrammdienst & UDP &138 & \prog{nmbd} \\\hline
- Sitzungsdienst & TCP &139 & \prog{smbd}\\\hline
- \end{tabular}
-\end{center}
-
-\end{description}
-
-Die Protokolle ordnen sich folgenderma"sen ein:
-
-\begin{figure}[ht]
-\[\begin{pspicture}(12,6)
-\psframe(3,0)(9,1)
-\rput(6,0.5){Hardware}
-\psframe(3,1)(5,3)
-\rput(4,2){TCP/IP}
-\psframe(5,1)(7,3)
-\rput(6,2){NetBEUI}
-\psframe(7,1)(9,2)
-\rput(8,1.5){IPX}
-\psframe(7,2)(9,3)
-\rput(8,2.5){NWLink}
-\psframe(3,3)(9,4)
-\rput(6,3.5){{\bfseries NetBIOS}}
-\psframe(0,4)(2,5)
-\rput(1,4.5){ping}
-\psline(0,4)(3,3)
-\psline(2,4)(5,3)
-\psframe(10,3)(12,4)
-\rput(11,3.5){NWClient}
-\psline(7,2)(10,3)
-\psline(9,2)(12,3)
-\psframe(3,4)(6,5)
-\rput(4.5,4.5){SMB}
-\psframe(3,5)(6,6)
-\rput(4.5,5.5){Datei, Druck}
-\psframe(6,4)(9,6)
-\rput(7.5,5.5){Andere}
-\rput(7.5,5){NetBIOS-}
-\rput(7.5,4.5){Anwendungen}
-\end{pspicture}\]
-\caption{Protokollstapel}
-\label{protokollstapel}
-\end{figure}
-
-In dieser Grafik steht das Programm \prog{ping} f"ur beliebige
-Programme, die direkt auf TCP/IP aufsetzen. Dies gilt beispielsweise
-f"ur alle WWW-Browser und f"ur die Programme \prog{telnet} und
-\prog{ftp}.
-
-Man kann festhalten, da"s NetBEUI hier das einzige Protokoll ist, das
-nicht "uber Routergrenzen hinweg verwendbar ist. Sowohl IPX als auch
-IP sind f"ur den Einsatz in Weitverkehrsnetzen entworfen worden und
-k"onnen folglich mit Routern umgehen.
-
-Samba ist ausschlie"slich in der Lage, NetBIOS "uber TCP/IP zu
-benutzen. Daher werden die anderen Protokolle ab hier ignoriert. F"ur
-ein gut funktionierendes Netzwerk ist es jedoch sehr wichtig, da"s auf
-den Clients nur die Protokolle installiert sind, die \emph{wirklich}
-ben"otigt werden. Ist beispielsweise noch NetBEUI zus"atzlich zu
-TCP/IP installiert, ist nicht klar, ob die Netzwerkumgebung in der
-NetBEUI- oder die in der TCP/IP-Welt gelten soll. Normalerweise ist
-heute ausschlie"slich noch TCP/IP notwendig. IPX kann dann noch
-ben"otigt werden, wenn es Novellsysteme im Netz gibt.
-
-\section{Bestandteile von Samba}
-
-Das Programmpaket Samba besteht aus mehreren Programmen, von denen
-einige der Serverseite und andere der Clientseite zugeordnet werden
-k"onnen.
-
-\subsection{Die Servertools}
-
-\begin{description}
-
-\item[smbd] ist der zentrale Serverproze"s, der f"ur die eigentlichen
- Datei- und Druckdienste zust"andig ist. Sie werden mehrere
- \prog{smbd}s im System finden. Einer dieser Prozesse h"ort auf dem
- TCP-Port 139, und nimmt neue Verbindungen entgegen. Jede neue
- Verbindung st"o"st einen neuen \prog{smbd} Proze"s an. Wenn Sie
- einen Client vom Sambaserver trennen wollen, m"ussen Sie nur mit
- \prog{smbstatus} die Proze"snummer des zust"andigen \prog{smbd}
- erfragen, und diesen einen Proze"s t"oten.
-
- Jeder \emph{aktive} Client ben"otigt etwa 1-2 MB Hauptspeicher auf dem
- Server. Clients, die gerade nicht aktiv Dateien mit dem Sambaserver
- austauschen, ben"otigen praktisch "uberhaupt keine Resourcen. Viel
- Hauptspeicher kann von Samba selbstverst"andlich gut als Cache
- genutzt werden.
-
-\item[nmbd] ist f"ur die NetBIOS Namens- und Datagrammdienste
- zust"andig. Dieser Proze"s reserviert beim Start von Samba die
- entsprechenden NetBIOS-Namen, er kann WINS-Server sein und ist f"ur
- den Computersuchdienst zust"andig.
-
-\item[testparm] Mit diesem Programm kann man die \dateistyle{smb.conf}
- auf syntaktische Korrektheit pr"ufen. Das Programm liest die
- Konfigurationsdatei ein und gibt Fehlermeldungen aus, sofern es
- unbekannte Parameter findet.
-
-\item[smbpasswd] wird zur Pflege der verschl"usselten Pa"sw"orter auf
- Serverseite verwendet. Wie dies funktioniert, wird im Kapitel
- \ref{passwoerter} erkl"art.
-
-\item[smbcontrol] Mit diesem Programm lassen sich die D"amonen von
- Samba kontrollieren. Beispielsweise kann man f"ur einzelne D"amonen
- den Debuglevel gezielt auf einen gew"unschten Wert setzen.
-
-\end{description}
-
-\subsection{Die Clients}
-
-\begin{description}
-
-\item[smbclient] Mit dem Programm \prog{smbclient} kann man auf
- Freigaben von NT-Rechnern zugreifen. Man kann auf von NT zur
- Verf"ugung gestellten Druckern drucken und man kann NT-Freigaben in
- tar-Dateien sichern. Weiterhin kann mit \prog{smbclient} die Liste
- der Server im Netz erfragt werden, analog zu der Netzwerkumgebung
- unter Windows.
-
-\item[nmblookup] ist ein Diagnosewerkzeug f"ur die
- NetBIOS-Namensaufl"osung. Wenn zwei Computer mit Windows sich nicht
- finden k"onnen, kann man mit \prog{nmblookup} deren Versuche, sich
- gegenseitig zu finden, genau nachstellen. Ebenso k"onnen WINS-Server
- befragt werden und ein NetBIOS Node Status abgefragt werden. Das
- entsprechende Programm auf unter Windows ist das
- Kommandozeilenprogramm \prog{nbtstat}.
-
-\item[smbcacls:] Mit diesem Programm lassen sich von Unix aus Access
- Control Lists auf Windows-Dateien auslesen und setzen. Ist Samba mit
- ACL-Support kompiliert, geht dies selbstverst"andlich auch f"ur die
- auf Unix abgelegten Dateien.
-
-\end{description}
-
-\subsection{Weitere Serverkomponenten}
-
-\begin{description}
-
-\item[smb.conf:] Die zentrale Konfigurationsdatei von Samba. Ist Samba
- als fester Systembestandteil installiert, findet sie sich in der
- Regel unter \dateistyle{/etc/smb.conf}. Wurde Samba selbst
- kompiliert, so liegt sie h"aufig unter
- \dateistyle{/usr/local/samba/lib/smb.conf}.
-
-\item[/var/lock/samba:] Samba ben"otigt ein Verzeichnis, in dem es
- tempor"are Lockdateien und Datenbanken ablegen kann. Wird Samba ohne
- besondere Optionen selbst kompiliert, liegt dieses Verzeichnis unter
- \dateistyle{/usr/local/samba/var}.
-
-\item[/etc/smbpasswd] ist die Pa"swortdatenbank von Samba, sofern mit
- verschl"usselten Pa"s\-w"ortern gearbeitet wird. Bei selbst
- kompilierten Sambaversionen liegt diese Datei h"aufig im Verzeichnis
- \dateistyle{/usr/local/samba/private/}.
-
-\end{description}
-
-\section{NetBIOS-Konfiguration mit Samba}
-
-Als erstes soll eine minimale Konfiguration von Samba erreicht werden,
-mit der jeder Rechner in der Netzwerkumgebung zu sehen ist. Dazu
-sollte die Datei \dateistyle{smb.conf} folgenderma"sen aussehen:
-
-\begin{verbatim}
-[global]
-workgroup = arbeitsgruppe
-interfaces = <IP-Adresse>/<Netzmaske>
-\end{verbatim}
-
-\label{aufbau-smb.conf}
-Der grunds"atzliche Aufbau der \dateistyle{smb.conf} gleicht dem Aufbau der
-.INI-Dateien von Windows 3. Die Datei ist in mehrere Abschnitte
-unterteilt, die jeweils durch einen Abschnittsnamen eingeleitet
-werden. Dieser Abschnittsname selbst wird in eckige Klammern gesetzt.
-Der Inhalt jedes Abschnitts besteht nun aus Parameterzuweisungen. Im
-Beispiel gibt es nur den Abschnitt \param{global}. In diesem werden
-Festlegungen getroffen, die den Server als ganzes betreffen. Wenn
-sp"ater Freigaben erstellt werden, geschieht dies durch Anlegen von
-weiteren Abschnitten.
-
-Mit dem Parameter \param{workgroup =} wird die Arbeitsgruppe
-festgelegt, in der sich der Server befinden soll.
-
-Der Parameter \label{interfaces}\param{interfaces =} ist einer der
-wichtigsten Parameter der Sambakonfiguration. Er ist deshalb so
-wichtig, weil damit das Funktionieren des NetBIOS-Systems innerhalb
-von Samba garantiert wird. Sp"ater wird deutlich werden, da"s gro"se
-Teile der Kommunikation auf Broadcasts basieren. Mit \prog{netstat
- -ia} bekommt man auf den meisten Unix-Systemen Informationen "uber
-die vorhandenen Netzwerkinterfaces. Mit \prog{ifconfig <interface>}
-kann man sich dann n"ahere Informationen anzeigen lassen.
-
-Der Parameter \param{interfaces =} weist Samba an, diese und keine
-andere Schnittstelle zu nutzen. Dar"uberhinaus ist Samba nun in der
-Lage, die Broadcastadresse, die auf dieser Schnittstelle g"ultig ist,
-zu bestimmen. Theoretisch k"onnte Samba die Broadcastadresse
-selbst"andig herausfinden, aber es gibt keinen portablen Weg, dies
-"uber Systemgrenzen hinweg zu tun. Das sicherste ist, Samba direkt
-"uber die Broadcastadresse zu informieren.
-
-Meistens funktioniert zus"atzlich zur Notation
-
-\begin{verbatim}
-interfaces = <IP-Adresse>/<Netzmaske>
-\end{verbatim}
-
-\noindent auch \prog{interfaces = <Interface-Name>}.
-
-Mit diesen beiden Einstellungen wird man direkt den Sambarechner in
-der Netzwerkumgebung sehen. Will man Tests auf NetBIOS-Ebene
-durchf"uhren, sollte man zur Vereinfachung zwei weitere Parameter
-setzen. Mit diesen drei Parametern bekommt man einen \emph{komplett
- offenen} Server. Die Parameter werden in sp"ateren Abschnitten
-genauer erkl"art. Die vollst"andige \dateistyle{smb.conf} sieht
-folgenderma"sen aus:
-
-\begin{verbatim}
-[global]
-workgroup = arbeitsgruppe
-interfaces = <IP-Adresse>/<Netzmaske>
-security = share
-encrypt passwords = yes
-\end{verbatim}
-
-Mit dieser Konfiguration kann Samba gestartet werden. Es werden die
-beiden D"amonen \prog{nmbd} und \prog{smbd} ben"otigt. Diese kann man
-direkt von der Kommandozeile starten.
-
-Setzt man SuSE Linux ein, so kann man Samba mit dem Aufruf
-
-\begin{verbatim}
-rcsmb start
-\end{verbatim}
-
-Damit Samba beim n"achsten Hochfahren automatisch gestartet wird,
-sollte die Variable \texttt{START\_SMB} in der Datei
-\dateistyle{/etc/rc.config} auf \texttt{yes} gesetzt werden.
-
-Es ist denkbar, den Aufruf beider Programme durch den \prog{inetd}
-durchf"uhren zu lassen. Bei Samba ist dies jedoch nicht sinnvoll.
-Insbesondere der \prog{nmbd} mu"s auf jeden Fall beim Start des
-Systems hochfahren, da dieser im NetBIOS-System Namen f"ur sich
-reservieren mu"s. W"urde er erst bei der ersten Anfrage gestartet,
-h"atten Windowsrechner keine M"oglichkeit, den Sambarechner zu finden.
-Au"serdem wird sich der \prog{nmbd} nicht wieder beenden, sobald er
-einmal gestartet wurde. Der \prog{smbd} k"onnte durch den \prog{inetd}
-gestartet werden. Jedoch ist der Resourcenbedarf nicht so hoch, da"s
-die erh"ohte Startzeit damit gerechtfertigt werden k"onnte.
-
-Nachdem alle Sambaserver gestartet wurden, sollten diese in der
-Netzwerkumgebung der beteiligten Windowsrechner erscheinen.
-
-\section{Namensaufl"osung per Broadcast}
-
-Mit \prog{nmblookup} kann man direkt eine NetBIOS-Namensanfrage
-ausl"osen.
-
-\begin{quote}
-\begin{small}\begin{verbatim}
-vlendec@server:/home/vlendec> nmblookup server
-querying server on 192.168.1.255
-192.168.1.3 server<00>
-vlendec@linux:/home/vlendec>
-\end{verbatim}\end{small}
-\end{quote}
-
-An diesem Beispiel wird deutlich, wie die NetBIOS-Namensaufl"osung
-normalerweise arbeitet. Es wird ein Paket an der Adresse 192.168.1.255
-versendet, das hei"st an die Broadcastadresse im lokalen Subnetz. Um
-NetBIOS-Namensanfragen zu erm"oglichen, mu"s Samba in der Lage sein,
-die Broadcastadresse herauszufinden, an die das Paket geschickt werden
-soll. \prog{nmblookup} entnimmt diese Adresse der Zeile
-\param{interfaces =} der \dateistyle{smb.conf}. F"ur Tests kann man
-\prog{nmblookup} mit dem Parameter -B anweisen, die Anfragen an eine
-andere Broadcastadresse zu versenden.
-
-\begin{quote}\begin{small}\begin{verbatim}
-vlendec@delphin:~ > nmblookup -B 192.168.234.31 server
-querying server on 192.168.234.31
-name_query failed to find name server
-vlendec@delphin:~ >
-\end{verbatim}\end{small}\end{quote}
-
-In diesem Beispiel wurde die Broadcastadresse auf 192.168.1.31
-gesetzt. Diese Broadcastadresse gilt in Subnetz 192.168.1.0/27. Jedoch
-f"uhlte sich der \prog{nmbd}, der f"ur diesen Namen verantwortlich
-ist, nicht angesprochen. Folglich hat er nicht auf diese Namensanfrage
-geantwortet.
-
-Unter Windows kann man die Namensanfrage so isoliert nicht ausl"osen,
-man mu"s eine Verbindung aufbauen. Windows unterh"alt einen Cache, in
-dem erfolgreiche Anfragen zwischengespeichert werden. Diesen kann man
-sich mit \prog{nbtstat -c} anzeigen und mit \prog{nbtstat -R} l"oschen.
-Man kann eine Anfrage erzwingen, indem man mit leerem Namenscache eine
-Verbindung aufbaut, beispielsweise durch ein \prog{net view
- \textbackslash{}\textbackslash{}samba}.
-
-Die Fehlermeldung, wenn eine NetBIOS-Namensanfrage fehlschl"agt,
-lautet im GUI: "`Der Netzwerkpfad wurde nicht gefunden"'. Auf der
-Kommandozeile kommt noch die Fehlermeldung 53 dazu.
-
-Mit \prog{nmblookup} und \prog{nbtstat} kann man sich zus"atzlich die
-von einem Rechner reservierten Namen ausgeben lassen. Die
-entsprechende Operation nennt sich \defin{Node Status Request} und
-wird durch den Parameter \prog{nmblookup -A <IP-Adresse>} ausgel"ost.
-Die Ausgabe eines solchen Node Status Request zeigt, da"s ein Rechner
-f"ur sich nicht nur einen einzigen Namen reserviert, sondern gleich
-mehrere.
-
-\begin{quote}\begin{small}\begin{verbatim}
-vlendec@delphin:~ > nmblookup -A 192.168.234.5
-Looking up status of 192.168.234.5
-received 6 names
- NT4WKS <00> - B <ACTIVE>
- SAMBA <00> - <GROUP> B <ACTIVE>
- NT4WKS <03> - B <ACTIVE>
- ADMINISTRATOR <03> - B <ACTIVE>
- NT4WKS <20> - B <ACTIVE>
- SAMBA <1e> - <GROUP> B <ACTIVE>
-num_good_sends=0 num_good_receives=0
-
-vlendec@delphin:~ >
-\end{verbatim}\end{small}\end{quote}
-
-Zun"achst gibt es die Einzelnamen, zum Beispiel den Computernamen
-selbst. F"ur diese gilt die Regel, da"s sie nur ein einziges Mal im
-gesamten Netz auftauchen d"urfen. Sie werden reserviert und stehen dem
-entsprechenden Rechner dann exklusiv zur Verf"ugung. Daneben gibt es
-die Gruppennamen, die im Node Status Request durch \texttt{<GROUP>}
-markiert sind. Diese kann es mehrfach im Netz geben. Die Gruppennamen
-sind insbesondere als Ziele f"ur NetBIOS-Datagramme interessant.
-Beispielsweise reserviert jeder Teilnehmer an einer Arbeitsgruppe den
-NetBIOS-Gruppennamen \nbname{arbeitsgruppe<00>}. Damit kann ein
-Rechner mit einem einzigen verschickten Datagramm an diesen Namen
-s"amtliche Rechner in dieser Arbeitsgruppe erreichen.
-
-Zus"atzlich f"allt auf, da"s beispielsweise der Computername selbst
-als Einzelname mehrfach reserviert ist. Hier kommen die
-unterschiedlichen Namenstypen ins Spiel. Das 16. Byte eines
-NetBIOS-Namens ist f"ur ein Typfeld reserviert. So sind
-unterschiedliche Anwendungen auf einem Rechner in der Lage, sich Namen
-zu reservieren, ohne sich gegenseitig zu st"oren. Der Wert des
-Typfeldes wird hexadezimal in spitzen Klammern angegeben.
-
-Zun"achst die Einzelnamen, die h"aufig auftauchen:
-
-\begin{description}
-
-\item[computername$<$00$>$] Hiermit tut der Rechner einfach seine
-Existenz kund. Wenn ein Rechner auf Resourcen anderer Rechner zugreift,
-wird als Clientname dieser Name benutzt.
-
-\item[computername$<$20$>$] Dieser Name wird f"ur den Serverdienst
-reserviert. Wenn ein Rechner als Datei- oder Druckserver angesprochen
-werden soll, dann wird eine Verbindung zu diesem NetBIOS-Namen aufgebaut.
-
-\item[computername$<$03$>$] Unter diesem Namen meldet sich der
-Nachrichtendienst des Rechners an. Kurze Meldungen, die unter Windows
-NT mit dem Kommando \prog{net send} abgesetzt werden, und unter
-Windows 95 mit dem Programm Winpopup verschickt werden, kann der
-Rechner damit empfangen und am Bildschirm anzeigen.
-
-\item[arbeitsgruppe$<$1d$>$] Dieser Rechner ist der so genannte
- \defin{Locale Master Browser}, der die Liste s"amtlicher Rechner in
- der Netzwerkumgebung pflegt.
-
-\item[arbeitsgruppe$<$1b$>$] Dieser Rechner ist der \defin{Domain
- Master Browser}, der "uber Subnetzgrenzen hinweg f"ur die
- Netzwerkumgebung zust"andig ist.
-
-\end{description}
-
-Einige Gruppennamen werden ebenfalls reserviert:
-
-\begin{description}
-
-\item[arbeitsgruppe$<$00$>$] Ein Rechner verk"undet hiermit seine
- Zugeh"origkeit zu einer Arbeitsgruppe. Beispielsweise k"onnen
- Winpopup-Meldungen an eine ganze Arbeitsgruppe versendet werden.
- Dies geschieht per Datagramm an diesen Namen.
-
-\item[arbeitsgruppe$<$1c$>$] Jeder Domain Logon Server reserviert
- diesen Namen f"ur sich. Clients finden ihre Domain Controller "uber
- diesen NetBIOS-Namen.
-
-\item[arbeitsgruppe$<$1e$>$] Wahlen zum Local Master Browser werden
- "uber diesen Namen abgewickelt. Siehe hierzu Kapitel
- \ref{netzwerkumgebung}.
-
-\end{description}
-
-Damit sind die f"ur Datei- und Druckerdienste wichtigsten Namenstypen
-beschrieben. Sobald unter NT andere Dienste installiert werden, kommen
-andere Namenstypen hinzu. Exchange zum Beispiel nutzt die Namenstypen
-22, 23 und 24. Mehr Namenstypen findet man in der Microsoft Knowlegde
-Base unter Artikel Nummer Q163409.
-
-\section{Netzwerkumgebung}
-\label{netzwerkumgebung}
-
-Die Netzwerkumgebung ist eine Anzeige, in der s"amtliche Server im Netz
-aufgef"uhrt sind. Alle Rechner, die Datei- oder Druckfreigaben
-zur Verf"ugung stellen, erscheinen dort oder sollten es zumindest, wenn alles
-reibungslos funktioniert. Jeder Client, der auf eine solche Resource
-zugreifen m"ochte, kann sich die Liste der Server im Netz geben lassen. Damit
-diese Anzeige nicht zu un"ubersichtlich ger"at, werden die Rechner in so
-genannte Arbeitsgruppen aufgeteilt. Jeder Rechner wird einer Arbeitsgruppe
-zugeordnet, in erscheint und die er als erstes beim Doppelklick auf das
-Symbol "`Netzwerkumgebung"' angezeigt. Die anderen Arbeitsgruppen sind
-ebenfalls "uber den Unterzweig "`Gesamtes Netzwerk"' sichtbar.
-
-Bez"uglich des Zugangs zu Arbeitsgruppen findet keinerlei Authentifizierung
-statt. Jeder Rechner kann frei f"ur sich entscheiden, in welcher Arbeitsgruppe
-er erscheinen m"ochte, jeder im Netz kann sich beliebige Arbeitsgruppen
-anzeigen. Dies gilt ebenfalls, wenn im Netz mit NT-Dom"anen gearbeitet wird.
-NT-Dom"anen haben nur eher zuf"allig im Netz ein der Arbeitsgruppe "ahnliches
-Erscheinungsbild.
-
-Das klingt verwirrend, ist es vermutlich beim ersten Lesen auch. Zum
-Verst"andnis des Windows-Networking mu"s man drei Begriffe ganz klar
-von einander trennen:
-
-\begin{description}
-\item[NetBIOS] Unter jeglicher Kommunikation von Windowsrechnern liegt
- das API NetBIOS. Mit Hilfe des NetBIOS sind Rechner im Netz
- ansprechbar, sie k"onnen verschiedenste Dienste anbieten. Einer
- dieser Dienste ist die Netzwerkumgebung.
-\item[Arbeitsgruppe] Eine Arbeitsgruppe ist eine reine Liste von
- Rechnern. Sie hat mit NetBIOS \emph{ausschlie"slich} als
- Transportmedium zu tun. Der Dienst, der die Netzwerkumgebung bereit stellt,
-k"onnte theoretisch vollst"andig unabh"angig von NetBIOS implementiert werden,
-ist in der Praxis aber sehr von einem funktionierenden NetBIOS abh"angig.
-
-\item[Dom"ane] Eine Dom"ane bezeichnet etwas v"ollig anderes als eine
- Arbeitsgruppe.Eine Dom"ane ist eine gemeinsam genutzte
- Benutzerdatenbank. Microsoft hat in seiner Implementation einer
- Dom"ane die Einschr"ankung gemacht, da"s alle Rechner einer Dom"ane
- in einer Arbeitsgruppe auftauchen m"ussen. Das hei"st aber nicht,
- da"s alle Rechner in der Arbeitsgruppe einer Dom"ane auch die
- gemeinsame Benutzerdatenbank nutzen m"ussen.
-\end{description}
-
-Das Auftauchen eines Rechners in der Netzwerkumgebung hat nichts mit
-seiner Erreichbarkeit zu tun, es ist h"ochstens ein vager Hinweis
-darauf, da"s man es dort einmal versuchen kann. Ein Rechner
-erreichbar sein, aber nie auftauchen, oder er kann in der
-Netzwerkumgebung stehen, aber lange nicht mehr erreichbar sein.
-
-Die \defin{Netzwerkumgebung} ist einer der instabileren Aspekte von
-Windows. Hiermit kann man sich, sofern alles funktioniert, alle
-Rechner in einer Arbeitsgruppe anzeigen lassen. Dabei dauert es
-mitunter geraume Zeit, bis ein Rechner in einer Anzeige erscheint, und
-es dauert unter Umst"anden noch l"anger, bis er wieder verschwindet.
-
-Eine naive Implementation k"onnte so aussehen: Jeder Rechner,
-der Serverdienste anbietet, teilt dies regelm"a"sig per Broadcast im Netz
-mit. Ein solches Vorgehen hat jedoch mehrere Nachteile. Erstens
-w"urde die Last im Netz mit jedem zus"atzlichen Rechner stark
-ansteigen. Zweitens mu"s jeder Rechner, der die Netzwerkumgebung anzeigen
-will, relativ komplexe Software laufen lassen. Und drittens scheitert dieses
-Schema auf jeden Fall an Subnetzgrenzen, die f"ur Broadcasts eine
-Grenze darstellen. Aus diesen Gr"unden ist man einen anderen Weg
-gegangen.
-
-Der \defin{Local Master Browser\footnote{Der Local Master Browser
- wird in der deutschen Dokumentation von Windows
- \emph{Computersuchdienst} genannt. Der Domain Master Browser ist
- der Dom"anenhauptsuchdienst. Local Master Browser finde ich sehr
- viel handlicher, und daher werde ich den englischen Begriff
- verwenden.}} (im Folgenden auch LMB genannt) ist ein Rechner, der
-im Netz die Netzwerkumgebung pflegt. Dieser Rechner wird nirgendwo
-zentral bestimmt, sondern er wird gew"ahlt. Diese Wahl findet immer
-dann statt, wenn einer der beteiligten Rechner feststellt, da"s es im
-Moment keinen solchen Local Master Browser gibt. Beispielsweise
-kann der Explorer von Windows eine solche Wahl ansto"sen. Wenn Windows
-95 beim "Offnen der Netzwerkumgebung die geschwenkte Taschenlampe anzeigt,
-wird der LMB gesucht. Ist
-keiner vorhanden, wird eine Wahl angesto"sen.
-
-Die Wahl erfolgt mit Datagrammen an den Gruppennamen
-\nbname{arbeitsgruppe<1e>}. Ein Rechner verschickt ein Datagramm an
-diesen Namen. Jeder Rechner, der diesen Namen reserviert hat, h"ort
-dieses Datagramm und entscheidet, wie er selbst vorgehen soll. In dem
-Datagramm sind verschiedene Kriterien zur Wahl enthalten,
-beispielsweise das Betriebssystem des versendenden Rechners. Hieraus folgt,
-da"s es in einem Subnetz f"ur jede vorhandene Arbeitsgruppe einen LMB gibt.
-
-Empf"angt beispielsweise eine Windows NT Workstation ein Paket von
-einem Windows NT Server, so entscheidet sie, da"s sie die Wahl
-verloren hat. Damit wird sie selbst nicht mehr aktiv. Kommt dieses
-Paket jedoch von einem Rechner mit Windows 95, so h"alt sie sich
-selbst f"ur geeigneter, den Local Master Browser zu "ubernehmen.
-Dann wird sie selbst ein solches Wahlpaket mit ihren Parametern
-versenden. Der Windows 95 Rechner empf"angt dies, und sieht, da"s er
-verloren hat. Auf diese Weise schaukelt sich die Wahl hoch, bis der
-"`beste"' Rechner die Wahl gewinnt.
-
-Wenn es nun mehrere Windows NT Workstations im Netz g"abe, dann
-w"are die Wahl unentschieden. An dieser Stelle kommt die \emph{Uptime}
-der Rechner ins Spiel. Der Rechner, der am l"angsten l"auft, gewinnt
-die Wahl. Nun kann es sein, da"s nach einem Stromausfall zwei Rechner
-genau die gleiche Uptime haben. Dann kommt als letztes und eindeutiges
-Entscheidungskriterium der NetBIOS-Name des Rechners zum Zug. Der
-alphabetisch vorne stehende Rechner gewinnt. Mit diesen drei Kriterien
-ist eine eindeutige Wahl gesichert.
-
-Samba ordnet sich in der Standardeinstellung zwischen Windows 95 und
-Windows NT ein, das hei"st, gegen Windows 95 gewinnt Samba die Wahl,
-"uberl"a"st jedoch Windows NT Rechnern den Local Master Browser.
-
-Drei Parameter in der \dateistyle{smb.conf} bestimmen das Verhalten von Samba
-in der Wahl zum Local Master Browser:
-
-\begin{description}
-
-\item[\param{os level}] Damit wird die Einordnung von Samba in die
- unterschiedlichen Betriebssysteme geregelt. Diese haben f"ur die
- Betriebssystemstufe folgende Werte:
-
-\[\begin{tabular}{|l|r|}
-\hline
-Windows for Workgroups & 0 \\
-\hline
-Windows 95/98 & 1 \\
-\hline
-Windows NT Workstation & 16 \\
-\hline
-Samba & 20 \\
-\hline
-Windows NT Server & 32 \\
-\hline
-\end{tabular}\]
-
-Diese Werte sind nicht als fest anzusehen. Wenn ein neues Service Pack
-f"ur ein Betriebssystem herausgegeben wird, ist es m"oglich, da"s in
-der Software f"ur den Local Master Browser Fehler bereinigt wurden.
-Dann ist es sinnvoll, da"s diese neue Software die Rolle des LMB
-"ubernimmt.
-
-Der Parameter \param{os level} kann Werte von 0 bis 255 annehmen.
-Setzt man ihn auf 255, wird nach einer erfolgreichen Wahl niemand mehr
-Local Master Browser werden k"onnen.
-
-\item[\param{local master}] M"ochte man auf keinen Fall den LMB auf
- einem Sambarechner haben, so setzt man den Parameter \param{local
- master = no}. Dann nimmt Samba an keiner Wahl teil.
-
-\item[\param{preferred master}] Mit der Standardeinstellung
- \param{preferred master = no} sucht Samba beim Start nach
- einem LMB. Findet er einen, meldet er sich dort. Findet er keinen
- LMB, bleibt Samba passiv. Jemand anders mu"s eine Wahl ansto"sen.
- Wenn dann eine Wahl stattfindet, nimmt Samba teil und ordnet sich
- anhand seines \param{os level} ein.
-
-\end{description}
-
-Es ist sehr sinnvoll, den Local Master Browser st"andig auf einer
-festen Maschine laufen zu lassen. H"aufige Wechsel des Local Master
-Browser lassen die Netzwerkumgebung aus zwei Gr"unden sehr instabil
-werden. Erstens m"ussen sich die Server im Netz h"aufig an neuen Local
-Master Browsern anmelden. Diese Anmeldung erfolgt per UDP und kann
-auch mal fehlschlagen. Zweitens kann es passieren, da"s ein Client den
-Wechsel eines Local Master Browser nicht mitbekommt und Informationen
-von einem nicht mehr aktuellen Local Master Browser beziehen m"ochte.
-Ein Sambaserver ist typischerweise eine Maschine, die als Server
-durchl"auft und auch deutlich stabiler als Windows-Clients ist. Mit
-den Einstellungen
-
-\begin{verbatim}
-[global]
-os level = 100
-preferred master = yes
-\end{verbatim}
-
-\noindent
-kann man sicher sein, da"s der Sambarechner immer den Local Master
-Browser innehat. \param{preferred master = yes} stellt sicher, da"s
-beim Start von Samba eine Wahl angesto"sen wird, und mit \param{os
- level = 100} gewinnt Samba diese Wahl gegen alle anderen Maschinen
-im Netz. Es sei denn, ein anderer Administrator von Samba kommt auf
-die Idee, einen noch h"oheren Wert f"ur den \param{os level} zu
-benutzen.
-
-\section{NetBIOS "uber Subnetzgrenzen}
-
-\newcommand{\computer}[2]{%
- \rput[t](0,0){%
- \begin{pspicture}(2,2)
- \psframe(0,0.5)(2,1.5)
- \psline(1,1.5)(1,2)
- \rput(1,1){\texttt{#1}}
- \rput[b](1,0.2){{\footnotesize IP: #2}}
- \end{pspicture}}}
-\newcommand{\network}[1]{%
- \rput[l](0,0){%
- \begin{pspicture}(#1,0.6)
- \psline(0,0)(0,0.6)
- \psline(0,0.3)(#1,0.3)
- \psline(#1,0)(#1,0.6)
- \end{pspicture}}}
-\newcommand{\routednet}{%
-\rput[lb](0,0){%
-\begin{pspicture}(10,5.5)
-\rput(0,5){\network{7}}
-\rput(2,5){\computer{WKS}{192.168.1.5}}
-\rput(3,2){\network{7}}
-\rput(8,2){\computer{SERVER}{192.168.2.8}}
-\rput(5.5,3.75){\psframe(-1,-0.25)(1,0.25)}
-\rput(5.5,3.75){{\footnotesize 192.168.1.1}}
-\rput(5.5,3.25){\psframe(-1,-0.25)(1,0.25)}
-\rput(5.5,3.25){{\footnotesize 192.168.2.1}}
-\psline(5.5,4)(5.5,5)
-\psline(5.5,2)(5.5,3)
-\end{pspicture}}}
-
-Die wenigsten Firmen haben heutzutage nur ein einziges LAN. Entweder
-sind verschiedene Geb"aude oder Standorte mit Routern verbunden, oder
-jemand w"ahlt sich in das Firmennetz ein. In diesen F"allen
-funktioniert die Namensaufl"osung nicht mehr wie beschrieben. Wird die
-Namensreservierung und -aufl"osung ausschlie"slich per Broadcast
-durchgef"uhrt, kann man Rechner, die hinter Routern liegen, nicht
-erreichen. Broadcasts verbleiben in den Subnetzen, in denen sie
-ausgesendet wurden.
-
-\begin{figure}[ht]\[
-\begin{pspicture}(10,6)
-\rput(0,0){\routednet}
-\psline{<-}(0,5.5)(2.7,5.5)
-\psline{->}(4.3,5.5)(7,5.5)
-\rput(3.5,5.5){\texttt{SERVER?}}
-\end{pspicture}\]
-\caption{Namensanfrage per Broadcast}
-\label{broadcastanfrage}
-\end{figure}
-
-In der dargestellten Situation sind zwei Netze "uber einen Router
-verbunden. Jeder der beiden Rechner reserviert seinen Namen in dem ihm
-zugeordneten Subnetz. Die Workstation \nbname{WKS} schickt ihre
-Reservierungen per Broadcast an 192.168.1.255, und der Server
-\nbname{SERVER} wird seinen Namen auf 192.168.2.255 reservieren. Der
-Router zwischen beiden bekommt diese Reservierungen zwar mit, wird sie
-aber nicht in das jeweils andere Subnetz weiterleiten. Wenn nun
-\nbname{WKS} ihren Server \nbname{SERVER} sucht, geschieht dies
-ebenfalls per Broadcast an 192.168.1.255. Diese Anfrage bleibt wie
-dargestellt im oberen Subnetz und erreicht \nbname{SERVER} gar nicht,
-so da"s dieser auch nicht antworten kann.
-
-\subsection{\nbname{LMHOSTS}}
-
-Der einfachste Weg, die Namensaufl"osung "uber Subnetzgrenzen hinweg
-zu realisieren, geht "uber eine statische Tabelle. Unter Windows
-liegt diese in der Datei \dateistyle{LMHOSTS}. Sie liegt abh"angig von der
-Windowsversion in unterschiedlichen Verzeichnissen und l"a"st sich am
-einfachsten mit der Suchfunktion des Desktops finden. Diese Datei ist
-"ahnlich aufgebaut wie die Datei \dateistyle{/etc/hosts} unter Unix. Ein
-Beispieleintrag ist der folgende:
-
-\verb|192.168.1.5 samba|
-
-Die Eintr"age in der \dateistyle{LMHOSTS} k"onnen durch den Zusatz
-\texttt{\#PRE} erg"anzt werden. Dieser Zusatz legt fest, in welcher
-Reihenfolge die Namensaufl"osung vorgenommen wird. Ist kein
-\texttt{\#PRE} vorhanden, so wird zun"achst eine konventionelle
-Namensaufl"osung per Broadcast versucht. Erst, wenn diese
-fehlschl"agt, wird in der \dateistyle{LMHOSTS} nachgeschaut. Ist der Zusatz
-vorhanden, so wird ohne Namensaufl"osung direkt der Wert in der
-\dateistyle{LMHOSTS} verwendet.
-
-Die Namensaufl"osung "uber die Datei \dateistyle{LMHOSTS} hat wie die
-Datei \dateistyle{/etc/hosts} den entscheidenden Nachteil, da"s sie
-auf jedem Rechner einzeln gepflegt werden mu"s. Das macht diese Art
-der Namenspflege sehr schnell unwartbar. Die Syntax der
-\dateistyle{LMHOSTS} l"a"st einen einfachen Trick zu, mit dem zentral
-eine \dateistyle{LMHOSTS}\footnote{Zentrale LMHOSTS} vorgehalten
-werden kann, das Statement \nbname{\#INCLUDE}. Man stellt an zentraler
-Stelle eine Freigabe zur Verf"ugung, in der die \dateistyle{LMHOSTS}
-steht, und f"ugt sie automatisch bei jedem booten in die Liste auf den
-Clients ein. Dazu mu"s einmalig auf den Clients die
-\dateistyle{LMHOSTS} folgenderma"sen aufgesetzt werden:
-
-\begin{verbatim}
-192.168.1.1 samba #PRE
-#INCLUDE \\samba\public\lmhosts
-\end{verbatim}
-
-Die einzelnen Werte sind nat"urlich den Gegebenheiten vor Ort
-anzupassen. Es ist darauf zu achten, da"s die Worte \nbname{\#PRE} und
-\nbname{\#INCLUDE} in Gro"sbuchstaben geschrieben sind. Bei den Namen
-selbst die Gro"sschreibung egal.
-
-\subsection{WINS}
-
-Die zweite M"oglichkeit, das Problem zu l"osen, ist ein zentraler
-Server, der die NetBIOS-Namen in einer Datenbank dynamisch pflegt.
-Dazu gibt es den WINS-Server. Ein solcher Server ist ein Rechner, bei
-dem sich jede NetBIOS-Applikation im Netz mit ihren Namen anmeldet.
-Die IP-Adresse dieses Servers mu"s jedem Rechner mitgeteilt werden.
-Bei Windows geschieht dies in den Eigenschaften des TCP/IP Protokolls
-im Reiter WINS-Adresse. Setzt man DHCP-Server ein, kann man ebenfalls
-den WINS-Server festlegen. Samba bekommt die Adresse mit dem Parameter
-\param{wins server = <ip-adresse>} im Abschnitt \param{[global]} der
-\dateistyle{smb.conf} mitgeteilt. Sobald ein Client die IP-Adresse des
-WINS-Servers kennt, ist es v"ollig gleichg"ultig, ob sich dieser im
-gleichen Subnetz befindet oder nicht.
-
-Die Namensreservierung erfolgt nicht mehr per Broadcast, sondern mit
-einem gerichteten UDP-Paket an den WINS-Server. Gerichtete Pakete
-leitet der Router wie jedes andere Paket an den WINS-Server weiter.
-Dieser sieht in seiner Tabelle nach, ob der Name bereits reserviert
-ist. Ist das nicht der Fall, so wird er spontan eine Best"atigung der
-Reservierung zur"uckschicken. Diese Reservierung gilt nun f"ur eine
-bestimmte Zeit und mu"s rechtzeitig erneuert werden.
-
-Ist der Name bereits reserviert, wird der WINS-Server den bisherigen
-Besitzer befragen, ob er den Namen noch ben"otigt. Bekommt er keine
-Antwort, wird er dem neuen Besitzer ebenfalls eine Best"atigung
-schicken. M"ochte der alte Besitzer den Namen noch verwenden, so wird
-der Anfragende eine Ablehnung der Reservierung erhalten. Diese
-Nachfrage ist notwendig, um einem abgest"urzten Rechner das spontane
-Booten zu erm"oglichen, da bei einem Absturz keine Freigabe der
-Namensreservierung erfolgen kann.
-
-Die Namensanfrage, die in Abbildung \ref{broadcastanfrage} den Server
-nicht erreichte, weil der Router keine Broadcasts weitergibt, wird nun
-direkt an den WINS-Server gerichtet, der in seiner Tabelle nachsehen
-kann.
-
-\begin{figure}[ht]\[
-\begin{pspicture}(10,6)
-\rput(0,0){\routednet}
-\rput(4,2){\computer{WINS}{192.168.2.5}}
-\psline[linestyle=dashed,linearc=0.25]
- {->}(2.5,4.5)(3.2,4.9)(5.3,4.9)(5.3,2)(4.5,1.5)
-\rput(3.5,5.8){\texttt{SERVER?}}
-\end{pspicture}\]
-\caption{WINS-Anfrage}
-\end{figure}
-
-Samba kann als WINS-Server konfiguriert werden, indem der Parameter
-\param{wins support = yes} gesetzt wird. Ist dieser Parameter gesetzt,
-kann Samba nach einem Neustart bei allen Clients und allen sonstigen
-Servern als WINS-Server eingetragen werden. Werden diese dann neu
-gestartet, melden sie sich beim WINS-Server an.
-
-Wenn nun ein Rechner mit Samba als WINS-Server konfiguriert ist, und
-sich die anderen Rechner dort anmelden, werden diese in der Datei
-\dateistyle{/var/lock/samba/wins.dat} abgelegt. Der \prog{nmbd} pflegt
-diese Datei dynamisch, je nach Reservierungen und Abmeldungen. Die
-Datei \dateistyle{wins.dat} wird in regelm"a"sigen Abst"anden geschrieben.
-Wenn es notwendig sein sollte, den wirklich aktuellen Stand
-unabh"angig von diesem Zeitintervall zu erhalten, so kann man dem
-\prog{nmbd} das \prog{HANGUP}-Signal durch den Befehl \prog{killall
--HUP nmbd} senden. Au"serdem wird die \dateistyle{wins.dat} beim Beenden
-des \prog{nmbd} geschrieben.
-
-Diese Datenbank wird auf Festplatte gehalten, damit die Daten einen
-Neustart von Samba "uberleben. Jeder Rechner, der einen Namen f"ur
-sich reserviert hat, hat diese Reservierung f"ur einen bestimmten
-Zeitraum ausgesprochen. Wenn Samba jetzt neu gestartet werden sollte,
-und dadurch die Datenbank verloren ginge, w"are der gesamte
-NetBIOS-Namensraum nicht mehr verf"ugbar. Au"serdem kann ein WINS
-Server die angeschlossenen Clients weder von sich aus finden, noch sie
-darum bitten, sich erneut zu registrieren. Daher ist die WINS
-Datenbank "uber Neustarts von Samba hinaus zu erhalten.
-
-Die Anfrage, die die Workstation \nbname{WKS} absetzt, wird nun nicht
-mehr per Broadcast gestellt, sondern mit einem gerichteten Paket an
-den WINS-Server, bei dem sich alle Rechner angemeldet haben.
-
-%\[\setlength{\unitlength}{1mm}
-%\begin{picture}(100,60)(0,20)
-%\put(0,0){\routednet}
-%\put(30,75){\makebox(0,0)[l]{{\ttfamily\bfseries SERVER?}}}
-%\curve(17,65, 20,72, 29,75)
-%\tagcurve(40,75, 50,75, 57,65, 57,45, 45,38, 40,30, 30,20)
-%\put(50,45){\circle*{1}}
-%\put(40,40){\computer{WINS}{192.168.2.5}}
-%\end{picture}\]
-
-WINS hat gegen"uber der broadcastbasierten Namensreservierung einige
-Vorteile. Namensreservierung per Broadcast ben"otigt Wartezeiten. Es
-wird die Reservierung angek"undigt, es wird gewartet, die Reservierung
-wird erneut angek"undigt, und es wird wieder gewartet. Dieses Spiel
-wiederholt sich mehrfach, bis der Rechner sicher sein kann, da"s ein
-eventueller Vorbesitzer des Namens genug Zeit hatte, sich zu beklagen.
-Beim Einsatz von WINS entfallen diese Wartezeiten, da hier ein
-einziger Rechner s"amtliche reservierte Namen registriert und in
-seiner Tabelle nachschauen kann. Daher ist die Reservierung per
-NetBIOS deutlich schneller, und auch weniger netzbelastend. Selbst
-wenn man also nur ein einziges Subnetz hat, sollte man zur Reduzierung
-der Netzlast den Einsatz eines WINS-Servers in Erw"agung ziehen.
-
-Zus"atzlich sei hier angemerkt, da"s es netzwerkweit nur einen
-einzigen WINS-Server geben darf. Selbst wenn es unterschiedliche
-Arbeitsgruppen oder Dom"anen gibt, darf es nicht mehr als einen
-WINS-Server geben. Setzt man mehrere WINS-Server ein, hat man
-getrennte Namensr"aume und handelt sich damit massive Probleme ein, da
-Windows Namen sowohl beim WINS als auch per Broadcast aufl"ost.
-
-Rechner im einen Namensraum k"onnen mit Rechnern, die an einem anderen
-WINS-Server angeschlossen sind, nicht kommunizieren, da die Namen
-nicht aufgel"ost werden k"onnen. Namen, die beim WINS nicht bekannt
-sind, werden von Windows zus"atzlich lokal per Broadcast aufgel"ost.
-Das hei"st, man findet beim einige Rechner nur per WINS, andere auch
-lokal. Die Fehlerdiagnose wird dadurch stark erschwert.
-
-Unter Windows NT kann man mehrere WINS-Server einsetzen, die sich
-gegenseitig abstimmen. Diese Replikation stellt sicher, da"s die
-Clients unabh"angig von der Anzahl der WINS-Server nur eine einzige
-Namensdatenbank sehen. Die WINS-Server stellen sich somit gegen"uber
-den Clients als eine konsistente Datenbank dar.
-
-Die Abfrage eines WINS-Servers durch \prog{nmblookup} erfolgt
-beispielhaft folgenderma"sen:
-
-\begin{verbatim}
-nmblookup -R -U 192.168.1.5 samba
-\end{verbatim}
-
-Hiermit wird der WINS-Server, der auf dem Rechner 192.168.1.5 liegt,
-nach dem Namen \nbname{samba} befragt.
-
-Samba kennt zwei zus"atzliche Funktionen, die es im Zusammenhang mit
-WINS interessant machen. Einerseits kann Samba als WINS Proxy
-eingerichtet werden, indem \param{wins proxy = yes} gesetzt wird. Ist
-diese Einstellung aktiv, dann wird Samba s"amtliche Reservierungen und
-Anfragen, die es aus dem lokalen Netz per Broadcast erh"alt, an den
-mit \prog{wins server =} konfigurierten WINS-Server weiterleiten.
-Stellt man mit dieser Einstellung einen Samba-Server in ein Subnetz,
-werden s"amtliche Rechner in diesem Netz werden nun beim WINS
-angemeldet, und nutzen diesen auch. Dies ist auch dann der Fall, wenn
-sie entweder selbst keinen WINS-Server ansprechen k"onnen oder nicht
-daf"ur konfiguriert sind. Man sollte jedoch in jedem Fall eine echte
-Konfiguration des WINS-Servers auf dem Client vorziehen. Ein WINS
-Proxy kann nur eine Behelfsl"osung sein, da man sich damit auf einen
-weiteren Rechner verl"a"st.
-
-Unter Windows kann man statische Eintr"age im WINS vornehmen. Dies
-geht so direkt unter Samba nicht. Man mu"s hierzu den Parameter
-\param{dns proxy = yes} auf dem WINS-Server setzen. Empf"angt der WINS
-Server nun eine Anfrage, die er nicht aus seiner Datenbank beantworten
-kann, wird er eine ganz normale Unix-Hostnamenanfrage machen.
-Typischerweise wird er in der \dateistyle{/etc/hosts} nachschauen und
-danach dann das DNS anhand der Konfiguration in der Datei
-\dateistyle{/etc/resolv.conf} befragen. Damit ist es durch einen Eintrag
-auf dem WINS-Server m"oglich, den gesamten DNS-Namensraum auch in der
-NetBIOS-Namenswelt zur Verf"ugung zu stellen.
-
-\section{Windows-Namensaufl"osung im Detail}
-
-Um die Namensaufl"osung unter Windows zu verstehen, mu"s man zwei
-Arten von Anwendungen unterscheiden:
-
-\begin{description}
-\item[NetBIOS-Anwendungen:] Dies sind die klassischen
- Windows-Programme, zum Beispiel um Laufwerke mit einem Server zu
- verbinden, oder um Outlook mit dem Exchange-Server zu verbinden. Die
- gesamte Netzwerkumgebung geh"ort ebenfalls zu den
- NetBIOS-Anwen\-dun\-gen.
-\item[TCP/IP-Anwendungen:] Telnet, ping und Netscape geh"oren zu den
- Anwendungen, die es nur in der TCP/IP-Protokollfamilie gibt. Bei
- diesen funktioniert die Namensaufl"osung etwas anders als bei den
- NetBIOS-Anwendungen.
-\end{description}
-
-Wenn eine {\bfseries NetBIOS-Anwendung} einen Namen aufl"osen will,
-dann geschieht dies in mehreren Schritten, die nacheinander
-ausgef"uhrt werden, bis der Name gefunden ist.
-
-\begin{enumerate}
-\item Das System schaut im NetBIOS-Namenscache nach. Dieser kann durch
- \prog{nbtstat -c} vom Benutzer abgefragt werden.
-\item Ist ein WINS-Server konfiguriert, so wird dieser befragt.
-\item Kann der Name im WINS nicht aufgel"ost werden, so wird eine
- Broadcast-Anfrage ausgel"ost.
-\item Es wird in der Datei \dateistyle{LMHOSTS} nachgesehen.
-\item Sofern in den Eigenschaften von TCP/IP die DNS-Aufl"osung f"ur
- NetBIOS-Namen aktiviert ist, wird nun an das Aufl"osungssystem f"ur
- TCP/IP-Anwendungen "ubergeben.
-\end{enumerate}
-
-Wenn man Namen in die Datei \dateistyle{LMHOSTS} eintr"agt, so werden diese
-erst nach den WINS- und Broadcast-Timeouts ber"ucksichtigt. Wenn man
-diese sofort aufgel"ost haben m"ochte, so kann man sie mit dem Zusatz
-\nbname{\#PRE} versehen. Dann werden sie beim n"achsten Reboot
-dauerhaft in den NetBIOS-Namenscache geladen. Im laufenden Betrieb
-kann man dieses Laden in den Namenscache durch ein \prog{nbtstat -R}
-erzwingen.
-
-Setzt man f"ur die IP-Adre"svergabe DHCP ein, kann man Windows-Clients
-die IP-Adresse des WINS-Servers auf diesem Weg mitteilen. Tut man
-dies, mu"s man den Clients ebenfalls einen Knotentyp zuweisen. Die
-oben beschriebene Tabelle gilt f"ur den Knotentyp 8, den sogenannten
-H-Knoten. Setzt man den Knotentyp auf 4, so bekommt man einen
-M-Knoten, der zuerst Broadcast und dann WINS ausf"uhrt. Diese
-Einstellung ist jedoch nur in Ausnahmef"allen sinnvoll, da jede
-Anfrage beim WINS die Broadcastlast im Netz reduziert.
-
-Die Namensaufl"osung f"ur {\bfseries TCP/IP-Anwendungen} ist
-einfacher.
-
-\begin{enumerate}
-\item Zun"achst wird in der Datei \dateistyle{HOSTS} nachgesehen.
-\item Ist ein DNS-Server konfiguriert, wird dieser befragt.
-\item Der DNS-Name wird, so wie er ist, an die
- NetBIOS-Namensaufl"osung "ubergeben. Damit kann f"ur interne Systeme
- vermeiden, sie ins DNS aufnehmen zu m"ussen. Will man etwa einen
- Proxy unter dem Namen "`proxy"' einrichten, gen"ugt es, auf dieser
- Maschine einen korrekt konfigurierten \prog{nmbd} zu installieren,
- der den Namen "`proxy"' registriert. Damit kann man auf allen
- Browsern einfach "`proxy"' eintragen.
-\end{enumerate}
-
-\todo{Tabelle}
-
-Die Namensaufl"osung von Samba ist weit weniger kritisch als die von
-Window-Systemen, da Samba in der Regel ausschlie"slich als Server
-auftritt. Samba als Server ist es gleichg"ultig, wie Namen aufgel"ost
-werden k"onnen. Es gibt zwei Situationen, in denen Samba Namen
-aufl"osen mu"s:
-
-\begin{description}
-\item[smbclient] Samba als Client mu"s offensichtlich Namen aufl"osen.
-\item[Samba als Dom"anenmitglied] Mit dem Parameter \param{password
- server} wird Samba als Dom"anenmitglied mitgeteilt, welcher
- Dom"anencontroller f"ur Pa"sw"orter zust"andig ist. Es ist enorm
- wichtig, da"s f"ur diese Funktion die Namensaufl"osung korrekt
- funktioniert.
-\end{description}
-
-Wie Windows kennt Samba vier Mechanismen zur Namensaufl"osung:
-Broadcast, WINS, LMHOSTS und die normale Unix-Namensaufl"osung. Die
-Reihenfolge, in der die Mechanismen abgefragt werden, wird durch den
-Parameter \param{name resolve order} festgelegt. Mit den vier Werten
-\param{bcast}, \param{wins}, \param{lmhosts} und \param{host} werden
-die vier Mechanismen beschrieben. Die Standardreihenfolge ist
-
-\begin{verbatim}
-name resolve order = lmhosts host wins bcast
-\end{verbatim}
-
-\noindent und legt fest, da"s vor der Windows-Namensaufl"osung zun"achst das
-DNS
-befragt wird. Dies ist h"aufig ein Problem f"ur \prog{smbclient}, da
-man m"oglicherweise auf einen DNS-Timeout warten mu"s, bevor die
-Windows-Namensaufl"osung benutzt wird. In vielen F"allen kann es von
-Vorteil sein, f"ur Samba als Client vollst"andig auf die
-DNS-Namensaufl"osung zu verzichten oder sie ans Ende der Liste zu
-stellen:
-
-\begin{verbatim}
-name resolve order = lmhosts wins bcast host
-\end{verbatim}
-
-\section{Browsing "uber Subnetzgrenzen}
-\label{browsing-im-wan}
-
-So, wie die Netzwerkumgebung in Abschnitt \ref{netzwerkumgebung}
-betrachtet wurde, funktioniert sie nur in einem einzigen lokalen Netz.
-Die Wahl zum Local Master Browser funktioniert per Datagramm, das an
-den Namen \nbname{arbeitsgruppe<1e>} gesendet wird.
-\nbname{arbeitsgruppe<1e>} ist ein Gruppenname, der von mehreren
-Rechnern reserviert sein kann. Das hei"st, da"s ein Datagramm an
-diesen Namen mehrere Rechner erreichen mu"s. Dies geschieht bei
-NetBIOS "uber TCP/IP mit einem UDP-Paket an die Broadcastadresse im
-lokalen Netz. Allein hieraus ergibt sich, da"s es pro Arbeitsgruppe in
-jedem Subnetz einen eigenen LMB geben mu"s. Jeder LMB bekommt aus
-seinem Subnetz die Informationen "uber vorhandene Server.
-
-Um diese Einschr"ankung zu umgehen, gibt es den Domain Master Browser
-(DMB). Der DMB ist ein Rechner, der die Serverlisten von allen LMBs
-einsammelt und auf Anforderung wieder herausgibt. Dabei sitzt der DMB
-nur passiv da und wartet darauf, da"s sich ein LMB mit ihm
-synchronisieren will. Es ist Aufgabe der LMBs, sich regelm"a"sig
-danach zu erkundigen, wo der DMB sitzt, und mit diesem dann die
-Serverlisten abzugleichen.
-
-Die Vorg"ange werden am deutlichsten, wenn man ein Beispiel
-betrachtet. Dieses Beispiel ist im wesentlichen der
-Originaldokumentation von Samba aus der Datei \dateistyle{BROWSING.txt}
-entnommen.
-
-\newcommand{\minicomputer}[1]{%
-\begin{picture}(10,9)(5,9)
-\put(0,0){\framebox(10,5){{\ttfamily #1}}}
-\put(5,5){\line(0,1){4}}
-\end{picture}}
-\newcommand{\mininetz}[1]{%
-\begin{picture}(62,12)
-\put(10,10){\minicomputer{N#1A}}
-\put(25,10){\minicomputer{N#1B}}
-\put(40,10){\minicomputer{N#1C}}
-\put(55,10){\minicomputer{N#1D}}
-\put(3,10){\line(1,0){59}}
-\put(3,8){\line(0,1){4}}
-\put(62,8){\line(0,1){4}}
-\end{picture}}
-
-\begin{figure}[ht]
-\[\setlength{\unitlength}{1.1mm}
-\begin{picture}(120,60)(0,5)
-\put(0,20){\mininetz{1}}
-\put(25,19){\makebox(0,0){\textit{{\small DMB,LMB}}}}
-\put(30,50){\mininetz{2}}
-\put(85,49){\makebox(0,0){\textit{{\small WINS}}}}
-\put(55,49){\makebox(0,0){\textit{{\small LMB}}}}
-\put(50,5){\mininetz{3}}
-\put(105,4){\makebox(0,0){\textit{{\small LMB}}}}
-\put(48,48){\minicomputer{R1}}
-\put(48,48){\line(0,1){12}}
-\put(48,39){\line(0,-1){9}}
-\put(77,48){\minicomputer{R2}}
-\put(77,48){\line(0,1){12}}
-\put(77,39){\line(0,-1){24}}
-\end{picture}\]
-\caption{Domain Master Browser}
-\end{figure}
-
-Dieses Netz besteht aus drei Subnetzen (1,2,3), die durch zwei Router (R1
-und R2) verbunden sind. Die Router lassen keine Broadcasts durch. Alle
-Subnetze bestehen aus jeweils vier Maschinen. Nehmen wir der Einfachheit
-halber an, da"s alle Maschinen in der gleichen Arbeitsgruppe
-konfiguriert sind. Rechner \nbname{N1B} im Subnetz 1 ist als Domain
-Master Browser konfiguriert. Das hei"st, da"s er die Browserliste f"ur
-die ganze Arbeitsgruppe aufsammelt. Rechner \nbname{N2D} ist als WINS
-Server konfiguriert und alle anderen Maschinen registrieren ihre
-NetBIOS Namen dort.
-
-Wenn alle diese Maschinen gebootet werden, werden in jedem der drei
-Subnetze Wahlen um einen Local Master Browser abgehalten. Nehmen wir
-an, im Subnetz 1 gewinnt \nbname{N1B}, im Subnetz 2 gewinnt
-\nbname{N2B} und im Subnetz 3 gewinnt \nbname{N3D}. Diese Maschinen
-sind als Local Master Browser in ihrem Subnetz bekannt. Im Subnetz 1
-liegen der LMB und der DMB auf der gleichen Maschine, was nicht der
-Fall sein mu"s. Diese beiden Rollen sind vollst"andig unabh"angig
-voneinander.
-
-Alle Maschinen, die Serverdienste anzubieten haben, k"undigen dies per
-Broadcast auf ihrem Subnetz an. Der Local Master Browser in jedem
-Subnetz empf"angt diese Broadcasts und tr"agt alle Server in einer
-Liste ein. Diese Liste von Eintr"agen ist die Basis f"ur die
-Browserliste. In unserem Fall nehmen wir an, da"s alle Maschinen
-Serverdienste anbieten, das hei"st, da"s alle Maschinen in der Liste
-erscheinen.
-
-F"ur jedes Subnetz wird der Local Master Browser als
-\emph{ma"sgeblich} angesehen, und zwar f"ur alle Namen, die er per
-lokalem Broadcast empf"angt. Broadcasts verlassen das Subnetz nicht,
-und die Broadcasts im lokalen Subnetz werden als ma"sgeblich
-angesehen. Daher wird dem Local Master Browser bei diesen Servern
-geglaubt. Rechner, die sich in anderen Subnetzen befinden, und "uber
-die der Local Master Browser von anderen Local Master Browsern
-informiert wurde, werden als nicht ma"sgeblich angesehen.
-
-An diesem Punkt sieht die Browse Liste folgenderma"sen aus: (dies sind
-die Maschinen, die Sie in Ihrer Netzwerkumgebung sehen w"urden, wenn
-Sie sie in einem bestimmten Subnetz ansehen)
-
-\vspace{\baselineskip}
-\[\begin{tabular}{|c|c|l|}
-\hline
-Netz & LMB & Liste \\ \hline \hline
-1 & \nbname{N1C} & \nbname{N1A}, \nbname{N1B}, \nbname{N1C}, \nbname{N1D}\\
-\hline
-2 & \nbname{N2B} & \nbname{N2A}, \nbname{N2B}, \nbname{N2C}, \nbname{N2D}\\
-\hline
-3 & \nbname{N3D} & \nbname{N3A}, \nbname{N3B}, \nbname{N3C}, \nbname{N3D}\\
-\hline
-\end{tabular}\]
-\vspace{\baselineskip}
-
-An diesem Punkt sind alle Subnetze vollst"andig separat, keine
-Maschine wird in anderen Subnetzen gesehen. Die
-Microsoft-Dokumentation spricht davon, da"s die Arbeitsgruppen in den
-Subnetzen getrennt sind.
-
-Sehen wir uns nun Subnetz zwei an. Sobald \nbname{N2B} der Local Master
-Browser geworden ist, sucht er den Domain Master Browser, um mit ihm
-die Browse Listen zu synchronisieren. Dies tut er, indem er den WINS
-Server (\nbname{N2D}) nach der IP-Adresse fragt, die zum NetBIOS-Namen
-\nbname{arbeitsgruppe<1B>} geh"ort. Diesen Namen hat der Domain Master
-Browser (\nbname{N1C}) beim WINS-Server f"ur sich beim booten
-registriert.
-
-\nbname{N2B} kennt nun den Domain Master Browser. Er k"undigt sich als
-Local Master Browser f"ur Subnetz 2 bei ihm an. Dann synchronisiert
-\nbname{N2B} sich mit \nbname{N2D}, indem er einen
-NetServerEnum2-Aufruf abschickt. Der Domain Master Browser schickt
-alle Server, die er kennt, zur"uck. Sobald der Domain Master Browser
-die Ank"undigung von \nbname{N2B} als Lokaler Master Browser erhalten
-hat, wird auch er sich mit dem Local Master Browser
-synchronisieren. Nachdem beide Synchronisationen stattgefunden haben,
-sehen die Browse Listen so aus:
-
-\vspace{\baselineskip}
-\[\begin{tabular}{|c|c|l|}
-\hline
-Netz & LMB & Liste \\ \hline \hline
-1 & \nbname{N1C} & \nbname{N1A}, \nbname{N1B}, \nbname{N1C}, \nbname{N1D}\\
- & & \nbname{N2A*}, \nbname{N2B*}, \nbname{N2C*}, \nbname{N2D*}\\
-\hline
-2 & \nbname{N2B} & \nbname{N2A}, \nbname{N2B}, \nbname{N2C}, \nbname{N2D}\\
-& & \nbname{N1A*}, \nbname{N1B*}, \nbname{N1C*}, \nbname{N1D*}\\
-\hline
-3 & \nbname{N3D} & \nbname{N3A}, \nbname{N3B}, \nbname{N3C}, \nbname{N3D}\\
-\hline
-\end{tabular}\]
-\vspace{\baselineskip}
-
-Die mit * bezeichneten Eintr"age werden als nicht ma"sgeblich
-angesehen, da sie von anderen Master Browsern erhalten wurden. F"ur
-den Client macht dies jedoch keinen Unterschied. Nur der LMB darf
-diese Eintr"age selbstverst"andlich beim n"achsten Abgleich nicht an
-den DMB als seine eigenen zur"uckmelden.
-
-Zu diesem Zeitpunkt werden Benutzer in den Subnetzen 1 und 2, die die
-Netzwerkumgebung ansehen, die Server in beiden Subnetzen sehen,
-Benutzer im Subnetz 3 sehen immer noch nur die Server in ihrem eigenen
-Subnetz.
-
-Der lokale Master Browser im Subnetz 3 (\nbname{N3D}) macht nun exakt
-das gleiche wie \nbname{N2B}. Wenn er die Browse Listen mit dem Domain
-Master Browser (\nbname{N1B}) abgeglichen hat, bekommt er sowohl die
-Server in Subnetz 1, als auch die im Subnetz 2. Nachdem sich
-\nbname{N3D} mit \nbname{N1C} synchronisiert hat und umgekehrt, sehen
-die Browse Listen folgenderma"sen aus:
-
-\vspace{\baselineskip}
-\[\begin{tabular}{|c|c|l|}
-\hline
-Netz & LMB & Liste \\ \hline \hline
-1 & \nbname{N1C} & \nbname{N1A}, \nbname{N1B}, \nbname{N1C}, \nbname{N1D}\\
- & & \nbname{N2A*}, \nbname{N2B*}, \nbname{N2C*}, \nbname{N2D*}\\
- & & \nbname{N3A*}, \nbname{N3B*}, \nbname{N3C*}, \nbname{N3D*}\\
-\hline
-2 & \nbname{N2B} & \nbname{N2A}, \nbname{N2B}, \nbname{N2C}, \nbname{N2D}\\
- & & \nbname{N1A*}, \nbname{N1B*}, \nbname{N1C*}, \nbname{N1D*}\\
-\hline
-3 & \nbname{N3D} & \nbname{N3A}, \nbname{N3B}, \nbname{N3C}, \nbname{N3D}\\
- & & \nbname{N1A*}, \nbname{N1B*}, \nbname{N1C*}, \nbname{N1D*}\\
- & & \nbname{N2A*}, \nbname{N2B*}, \nbname{N2C*}, \nbname{N2D*}\\
-\hline
-\end{tabular}\]
-\vspace{\baselineskip}
-
-Jetzt sehen Benutzer in den Subnetzen 1 und 3 alle Server in allen
-Subnetzen, Benutzer im Subnetz 2 sehen jedoch immer noch nur die
-Server von Subnetz 1 und 2, nicht jedoch die im Subnetz 3.
-
-Zum guten Schlu"s wird sich der lokale Master Browser im Subnetz 2
-(\nbname{N2B}) erneut mit dem Domain Master Browser abstimmen, und die
-fehlenden Servereintr"age bekommen. Endlich sehen die Browse Listen
-als stabiler Zustand so aus:
-
-\vspace{\baselineskip}
-\[\begin{tabular}{|c|c|l|}
-\hline
-Netz & LMB & Liste \\ \hline \hline
-1 & \nbname{N1C} & \nbname{N1A}, \nbname{N1B}, \nbname{N1C}, \nbname{N1D}\\
- & & \nbname{N2A*}, \nbname{N2B*}, \nbname{N2C*}, \nbname{N2D*}\\
- & & \nbname{N3A*}, \nbname{N3B*}, \nbname{N3C*}, \nbname{N3D*}\\
-\hline
-2 & \nbname{N2B} & \nbname{N2A}, \nbname{N2B}, \nbname{N2C}, \nbname{N2D}\\
- & & \nbname{N1A*}, \nbname{N1B*}, \nbname{N1C*}, \nbname{N1D*}\\
- & & \nbname{N3A*}, \nbname{N3B*}, \nbname{N3C*}, \nbname{N3D*}\\
-\hline
-3 & \nbname{N3D} & \nbname{N3A}, \nbname{N3B}, \nbname{N3C}, \nbname{N3D}\\
- & & \nbname{N1A*}, \nbname{N1B*}, \nbname{N1C*}, \nbname{N1D*}\\
- & & \nbname{N2A*}, \nbname{N2B*}, \nbname{N2C*}, \nbname{N2D*}\\
-\hline
-\end{tabular}\]
-\vspace{\baselineskip}
-
-Synchronisationen zwischen dem Domain Master Browser und den Local
-Master Browsern wird weiterhin auftreten, aber dies sollte den
-stabilen Zustand nur best"atigen.
-
-Wenn Router R1 oder R2 ausfallen, wird das folgende passieren:
-
-\begin{enumerate}
-\item Namen der Computer auf beiden Seiten der nicht mehr erreichbaren
-Subnetze werden f"ur 36 Minuten weiter in den Browse Listen gehalten,
-so da"s sie in der Netzwerkumgebung weiterhin erscheinen.
-
-\item Versuche, Verbindungen zu diesen Rechnern aufzubauen, werden
-scheitern, aber die Namen werden nicht von den Browse Listen entfernt
-werden.
-
-\item Wenn ein Subnetz vom WINS-Server getrennt wird, wird es nur noch
-auf die lokalen Server zugreifen k"onnen, deren Namen mit lokaler
-Broadcast NetBIOS-Namensaufl"osung aufgel"ost werden k"onnen. Das ist
-vergleichbar mit der Situation, keinen Zugriff auf einen DNS Server
-mehr zu haben.
-\end{enumerate}
-
-\subsection{Browsing mit vielen Arbeitsgruppen}
-
-Wenn man in der Netzwerkumgebung auf das Microsoft Windows Netzwerk
-klickt, bekommt man eine Liste s"amtlicher Arbeitsgruppen im Netz
-angezeigt. Diese Liste der Arbeitsgruppen wird vom Local Master
-Browser vorgehalten. Wie bekommt er diese Liste?
-
-Jeder Local Master Browser reserviert f"ur sich einen speziellen
-Gruppennamen, der folgenderma"sen dargestellt wird:
-\nbname{..\_\_MSBROWSE\_\_.<01>}. Die Punkte stehen dabei f"ur die
-Ascii-Werte eins und zwei. Regelm"a"sig wird jeder Local Master
-Browser seine Existenz an diesen Gruppennamen senden. Alle anderen
-Local Master Browser im Netz sammeln diese Ank"undigungen, damit sie
-Clients die Liste der vorhandenen Arbeitsgruppen und Local Master
-Browser mitteilen k"onnen.
-
-Wenn Domain Master Browser ins Spiel kommen, wird das Bild etwas
-komplizierter. Samba hat Erweiterungen implementiert, mit denen das
-Browsing "uber Subnetzgrenzen stabiler gemacht werden soll. Samba
-fragt den WINS-Server regelm"a"sig nach allen Domain Master Browsern.
-Diese werden in zuf"alligen Abst"anden kontaktiert, um die Browse
-Listen mit ihnen abzugleichen. Dadurch kann es passieren, da"s
-Arbeitsgruppen, die nicht mehr existieren, weiterhin in der
-Netzwerkumgebung auftauchen und sich nicht l"oschen lassen. Samba
-kennt den Parameter \param{enhanced browsing = no}, mit dem sich
-dieses Verhalten abstellen l"a"st.
-
-\section{Virtuelle Sambaserver}
-\label{virtuelle-server}
-
-Manchmal kann es notwendig sein, mehr als einen Sambaserver
-gleichzeitig auf einem Rechner laufen zu lassen. Zur
-Serverkonsolidierung kann es notwendig sein, unter mehreren Namen in
-der Netzwerkumgebung zu erscheinen. Dies ist mit dem Parameter
-\param{netbios aliases} sehr einfach m"oglich. Wenn es n"otig ist, in
-mehr als einer Arbeitsgruppe aufzutauchen, dann scheitert dies
-Verfahren jedoch, da der Parameter \param{workgroup} nur einmal
-angegeben werden kann.
-
-Eine andere Konfiguration ist die Einbindung von virtuellen Servern in
-eine Hochverf"ugbarkeitsumgebung. Es kann w"unschenswert sein, zwei
-physikalisch vorhandene Server unabh"angig voneinander arbeiten und
-sich gegenseitig "uberwachen zu lassen. Jeder der beiden Server hat
-seinen eigenen Namen und seine eigenen Freigaben. Stellt ein Server
-fest, da"s sein Partner defekt ist, mu"s er dessen Aufgaben
-"ubernehmen. Dies ist am einfachsten m"oglich, wenn die Aufgaben des
-defekten Servers isoliert in einer eigenen Samba-Instanz wahrgenommen
-werden. Die Hochverf"ugbarkeitssoftware mu"s nur daf"ur sorgen, da"s
-die Platten "ubernommen werden und der ausgefallene Dienst auf dem
-noch lebenden Server gestartet wird. Es ist keine Neukonfiguration des
-bereits laufenden Servers notwendig.
-
-Hier soll ein Beispiel aufgebaut werden, mit dem Samba auf einem
-Rechner f"ur verschiedene Arbeitsgruppen Local Master Browser
-wird. Ist dieser Rechner ein Unixserver, der 24 Stunden durchl"auft,
-kann so mit sehr einfachen Mitteln eine recht stabile Netzwerkumgebung
-f"ur beliebig viele Arbeitsgruppen erreicht werden.
-
-Zun"achst wird ein isolierter Local Master Browser f"ur die
-Arbeitsgruppe \nbname{GOETTINGEN} installiert. Der Name dieses
-Rechners soll der Einfachheit halber \nbname{GOE} hei"sen. Die gesamte
-Konfiguration wird unter \dateistyle{/samba/goe} abgelegt, so da"s sie
-recht einfach duplizierbar ist. Die Datei
-\dateistyle{/samba/goe/smb.conf} hat folgenden Aufbau:
-
-\begin{verbatim}
-[global]
-workgroup = goettingen
-netbios name = goe
-
-interfaces = eth0:1
-bind interfaces only = yes
-
-encrypt passwords = yes
-smb passwd file = /samba/goe/smbpasswd
-
-log file = /samba/goe/var/log.smb
-lock directory = /samba/goe/locks
-
-os level = 100
-preferred master = yes
-\end{verbatim}
-\label{smbconf-goe}
-
-In dieser Konfigurationsdatei gibt es einige Einstellungen, die die
-Voreinstellungen vom Kompilieren "uberschreiben. Normalerweise finden
-sich die Logdateien unter Linux in \dateistyle{/var/log} oder bei
-selbstkompilierten Sambas in \dateistyle{/usr/local/samba/var}, hier
-sollen sie pro Server separat in einem eigenen Verzeichnis abgelegt
-werden.
-
-Die nicht offensichtlichen Einstellungen bedeuten:
-
-\begin{description}
-\item[bind interfaces only:] Normalerweise nimmt der \prog{smbd} auf
- jeder im System konfigurierten IP-Adresse Verbindungen entgegen. Den
- Vorgang, mit dem der \prog{smbd} dies dem Kernel mitteilt, nennt
- sich "`An eine Adresse binden"'. Um auf jeder Adresse Verbindungen
- entgegen zu nehmen, bindet Samba an die spezielle Adresse 0. Jede
- konfigurierte IP-Adresse kann nur von einem einzigen Proze"s
- gebunden werden. Versucht ein \prog{smbd}, eine bereits verwendete
- Adresse zu binden, wird dies mit der Fehlermeldung \textbf{Address
- already in use} verweigert. Mit \prog{bind interfaces only = yes}
- wird der \prog{smbd} nur die im Parameter \prog{interfaces}
- angegebenen Adressen beziehungsweise Interfaces verwenden.
-
- Der Unterschied wird im Vergleich zweier Ausgaben des Programms
- \prog{netstat -nat} (hier unter Linux) deutlich. Zun"achst der
- relevante Teil \emph{ohne} \param{bind interfaces only = yes}:
-
-\begin{verbatim}
-vlendec@server:~ > netstat -natu
-Active Internet connections (servers and established)
-Proto Recv-Q Send-Q Local Address Foreign Address State
-
-tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN
-
-vlendec@server:~/ >
-\end{verbatim}
-
- Im Vergleich dazu die Ausgabe des gleichen Programmaufrufs
- \emph{mit} \param{bind interfaces only = yes}:
-
-\begin{verbatim}
-vlendec@server:~ > netstat -natu
-Active Internet connections (servers and established)
-Proto Recv-Q Send-Q Local Address Foreign Address State
-
-tcp 0 0 192.168.42.1:139 0.0.0.0:* LISTEN
-
-vlendec@server:~/ >
-\end{verbatim}
-
- Mit \param{bind interfaces only = yes} wird ausschlie"slich an die
- im Parameter \param{interfaces} referenzierte IP-Adresse gebunden,
- so da"s sich mehrere \prog{smbd}s nicht st"oren.
-
-
-\item[log file:] Hier wird das Logfile nur f"ur den \prog{smbd}
- festgelegt. Es ist m"oglich, f"ur alle Samba-Instanzen ein
- gemeinsames Logfile zu verwenden, das kann jedoch sehr schnell
- un"ubersichtlich werden. Der \prog{nmbd} ignoriert diese
- Einstellung. Sein Logfile mu"s "uber den Kommandozeilenparameter
- \prog{-l} festgelegt werden.
-\item[lock directory:] Die verschiedenen D"amonen von Samba
- kommunizieren "uber viele Datenbanken miteinander. Sie haben die
- Endung \dateistyle{.tdb}, und ihr Verzeichnis ist durch das
- \param{lock directory} festgelegt. Jede Instanz von Samba ben"otigt
- ihr eigenes \param{lock directory}, da die Datenbanken jeweils nur
- f"ur eine Samba-Instanz ausgelegt sind.
-\end{description}
-
-Diese Samba-Instanz kann "uber die folgende Startdatei kontrolliert werden:
-
-\begin{verbatim}
-#!/bin/sh
-DIR=/samba/goe
-case "$1" in
- start)
- echo "Starte Samba in $DIR"
- /usr/local/samba/bin/smbd -D -s $DIR/smb.conf
- /usr/local/samba/bin/nmbd -D -s $DIR/smb.conf -l $DIR/var
- ;;
- stop)
- echo "Fahre Samba in $DIR herunter"
- kill -TERM $(cat $DIR/locks/smbd.pid)
- kill -TERM $(cat $DIR/locks/nmbd.pid)
- ;;
- *)
- echo "Usage: $0 [start|stop]"
- ;;
-esac
-\end{verbatim}
-
-Diese Installation von Samba ist so weit isoliert, da"s eine zweite
-ungest"ort gleichzeitig laufen kann. Um jetzt eine zweite Installation
-zu bauen, m"ussen folgende Dinge angepa"st werden:
-
-\begin{description}
-\item[workgroup:] Die Arbeitsgruppe mu"s nur in dem aktuell
- verwendeten Beispiel der Local Master Browser ge"andert werden. Ein
- zweites Samba kann selbstverst"andlich auch in der gleichen
- Arbeitsgruppe sein.
-\item[netbios name:] Jede Instanz braucht zwingend ihren eigenen
- Namen.
-\item[interfaces:] Jede Instanz ben"otigt ihre eigene IP-Adresse.
-\item[smb passwd file:] Falls jede der Instanzen ihre eigene
- Benutzerdatenbank m"ochte, so mu"s die Datei \dateistyle{smbpasswd}
- separat angelegt werden. Die Unix-Benutzerdatenbank teilen jedoch
- alle Instanzen. Das hei"st, Benutzer \username{meier} auf der einen
- Instanz wird immer der gleiche Unixbenutzer wie Benutzer
- \username{meier} auf allen anderen Instanzen sein. Wenn man die
- gleiche Benutzerdatenbank ben"otigt, kann man auf die gleiche
- \dateistyle{smbpasswd} zugreifen. Empfehlenswerter ist es jedoch,
- eine der beiden Instanzen als Dom"anencontroller einzurichten und
- die andere als Dom"anenclient. Dann kann man v"ollig ohne
- Unterbrechung die gesamte Konfiguration komplett auf einen anderen
- Rechner migrieren, ohne da"s irgend etwas ge"andert werden m"u"ste.
- Insbesondere f"ur Hochverf"ugbarkeitsl"osungen ist dies die
- Konfiguration der Wahl.
-\item[log file:] Dies kann f"ur alle Instanzen gleich sein, meistens
- wird man jedoch separate logfiles f"ur die einzelnen \prog{smbd}s
- haben wollen.
-\item[lock directory:] Dieses mu"s zwingend f"ur jede Instanz separat
- angelegt werden.
-\end{description}
-
-Als letztes ist die Variable DIR in der Startdatei anzupassen, und
-mehreren Instanzen von Samba steht nichts mehr im Wege.
-
-\section{Browsing im WAN -- schneller}
-
-Das im Kapitel \ref{browsing-im-wan} beschriebene Verfahren, mit dem
-"uber Subnetzgrenzen hinweg die Netzwerkumgebung gepflegt wird, ist
-au"serordentlich tr"age. Jede "Anderung mu"s vom Local Master Browser
-an den Domain Master Browser "ubergeben werden und von dort aus wieder
-an die anderen Local Master Browser zur"uck. Bis diese "Anderung beim
-Client ankommt, kann es sehr lange dauern.
-
-Zudem ist bei einem komplexen Setup die Zahl der beteiligten Rechner
-sehr hoch. Als Beispiel sei ein Netz auf 4 Subnetze verteilt. Jeder
-Mitarbeiter ist einer von 5 verschiedenen Arbeitsgruppen zugeteilt.
-Nun ist es gefordert, da"s die Mitarbeiter sich im Netz frei bewegen
-k"onnen m"ussen, da"s sie also unabh"angig von ihrem Standort im Netz
-immer ihre eigene Arbeitsgruppe vorfinden m"ussen. Dazu mu"s
-selbstverst"andlich ein WINS-Server eingerichtet sein. Damit das
-Browsing funktioniert, mu"s es zudem f"ur jede Arbeitsgruppe einen
-Domain Master Browser geben, der sich mit den jeweiligen Local Master
-Browsern abgleicht. Die Zahl der Local Master Browser ist hier recht
-hoch. Da jeder Mitarbeiter in jedem Subnetz seine Arbeitsgruppe sehen
-soll, mu"s es in jedem Subnetz f"ur jede Arbeitsgruppe einen eigenen
-Local Master Browser geben. Das hei"st, es werden 20 Local Master
-Browser ben"otigt.
-
-Um das folgende Beispiel zu verstehen, sollte man sich
-vergegenw"artigen, von welchen Rechnern welche Information bezogen
-wird, wenn man im Explorer die Netzwerkumgebung durchklickt. Man kann
-die Vorg"ange sehr gut nachvollziehen, wenn man an einer frisch
-angemeldeten Sitzung mit \prog{nbtstat -s} die aktiven
-NetBIOS-Sitzungen nach jedem Schritt nachvollzieht. Direkt nach dem
-anmelden sollte keine NetBIOS-Sitzung aktiv sein, mit jedem Klick in
-der Netzwerkumgebung kommt gegebenenfalls eine Verbindung hinzu.
-
-\begin{description}
-\item[Netzwerkumgebung:] Hier wird die eigene Arbeitsgruppe
- dargestellt. Diese Information liefert der eigene Local Master
- Browser. Dieser wird "uber eine Broadcast-Anfrage auf den Namen der
- eigenen Arbeitsgruppe vom Typ \nbname{<\#1d>} herausgefunden.
-\item[Gesamtes Netzwerk:] Dieser Schritt liefert nur die lokal
- installierten Clientsysteme. Wenn ein Novell-Client installiert ist,
- wird hier das Novell-Netz neben dem Microsoft Windows-Netzwerk
- angeboten, ansonsten nur das Microsoft-Windows Netzwerk. Da dies
- rein lokal passiert, wird es keine zus"atzliche Verbindung geben.
-\item[Microsoft Windows Netzwerk:] Hier wird die Liste der
- verf"ugbaren Arbeitsgruppen angezeigt. Diese Information liefert
- ebenfalls der eigene Local Master Browser. Das kann man sich mit
- einem \prog{smbclient -L} \emph{ lmb} verdeutlichen. Neben der Liste der
- Freigaben und der Server liefert der LMB eine Liste der
- Arbeitsgruppen, die er kennt. Zus"atzlich gibt er noch den jeweils
- zust"andigen Local Master Browser heraus.
-\item[Arbeitsgruppe:] Diese Information liefert der jeweilige Local
- Master Browser. Der eigene Local Master Browser hat im letzten
- Schritt dessen Namen herausgegeben. Dessen IP-Adresse findet der
- Client durch eine normale NetBIOS-Namensanfrage heraus.
-\item[Freigabeliste:] Ein Rechner ist f"ur seine Freigaben selbst
- verantwortlich, nur der Rechner selbst kann die Liste der von ihm
- freigegebenen Verzeichnisse herausgeben.
-\end{description}
-
-Gibt ein Rechner Informationen der genannten Art heraus, dann
-geschieht dies "uber eine vollst"andig aufgebaute SMB-Sitzung, die auf
-einer NetBIOS-Sitzung aufbaut. Kapitel \ref{smb-sitzungen} beschreibt
-dies im Detail. Wie auf Seite \pageref{protokolle-und-ports}
-dargestellt, nutzt der NetBIOS-Sitzungsdienst TCP "uber Port 139.
-
-\subsection{Trennung von \prog{nmbd} und \prog{smbd}}
-
-Die folgende Situation l"a"st sich erheblich einfacher und stabiler
-l"osen als mit einem Domain Master Browser. Das Beispielnetz besteht
-aus zwei Filialen einer Firma in G"ottinen und Heidelberg. F"ur das
-sp"ater vollst"andig aufgebaute Beispiel seien die beiden Netze
-192.168.1.0/24 in G"ottingen und 192.168.2.0/24 in Heidelberg
-vergeben.
-
-In jeder Filiale gibt es eine Arbeitsgruppe, also die Gruppen
-\nbname{GOETTINGEN} und \nbname{HEIDELBERG}. In G"ottingen stehen nur
-Rechner der Arbeitsgruppe \nbname{GOETTINGEN}, in Heidelberg nur
-Rechner der Arbeitsgruppen \nbname{HEIDELBERG}. Nun soll auf beiden
-Seiten jeweils die eigene und die entfernte Arbeitsgruppe sichtbar
-sein, um sich im Netz mit dem Explorer frei bewegen zu k"onnen. Dazu
-mu"s es sowohl in G"ottingen als auch in Heidelberg jeweils einen
-Local Master Browser f"ur \nbname{GOETTINGEN} und \nbname{HEIDELBERG}
-geben. Es gibt im Beispiel vier Local Master Browser, die hier auch
-bereits mit IP-Adressen versehen wurden:
-
-\vspace{\baselineskip}
-\begin{center}
-\begin{tabular}{|l|l|l|}\hline
-&\nbname{GOETTINGEN}&\nbname{HEIDELBERG}\\
-\hline
-Ort: G"ottingen & \nbname{GOE}, 192.168.1.1 & \nbname{GOEHD}, 192.168.1.2 \\
-Ort: Heidelberg & \nbname{HDGOE}, 192.168.2.2 & \nbname{HD}, 192.168.2.1 \\
-\hline
-\end{tabular}
-\end{center}
-\vspace{\baselineskip}
-
-%\begin{tabular}{|L|L|L|}\hline
-% \LCC
-% \tabulargray&\tabulargray&\tabulargray\\
-% &\tabularheader{\nbname{GOETTINGEN}}&\tabularheader{\nbname{HEIDELBERG}}\\
-% \hline
-% \ECC
-% &&\topseparation
-% Ort: G"ottingen & \nbname{GOE} & \nbname{GOEHD} \\
-% Ort: Heidelberg & \nbname{HDGOE} & \nbname{HD}
-% \bottomseparationline
-%\end{tabular}
-
-Die Idee f"ur die Konfiguration ist nun, die G"ottinger Anfragen an
-den Local Master Browser f"ur \nbname{HEIDELBERG} (Rechner
-\nbname{GOEHD}) direkt nach Heidelberg an den Rechner \nbname{HD}
-umzuleiten. In G"ottingen mu"s nur ein \prog{nmbd} behaupten, er sei
-Local Master Browser f"ur die Arbeitsgruppe \nbname{HEIDELBERG}. Dies
-tut er, indem er auf UDP Port 137 die NetBIOS-Namensanfragen f"ur
-\nbname{HEIDELBERG\#1D} beantwortet. Der TCP-Port 139 auf dem Rechner
-\nbname{GOEHD} in G"ottingen wird dann an den echten Local Master
-Browser \nbname{HD} weitergeleitet.
-
-Das Weiterleiten von TCP Port 139 auf dem Rechner \nbname{GOEHD} an
-Port 139 des Rechners \nbname{HD} kann unterschiedlich geschehen.
-
-\setlength{\unitlength}{4144sp}%
-%
-\begingroup\makeatletter\ifx\SetFigFont\undefined%
-\gdef\SetFigFont#1#2#3#4#5{%
- \reset@font\fontsize{#1}{#2pt}%
- \fontfamily{#3}\fontseries{#4}\fontshape{#5}%
- \selectfont}%
-\fi\endgroup%
-\begin{picture}(5019,4611)(1789,-4483)
-\thinlines
-{\color[rgb]{0,0,0}\put(1936,-1051){\framebox(945,405){}}}%
-{\color[rgb]{0,0,0}\put(2386,-646){\line( 0, 1){405}}}%
-{\color[rgb]{0,0,0}\put(3286,-1051){\framebox(945,405){}}}%
-{\color[rgb]{0,0,0}\put(3736,-646){\line( 0, 1){405}}}%
-{\color[rgb]{0,0,0}\put(4861,-1051){\framebox(945,405){}}}%
-{\color[rgb]{0,0,0}\put(5311,-646){\line( 0, 1){405}}}%
-{\color[rgb]{0,0,0}\put(4861,-3166){\framebox(945,405){}}}%
-{\color[rgb]{0,0,0}\put(5311,-2761){\line( 0, 1){405}}}%
-{\color[rgb]{0,0,0}\put(3826,-1276){\framebox(405,225){}}}%
-\put(3916,-1231){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}139}%
-}}}
-{\color[rgb]{0,0,0}\put(4771,-4471){\framebox(405,225){}}}%
-\put(4861,-4426){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}139}%
-}}}
-{\color[rgb]{0,0,0}\put(4231,-4246){\framebox(945,405){}}}%
-{\color[rgb]{0,0,0}\put(4681,-3841){\line( 0, 1){405}}}%
-{\color[rgb]{0,0,0}\put(5401,-4246){\framebox(945,405){}}}%
-{\color[rgb]{0,0,0}\put(5851,-3841){\line( 0, 1){405}}}%
-{\color[rgb]{0,0,0}\put(1801,-241){\line( 1, 0){4050}}}%
-{\color[rgb]{0,0,0}\put(5311,-2671){\line( 0, 1){1620}}}%
-{\color[rgb]{0,0,0}\put(5311,-3166){\line( 0,-1){270}}}%
-{\color[rgb]{0,0,0}\put(4231,-1141){\line( 3, 1){945}}\put(5176,-826){\line( 0,-1){2205}}
-\put(5176,-3031){\line(-1,-5){242.308}}}%
-{\color[rgb]{0,0,0}\put(3691,-3436){\line( 1, 0){3105}}}%
-\put(2071,-871){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}GOE}%
-}}}
-\put(3466,-871){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}GOEHD}%
-}}}
-\put(4366,-4111){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}HD}%
-}}}
-\put(5581,-4111){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}HDGOE}%
-}}}
-\put(2386,-16){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}Goettingen}%
-}}}
-\put(5941,-3301){\makebox(0,0)[lb]{\smash{\SetFigFont{12}{14.4}{\rmdefault}{\mddefault}{\updefault}{\color[rgb]{0,0,0}Heidelberg}%
-}}}
-\end{picture}
-
-\subsection{Konfiguration}
-
-Als Beispiel soll hier die vollst"andige Konfiguration am Standort
-G"ottingen mit beiden Local Master Browsern beschrieben werden, die am
-Standort Heidelberg kann dann spiegelverkehrt aufgesetzt werden.
-
-Der Local Master Browser in G"ottingen hat die beiden IP-Adressen
-192.168.1.1 (Interface eth0) f"ur den LMB der Arbeitsgruppe
-\nbname{GOETTINGEN} und 192.168.1.2 (Interface eth0:1) f"ur die
-Arbeitsgruppe \nbname{HEIDELBERG}. Die Interface-Bezeichnungen sind
-hier Linux-spezifisch. Andere Unix-Versionen vergeben virtuelle
-IP-Adressen m"oglicherweise anders. Die beiden virtuellen Sambaserver
-werden mit ihren Konfigurationen in den Verzeichnissen
-\dateistyle{/samba/goe} und \dateistyle{/samba/goehd} abgelegt.
-
-Es m"ussen nun zwei Dateien \dateistyle{smb.conf} erstellt werden,
-f"ur jeden Local Master Browser eine. F"ur die Arbeitsgruppe
-\nbname{GOETTINGEN} kann direkt die \dateistyle{smb.conf} von Seite
-\pageref{smbconf-goe} verwendet werden. Nur die Zeile \prog{interfaces
- =} mu"s angepa"st werden, so da"s sich die folgende
-\dateistyle{/samba/goe/smb.conf} ergibt:
-
-\begin{verbatim}
-; /samba/goe/smb.conf
-[global]
-workgroup = goettingen
-netbios name = goe
-interfaces = eth0
-bind interfaces only = yes
-encrypt passwords = yes
-smb passwd file = /samba/goe/smbpasswd
-log file = /samba/goe/var/log.smb
-lock directory = /samba/goe/locks
-os level = 100
-preferred master = yes
-\end{verbatim}
-
-Entsprechend ist die Datei \dateistyle{/samba/goehd/smb.conf}
-aufgebaut. Um der K"urze willen sind s"amtliche Einstellungen, die
-ausschlie"slich den \prog{smbd} betreffen, weggelassen worden. In
-G"ottingen soll f"ur die Arbeitsgruppe \nbname{HEIDELBERG} kein
-\prog{smbd} gestartet werden, daf"ur ist der \prog{smbd} auf dem
-Rechner \nbname{HDGOE} in Heidelberg zust"andig.
-
-\begin{verbatim}
-; /samba/goehd/smb.conf
-[global]
-workgroup = heidelberg
-netbios name = goehd
-interfaces = eth0:1
-bind interfaces only = yes
-lock directory = /samba/goe/locks
-os level = 100
-preferred master = yes
-\end{verbatim}
-
-Die Startdatei f"ur die Local Master Browser kann folgenderma"sen
-aussehen. Es werden drei Prozesse gestartet, ein vollst"andiges Samba
-f"ur den Rechner \nbname{GOE} und nur den \prog{nmbd} f"ur
-\prog{GOEHD}.
-
-\begin{verbatim}
-#!/bin/sh
-SMBD=/usr/local/samba/bin/smbd
-NMBD=/usr/local/samba/bin/nmbd
-case "$1" in
- start)
- echo "Starte Samba"
- $SMBD -D -s /samba/goe/smb.conf
- $NMBD -D -s /samba/goe/smb.conf
- $NNBD -D -s /samba/goehd/smb.conf -l /samba/goehd/var
- ;;
- stop)
- echo "Fahre Samba herunter"
- kill -TERM $(cat /samba/goe/locks/smbd.pid)
- kill -TERM $(cat /samba/goe/locks/nmbd.pid)
- kill -TERM $(cat /samba/goehd/locks/nmbd.pid)
- ;;
- *)
- echo "Usage: $0 [start|stop]"
- ;;
-esac
-\end{verbatim}
-
-Die Weiterleitung des TCP-Ports 139 von der IP-Adresse 192.168.1.2 in
-G"ottingen an die Adresse 192.168.2.1 Port 139 in Heidelberg kann mit
-unterschiedlichen Methoden geschehen. Die einfachste Methode mit dem
-Programm \prog{netcat} und dem \prog{inetd} funktioniert hier leider
-nicht, da dem \prog{inetd} leider nicht gesagt werden kann, da"s er
-bitte nur an ein spezielles Interfaces binden soll. G"abe es f"ur den
-Rechner \nbname{GOEHD} eine eigene Maschine, k"onnte man den
-\prog{inetd} jedoch problemlos verwenden. Die Zeile
-
-\begin{verbatim}
-netbios-ssn stream tcp nowait nobody /usr/bin/netcat netcat 192.168.2.1 139
-\end{verbatim}
-
-in der \dateistyle{/etc/inetd.conf} zusammen mit
-
-\begin{verbatim}
-netbios-ssn 139/tcp
-\end{verbatim}
-
-in der \prog{/etc/services} leiten eingehende TCP-Verbindungen auf
-Port 139 zum Port 139 des Rechners 192.168.2.1 weiter.
-
-Die zweite M"oglichkeit der Portweiterleitung bietet das Programm
-\prog{rinetd}. Der \prog{rinetd} ist f"ur genau diesen Zweck
-geschaffen worden und ist bei SuSE-Linux als fertiges Paket
-mitgeliefert. Im Gegensatz zum \prog{inetd} kann der \prog{rinetd} an
-spezielle Interfaces binden, so da"s sein Einsatz auch mit virtuellen
-Sambaservern m"oglich ist. Der \prog{rinetd} wird "uber die Datei
-\prog{/etc/rinetd.conf} konfiguriert. Die notwendige Datei besteht nur
-aus einer einzigen Zeile:
-
-\begin{verbatim}
-192.168.1.2 139 192.168.2.1
-\end{verbatim}
-
-Alternative drei besteht beim Einsatz des \prog{xinetd}, der den
-\prog{inetd} vollst"andig ersetzt und erheblich leistungsf"ahiger ist.
-Der \prog{xinetd} beherrscht einerseits das Binden an einzelne
-Interfaces, andererseits kennt er bereits die M"oglichkeit,
-TCP-Verbindungen weiterzuleiten. Der Abschnitt in der
-Konfigurationsdatei \dateistyle{/etc/xinetd.conf} k"onnte
-beispielsweise so aussehen\todo{CHECK}:
-
-\begin{verbatim}
-service goehd
-{
- socket_type = stream
- protocol = tcp
- wait = no
- port = 139
- redirect = 192.168.2.1 139
- bind = 192.168.1.2
-}
-\end{verbatim}
-
-F"ur welche der Alternativen man sich entscheidet, h"angt von der
-Umgebung ab. Setzt man virtuelle Server ein, f"allt der \prog{inetd}
-aus. Die Entscheidung zwischen \prog{rinetd} und \prog{xinetd} wird
-vermutlich danach fallen, ob der eventuell vorhandene \prog{inetd}
-abgel"ost werden soll. Die Kombination von \prog{inetd} und virtuellen
-Servern l"a"st nur die Wahl, den \prog{rinetd} einzusetzen. Wird der
-\prog{xinetd} bereits verwendet, sollte man ihn selbstverst"andlich
-auch f"ur die Portweiterleitung nutzen.
-
-\section{Einfache Freigaben}
-
-Warum setzt man Samba "uberhaupt ein? Einer der wichtigsten Dienste
-von Samba ist, Festplattenbereiche f"ur Clients zur Verf"ugung zu
-stellen. Damit ein Client Plattenplatz eines Servers erreichen kann,
-mu"s man eine sogenannte \emph{Freigabe} erstellen.
-
-Beispielsweise m"ochte man den Inhalt des Unix-CDROM-Laufwerks an
-Clients exportieren. Das Laufwerk sei unter \dateistyle{/cdrom}
-eingebunden, und soll f"ur Clients unter
-\nbname{\textbackslash{}\textbackslash{}servername\textbackslash{}cd}
-erreichbar sein. Dazu mu"s man in der \dateistyle{smb.conf} einen
-neuen Abschnitt einleiten, der den Namen \param{[cd]} tr"agt. Damit
-wird eine Freigabe eingeleitet, die im Netz unter dem Namen
-\nbname{cd} zu sehen ist.
-
-Das folgende Beispiel gibt genau dieses Verzeichnis frei. Dabei ist
-zus"atzlich die Zugriffskontrolle so angelegt, da"s wirklich
-\textbf{jeder} darauf zugreifen kann. Wenn Sie irgend eine Art von
-sch"utzenswerten Daten auf der exportierten CD haben, sollten Sie sich
-auf jeden Fall das Kapitel \ref{freigaberechte} zu Rechten an
-Freigaben und das Kapitel \ref{smb-sitzungen} ansehen, um die Freigabe
-sinnvoll sch"utzen zu k"onnen.
-
-\begin{verbatim}
-[global]
-workgroup = arbeitsgruppe
-interfaces = <IP-Adresse>/<Netzmaske>
-security = share
-encrypt passwords = yes
-
-[cd]
-path = /cdrom
-guest ok = yes
-\end{verbatim}
-
-
-\section{SMB-Sitzungen}
-\label{smb-sitzungen}
-
-Sobald ein Rechner Freigaben im Netz zur Verf"ugung stellt, k"onnen
-Clients darauf zugreifen. Bevor ein Client tats"achlich auf eine
-Freigabe zugreifen kann, werden sechs Schritte durchlaufen. Diese
-sechs Schritte im Detail zu verstehen, ist f"ur die Konfiguration
-einfacher Server nicht wirklich notwendig. Sobald es aber darum geht,
-Fehlerdiagnose zu betreiben, ist das Wissen um die genaue
-Fehlerursache sehr wertvoll. Die genaue Stelle, an der eine
-Freigabeverbindung scheitert, kann bei der Fehlersuche gute Hinweise
-geben.
-
-\subsection{NetBIOS-Namensaufl"osung}
-
-Ein Benutzer an einem Client gibt den Namen des Servers mit
-unterschiedlichen Methoden an. Ein typischer Weg geht "uber die
-Netzwerkumgebung "uber einen Doppelklick auf den Rechner. Das
-Erscheinen in der Netzwerkumgebung ist jedoch nicht notwendig, da ein
-Client auch auf der Kommandozeile "uber ein
-
-\begin{verbatim}
-net use h: \\server\freigabe
-\end{verbatim}
-
-\noindent das Laufwerk H verbinden kann. Genauso kann im Explorer durch den
-Men"upunkt "`Netzwerklaufwerk verbinden"' eine direkte Verbindung
-ge"offnet werden. Ein weiterer Weg ist "uber Men"upunkt "`Ausf"uhren"'
-im Startmen"u von Windows 95. Wenn man dort \verb|\\server| angibt,
-bekommt man die Liste der Freigaben des Servers angezeigt,
-unabh"angig, in welcher Arbeitsgruppe sich der Server befindet.
-
-\subsection{TCP-Verbindung}
-
-Wenn die IP-Adresse klar ist, wird eine TCP-Verbindung zu Port 139 des
-Servers aufgebaut. Um vorhandene TCP-Verbindungen anzuzeigen, gibt es
-sowohl auf Unix- als auch auf Windowsrechnern das Werkzeug
-\prog{netstat}.
-
-Ob die TCP-Verbindung klappt, pr"uft man am besten mit
-
-\begin{verbatim}
-telnet <ip> 139
-\end{verbatim}
-
-\noindent und einem Test mit \prog{netstat}, ob die Verbindung
-im Zustand \prog{ESTABLISHED} ist.
-
-\subsection{NetBIOS-Sitzung}
-
-Auf einem Serverrechner arbeiten unter Umst"anden mehrere
-Applikationen, die Namen f"ur sich reserviert haben. Diese sind alle
-unter der IP-Adresse des Rechners und dem TCP-Protokoll auf Port 139
-erreichbar. Anhand des TCP-Verbindungsaufbaus ist nicht klar, welche
-Serverapplikation angesprochen werden soll. Die Unterscheidung wird
-durch den Servernamen getroffen, der in der TCP-Verbindung als erstes
-"ubertragen wird.
-
-Da"s der Servername "ubertragen wird, kann man ganz einfach mit Hilfe
-des Programms \prog{smbclient} sehen. Man versucht, sich die Liste der
-Freigaben eines realen Windowsrechners geben zu lassen, indem man
-folgendes aufruft:
-
-\verb|smbclient -L smallwin|
-
-Damit wird zun"achst eine NetBIOS-Namensanfrage ausgel"ost, und dann
-eine Verbindung zum entsprechenden Server ausgel"ost. \prog{smbclient}
-hat jedoch die M"oglichkeit, einen Server unter einem anderen Namen
-anzusprechen, indem man
-
-\verb|smbclient -L test -I ip-adresse|
-
-\noindent
-eingibt. \prog{smbclient} wird zun"achst versuchen, eine Verbindung
-zum NetBIOS-Namen \texttt{test} aufzubauen, und zwar ohne da"s eine
-NetBIOS-Namensanfrage ausgel"ost wird. Stattdessen wird die angegebene
-IP-Adresse auf Port 139 direkt angesprochen, und der Name
-\texttt{test} als Servername angegeben. Windows merkt, da"s das nicht
-stimmen kann und verweigert den Verbindungsaufbau mit einer
-Fehlermeldung. Erst im zweiten Versuch wird es \prog{smbclient}
-gelingen, eine Verbindung aufzubauen, da diese Verbindung zum
-allgemeinen Namen \texttt{*smbserver}\footnote{Das SMB-Protokoll wurde
- als Antwort auf das WebNFS von SUN in Common Internet File System
- umbenannt. Im Gegensatz zur Firma SUN, die tats"achlich das
- NFS-Protokoll verbessert hat, hat sich Microsoft die Arbeit
- einfacher gemacht. Der Name \texttt{*SMBSERVER} ist der einzige
- echte Unterschied, der CIFS von seinem Urvater SMB unterscheidet.
- Mit Windows 2000 werden diese NetBIOS-Namen beim Verbindungsaufbau
- gar komplett unterschlagen. Daf"ur war es aber notwendig, einen
- weiteren Port zu reservieren, und zwar Port 445.} aufgebaut wird.
-
-Auch der Clientname wird in der Verbindung "ubergeben. Dies testet man
-am besten mit
-
-\verb|smbclient //win/c\$ -n blafasel|
-
-\noindent und schaut sich
-die Verbindungstabelle auf der Windowsmaschine mit \verb|nbtstat -s|
-an.
-
-Mit dem "ubergebenen Servernamen kann man sehr nette Tricks anstellen.
-Man stelle sich vor, da"s einige Freigaben nur f"ur bestimmte
-Clientrechner sichtbar sein sollen. Dies ist mit Bordmitteln von Samba
-so nicht m"oglich. Man kann zwar mit dem Parameter \param{browseable}
-festlegen, ob bestimmte Freigaben in der Netzwerkumgebung erscheinen.
-Dieser Parameter hat aber zwei Nachteile. Erstens sind die Freigaben nur
-unsichtbar geworden, darauf zugreifen kann man immer noch. Zweitens kann man
-Freigaben nur f"ur alle Rechner verstecken oder freigeben.
-
-Samba bietet die Option, unter zwei oder mehreren verschiedenen Namen
-in der Netzwerkumgebung zu erscheinen. Mit dem Parameter
-\param{netbios name} gibt man einen Namen f"ur den Server an.
-Zus"atzliche Namen kann man mit \param{netbios aliases} vergeben. Mit
-
-\begin{verbatim}
-netbios name = fichte
-netbios aliases = birke eiche kiefer buche
-\end{verbatim}
-
-\noindent
-handelt man sich einen ganzen Wald in der Netzwerkumgebung ein. Klickt
-man auf die einzelnen Server, sieht man "uberall die gleichen
-Freigaben und Zugriffsrechte. Nun kann man f"ur jeden dieser
-virtuellen Rechner eine eigene Konfigurationsdatei anlegen.
-Beispielsweise kann man diese Dateien \dateistyle{/etc/smb.conf.birke},
-\dateistyle{/etc/smb.conf.eiche} und so weiter nennen. Die Datei
-\dateistyle{/etc/smb.conf} ist f"ur den Rechner \nbname{fichte} zust"andig
-und enth"alt neben den Einstellungen f"ur \nbname{fichte} den
-Parameter
-
-\param{config file = /etc/smb.conf.\%L}
-
-\noindent Dabei steht
-\param{\%L} f"ur den Servernamen, unter dem Samba angesprochen wird.
-Wenn es eine passende Datei gibt, dann bewirkt der Parameter
-\param{config file}, da"s die komplette Konfiguration neu eingelesen
-wird. Existiert keine passende Datei, so wird der Parameter einfach
-ignoriert. Um nun den Zugriff nur f"ur einzelne Clients zu erlauben,
-kann bei den einzelnen virtuellen Servern mit den Parametern
-\param{hosts allow} und \param{hosts deny} der Zugriff geregelt
-werden.
-
-\subsection{Negotiate Protocol}
-
-Die NetBIOS-Sitzung ist nun aufgebaut, und es k"onnen Daten
-"ubermittelt werden. Innerhalb dieser NetBIOS-Sitzung wird eine
-SMB-Sitzung schrittweise aufgebaut. SMB ist ein Protokoll, bei dem im
-Prinzip der Client jede Aktion durch eine Anfrage anst"o"st, und der
-Server diese beantwortet\footnote{Im Prinzip deshalb, da mit Oplocks
- auch der Server von sich aus aktiv werden kann.}.
-
-SMB (Server Message Block) ist ein gewachsenes Protokoll. Es ist mit
-den F"ahigkeiten der Betriebssysteme gewachsen, die damit arbeiten.
-Zun"achst ist es entstanden, um die Dateisystemaufrufe der MS-DOS
-Systemschnittstelle INT 0x21 auf das Netz zu verlagern. Mit einer
-gewissen Weitsicht hat man jedoch vorausgesehen, da"s die Entwicklung
-nicht bei MS-DOS stehen bleiben w"urde, sondern sich die
-Dateisystemaufrufe "andern w"urden. Man hat im Protokoll also eine
-M"oglichkeit vorgesehen, mit der unterschiedliche Protokollvarianten
-ausgehandelt werden k"onnen. Die unterschiedlichen Protokolle
-orientieren sich immer an den F"ahigkeiten der jeweiligen
-Betriebssysteme. Beispielsweise wurde mit dem LAN Manager, der eine
-Benutzerverwaltung besitzt, das Konzept des Benutzers im Protokoll
-aufgenommen. OS/2 hat ein recht weitgehendes Konzept der
-Druckerverwaltung, das entsprechend mit Protokollerweiterungen bedacht
-wurde. Sogar f"ur XENIX gibt es einen eigenen Protokolldialekt, der
-das Unix-Zugriffsrechtekonzept im SMB-Protokoll abbildet. Diese
-Protokollvariante beherrscht nur leider kein moderner Client. Mit
-Ausnahme des ausgestorbenen XENIX-Dialektes lassen sich die Protokolle
-gut in eine Hierarchie einordnen. Sp"atere Protokolle beherrschen alle
-Aspekte der vorherigen Varianten.
-
-Im Jahr 1996 wurde SMB in CIFS umbenannt. CIFS ist die Abk"urzung f"ur
-Common Internet File System. Warum diese neue Bezeichnung, und warum
-zu diesem Zeitpunkt? Kurz vorher hatte Sun Microsystems sein Protokoll
-NFS angepa"st, um "uber Weitverkehrsstrecken besser benutzbar zu sein.
-NFS setzt voraus, da"s zwischen Client und Server nur sehr kurze
-Pingzeiten vorliegen. F"ur jeden Dateizugriff sind mehrere Anfragen
-notwendig. Auch wenn jede Anfrage nur sehr kurz ist und wenig
-Bandbreite verbraucht, mu"s doch jedesmal die Antwort des Servers
-abgewartet werden. Hohe Pingzeiten belasten so die Leistung des NFS
-erheblich. Sun hat das NFS so ver"andert, da"s die Anzahl der Anfragen
-erheblich reduziert wurde. Das Ergebnis nannten sie WebNFS und haben
-um dieses "`neue"' Protokoll eine gro"se Marketinginitiative
-gestartet. Kurz vorher hatte Microsoft die Kr"ote namens Java von SUN
-schlucken m"ussen und wollte sich nicht ein zweites Mal von SUN eine
-Technologie aufzwingen lassen. Daher hat man einfach das hauseigene
-Datei- und Druckprotokoll so umbenannt, da"s das Wort Internet im
-Namen vorkam. Im Gegensatz zu SUN hat sich Microsoft bis auf ein
-kleines Detail\footnote{Dies Detail hat nichts mit SMB, sondern mit
- NetBIOS zu tun. SMB-Server wollen im NetBIOS-Sitzungsaufbau mit
- ihrem eigenen NetBIOS-Namen angesprochen werden. Ein CIFS-Server im
- Internet ist aber nur unter seinem DNS-Namen oder seiner IP-Adresse
- bekannt. Der NetBIOS-Name ist normalerweise nicht publiziert. Daher
- lauschen alle CIFS-Server auf den eigentlich illegalen NetBIOS-Namen
- \nbname{*SMBSERVER}. Das ist der ganze Unterschied zwischen SMB und
- CIFS.} nicht die M"uhe gemacht, das Protokoll wirklich in Richtung
-Internet zu optimieren.
-
-Die erste Anfrage, die der Client an den Server schickt, ist ein
-\defin{Negotiate Protocol Request}. In dieser Anfrage schickt der
-Client an den Server eine Liste der Protokollvarianten, die er
-beherrscht. Der Server w"ahlt nun aus dieser Liste der Protokolle eins
-aus, und schickt eine entsprechende Antwort zur"uck. Die verschiedenen
-Protokolle bauen aufeinander auf. Daher kann man mit dem Parameter
-\param{protocol} das h"ochste Protokoll festlegen, mit dem Samba
-arbeiten soll.
-
-In der Antwort auf diese erste Anfrage werden zwei weitere
-Einstellungen verschickt, die Teile des weiteren Ablaufs festlegen.
-
-Der Server entscheidet, ob er die Zugriffssteuerung auf Benutzer- oder
-auf Freigabeebene regeln m"ochte. Damit wird festgelegt, zu welchem
-Zeitpunkt der Benutzer ein Pa"swort liefern mu"s. Entweder kann es
-beim direkt folgenden \defin{Session Setup} erfolgen, oder erst beim
-\defin{Tree Connect} danach.
-
-Der Parameter \param{security} legt fest, welche Art der
-Zugriffssteuerung gew"ahlt wurde. Mit \param{security = share} wird
-die Freigabeebene eingestellt, \param{security = user} legt die
-Clients auf die Benutzerebene fest.
-
-Sichtbar wird diese Unterscheidung in der Windowswelt nur bei Windows
-95 und Windows 98. Diese Betriebssysteme beherrschen zun"achst einmal
-nur die Zugriffssteuerung auf Freigabeebene, da sie nicht "uber eine
-Benutzerdatenbank verf"ugen. Es ist nicht m"oglich, einzelnen
-Benutzern den Zugriff auf Freigaben zu gew"ahren oder zu
-verweigern. Um trotzdem benutzerbasiert Zugriffssteuerung zu
-erm"oglichen, mu"s ein Server angegeben werden, der f"ur Windows die
-Benutzerdatenbank pflegt. Damit k"onnen Pa"sw"orter benutzerbasiert
-"uberpr"uft werden.
-
-Weiterhin gibt der Server dem Client vor, ob Klartextpa"sw"orter
-verwendet werden sollen, oder ob die Pa"sw"orter verschl"usselt
-werden. Wenn der Server festlegt, da"s verschl"usselte Pa"sw"orter
-verwendet werden, wird zus"atzlich die Herausforderung f"ur das
-\defin{Challenge Response} Verfahren mitgeschickt.
-
-Die Entscheidung "uber Klartextpa"sw"orter mu"s also getroffen werden,
-ohne da"s der Server den Benutzernamen, der sich anmelden will,
-kennt. Es ist also nicht m"oglich, f"ur einige Benutzer
-Klartextpa"sw"orter und f"ur andere Benutzer verschl"usselte
-Pa"sw"orter zu verwenden.
-
-\subsection{Session Setup}
-
-Nachdem die Protokollversion ausgehandelt ist, wird vom Client ein
-\defin{Session Setup} verschickt. In diesem Session Setup schickt der
-Client seinen Benutzernamen an den Server. Sofern dieser
-\param{security = user} verlangt hat, wird an dieser Stelle das
-Pa"swort mitgeschickt. Damit ist der Server in der Lage, die
-Identit"at des Benutzers festzustellen. Wenn \param{security = share}
-vereinbart wurde, dann ignoriert der Server ein hier eventuell
-mitgeschicktes Pa"swort.
-
-\subsection{Tree Connect}
-
-Als letztes legt der Client fest, welche Freigabe er ansprechen will.
-Der entsprechende Aufruf hei"st \defin{Tree Connect}. Sofern
-\param{security = share} vereinbart wurde, wird an dieser Stelle das
-Pa"swort "uberpr"uft. Der Benutzername kann in diesem Fall nicht zur
-Zugriffsregelung verwendet werden. Dieser wurde unter Umst"anden gar
-nicht "ubermittelt, da der Client den Session Setup komplett auslassen
-darf. Andererseits hat er bei einem durchgef"uhrten Session Setup kein
-Pa"swort angeben m"ussen, anhand dessen die Identit"at des Benutzers
-zweifelsfrei h"atte festgestellt werden k"onnen.
-
-\section{Rechte an Freigaben}
-\label{freigaberechte}
-
-Bei Windows NT kann man mit zwei unterschiedlichen Mechanismen Rechte
-vergeben. An einer Freigabe kann man "uber Schreib- und Lesezugriff
-entscheiden. Innerhalb des Dateisystems kann man detailiert Rechte
-vergeben.
-
-Ist bei Samba \param{security = user} gesetzt, so hat der Server die
-M"oglichkeit, anhand des angemeldeten Benutzers Zugriffsrechte zu
-vergeben oder zu verweigern. Wenn bei der Einstellung einer Freigabe
-keine Parameter f"ur die Zugriffsrechte gesetzt sind, hat jeder
-korrekt angemeldete Benutzer Leserecht. Man kann auch Gastbenutzern
-Leserecht geben, indem man \param{guest ok = yes} setzt.
-
-Mit den Optionen zur Rechtevergabe an Freigaben hat man die
-M"oglichkeit, einzelnen Benutzern und ganzen Unixgruppen Rechte zu
-geben oder zu nehmen. Die M"oglichkeiten sind hier deutlich weitergehend
-als die Semantik, die Unix mit den Rechtemasken f"ur den
-Dateibesitzer, die besitzende Gruppe und den Rest der Welt bereit
-stellt. Von den m"oglichen Anwendungen sollen hier drei h"aufig
-ben"otigte F"alle dargestellt werden:
-
-\begin{itemize}
-\item {\bf \emph{Alle} Benutzer haben gleichen Zugriff}
-
-\begin{verbatim}
-[projekt]
-path = /data/projekt
-\end{verbatim}
-
-Bei dieser Freigabe bekommen alle Benutzer, die sich mit Namen und
-Pa"swort am Server angemeldet haben, \emph{Leserecht} auf die
-Freigabe. Schreibrecht vergibt man, indem man den Parameter
-\param{writeable = yes} setzt:
-
-\begin{verbatim}
-[projekt]
- path = /data/projekt
- writeable = yes
-\end{verbatim}
-
-\item {\bf \emph{Einige} Benutzer haben gleichen Zugriff}
-
-Will man den Zugriff auf einige Benutzer einschr"anken, erstellt man
-eine Liste \param{valid users} auf:
-
-\begin{verbatim}
-[projekt]
-path = /data/projekt
-valid users = mueller, meier
-\end{verbatim}
-
-Zu dieser Freigabe haben die Benutzer mueller und meier
-Lesezugriff. Sollen diese Benutzer Schreibzugriff bekommen, so ist wie
-im vorangegangenen Beispiel der Parameter \param{writeable = yes} zu
-setzen:
-
-\begin{verbatim}
-[projekt]
-path = /data/projekt
-valid users = mueller, meier
-writeable = yes
-\end{verbatim}
-
-F"ur den Parameter \param{valid users} spielt der Benutzer root keine
-besondere Rolle. Das hei"st, da"s er auf die Freigabe \param{projekt}
-keinen Zugriff hat. Soll er Zugriff bekommen, mu"s man ihn wie jeden
-anderen Benutzer in die Liste \param{valid users} mit aufnehmen.
-
-Der Parameter \param{valid users} gibt die M"oglichkeit, ganze
-Unixgruppen in den Zugriff mit aufzunehmen. Um dies zu erreichen, mu"s
-man das at-Zeichen voranstellen:
-
-\begin{verbatim}
-[projekt]
-path = /data/projekt
-valid users = root, @users
-writeable = yes
-\end{verbatim}
-
-Mit dieser Einstellung haben alle Benutzer, die in der Unixgruppe
-users sind, Schreibzugriff auf die Freigabe. Zus"atzlich kann der
-Benutzer root schreiben.
-
-\item {\bf Einige Benutzer haben Leserecht, andere Schreibrecht}
-
-Will man differenziert Rechte vergeben, so mu"s man s"amtliche
-Benutzer, die "uberhaupt Zugriff auf die Freigabe bekommen sollen, in
-die Liste \param{valid users} aufnehmen, und mit \param{writeable =
-no} nur Leserechte vergeben. Die Benutzer, die "uber diese
-Standardeinstellung hinaus Schreibrecht bekommen sollen, m"ussen in
-die \param{write list} aufgenommen werden.
-
-\begin{verbatim}
-[projekt]
-path = /data/projekt
-valid users = @users, @admins
-write list = @admins
-\end{verbatim}
-
-Mit diesen Einstellungen haben die Benutzer der Gruppe users
-Leserecht, und die Benutzer der Gruppe admins haben Schreibrecht.
-
-\end{itemize}
-
-\section{Zugriffsrechte im Dateisystem}
-
-Unter Windows NT gibt es zwei M"oglichkeiten, Netzzugriff auf Dateien
-zu kontrollieren. "Uber eine Freigabe kann ein Lese- oder ein
-Schreibrecht vergeben werden. Ist das freigegebene Dateisystem mit
-NTFS formatiert, k"onnen durch Access Control Lists im Dateisystem
-Rechte vergeben werden. Damit mu"s ein Benutzer sowohl durch die
-Freigabe- als auch durch die Dateisystemrechte zu einer Operation
-berechtigt sein.
-
-Auch bei Samba auf Unix gibt es zwei Stellen, an denen Zugriff auf
-Dateien und Verzeichnisse geregelt ist. Die im Kapitel
-\ref{freigaberechte} beschriebenen Zugriffsrechte beziehen sich
-ausschlie"slich auf die von Samba selbst vergebenen Rechte. Diese von
-Samba vergebenen Rechte k"onnen die darunter liegenden Unixrechte
-nicht erweitern. Das hei"st, Samba kann f"ur bestimmte Freigaben
-Schreibrecht vergeben. Der Benutzer, der zugreift, kann aber nur dann
-wirklich in den freigegebenen Dateien und Verzeichnissen schreiben,
-wenn er dies unter Unix ebenfalls darf. Diese Einschr"ankung durch
-Unixrechte ist ein wichtiges Prinzip von Samba: Im Dateisystem
-implementiert Samba keine eigenen Zugriffskontrollen, sondern
-verl"a"st sich auf die Unixmechanismen.
-
-Samba k"onnte theoretisch eine eigene Datenbank von Zugriffsrechten
-f"uhren. In dieser Datenbank k"onnte die vollst"andige NT-Semantik von
-Access Control Lists abgelegt und implementiert werden. Zwei Gr"unde
-sprechen gegen diesen Ansatz:
-
-\begin{itemize}
-\item Wenn Samba tats"achlich Dateisystemrechte implementieren w"urde,
- w"aren die Entwickler daf"ur verantwortlich, da"s diese korrekt
- eingehalten werden. Zugriffsrechte auf Dateien werden vom
- Betriebssystem bereits hervorragend implementiert, warum sollte man
- sich also die zus"atzliche Komplexit"at einhandeln?\footnote{Unter
- Marketinggesichtspunkten kann es wichtig sein, vollst"andige
- NT-Kompatibilit"at zu implementieren, die Samba mit dem
- Unix-Rechtemodell bisher nicht bietet. Es existieren Patches, die
- eine eigene ACL-Datenbank implementieren. Diese sind jedoch leider
- momentan noch nicht frei verf"ugbar. Dies ist mit der GPL durchaus
- m"oglich, da sie niemandem zug"anglich gemacht wurden. Es wird
- jedoch in der Zukunft eine ver"offentlichte Version geben.}
-\item Sobald Samba eine eigene ACL-Datenbank implementiert, gilt diese
- ausschlie"slich f"ur den Dateizugriff via SMB. Es ist nicht
- m"oglich, Samba-ACL synchron mit dem Unix-Dateisystem zu halten,
- wenn auch noch Zugriff von Unixprozessen aus erlaubt wird. Wenn sich
- Verzeichnisb"aume "andern, ohne da"s Samba involviert ist, wie soll
- Samba dann die ACLs korrekt anpassen?
-\end{itemize}
-
-Eng verwoben mit den Unix-Zugriffsrechten auf Dateien ist in der
-Implementation von Samba die Behandlung der DOS-Attribute. Diese
-Attribute sind Eigenschaften von Dateien, die es in dieser Form unter
-Unix nicht gibt. Viele Applikationen, die auf ein Netzwerklaufwerk
-zugreifen, setzen jedoch funktionierende Attribute voraus.
-Insbesondere das Archiv-Attribut wird von vielen Programmen verwendet.
-Insgesamt kennt DOS vier verschiedene Attribute, die f"ur Dateien
-vergeben werden k"onnen:
-
-\begin{description}
-\item[Read-Only] Der Inhalt dieser Datei kann nur gelesen, aber nicht
- geschrieben werden. Die Datei kann nicht gel"oscht werden.
-\item[System] Diese Datei ist f"ur spezielle Betriebssystemzwecke
- vorgesehen.
-\item[Hidden] Diese Datei wird mit dem Kommando 'DIR' nicht angezeigt.
-\item[Archiv] Das Archivbit wird bei jedem Schreibzugriff gesetzt.
- Backupprogrammen ist es freigestellt, dieses Bit zur"uckzusetzen.
- Damit kann eine inkrementelle Sicherung erm"oglicht werden.
-\end{description}
-
-Diese Bits k"onnen unter DOS von jedem Benutzer frei gesetzt und
-wieder zur"uckgesetzt werden. Das Schreibschutzbit ist also nicht als
-echter Zugriffschutz zu verstehen, sondern nur als kleine
-Hilfestellung gegen Fehlbedienungen.
-
-\subsection{Abbildung DOS-Attribute zu Unix-Rechten}
-
-Unix f"uhrt mit jeder Datei einen Satz von Zugriffsrechten mit. Diese
-sind aufgeteilt in drei Gruppen von Benutzern: Der Dateibesitzer, die
-besitzende Gruppe und alle anderen. Jeder Gruppe k"onnen drei
-Rechte zugeteilt werden: Lesen, Schreiben und Ausf"uhren.
-
-Unter DOS werden Ausf"uhrungsrechte nicht verwendet. Sie stehen f"ur
-Samba zur Verf"ugung, um die DOS-Attribute im Unix-Dateisystem
-abzubilden. Das Schreibschutzbit unter DOS hat mit dem Schreibrecht
-des Dateibesitzers unter Unix eine Entsprechung. Bis auf die Umsetzung
-des Schreibschutzbits kann die Umsetzung der Attribute unter Samba mit
-den entsprechenden Parametern \param{map <xxx>} gesteuert werden,
-wobei das Archivbit ohne Zusatzangabe umgesetzt wird, die anderen
-beiden Attribute nicht. Die Attributumsetzung erfolgt anhand der
-folgenden Tabelle:
-
-\[ \begin{tabular}{|l|l|c|l|l|}
-\hline
-DOS-Attribut & Unix-Recht & Maske & Parameter & Standard \\
-\hline\hline
-Schreibschutz & Schreibrecht Besitzer & 200 & - & immer \\
-\hline
-Archiv & Ausf"uhrung Besitzer & 100 & \param{map archive} & \param{yes} \\
-\hline
-System & Ausf"uhrung Gruppe & 010 & \param{map system} & \param{no} \\
-\hline
-Versteckt & Ausf"uhrung Andere & 001 & \param{map hidden} & \param{no} \\
-\hline
-\end{tabular} \]
-
-Samba mu"s nun diese beiden Dateiattribute ineinander "uberf"uhren.
-Samba mu"s neu erstellten Dateien Unixrechte zuordnen. Wird eine
-Datei neu erstellt, dann gibt der Client dem Server die DOS-Attribute
-mit, mit der er die Datei erstellt haben m"ochte. Daraus formt Samba
-einen Satz von Unix-Zugriffsrechten. Diese Rechte werden vom Parameter
-\param{create mask} eingeschr"ankt. Die Standardvorgabe f"ur die
-\param{create mask} ist gleich \param{744}, was der Rechtemaske
-\param{rwxr-{}-r-{}-} entspricht. Der Dateieigent"umer hat Schreib- und
-Leserecht, alle anderen haben reines Leserecht. Samba schr"ankt die
-Rechte ein, indem der gew"unschte Satz an Rechten mit einer logischen
-UND-Operation mit der \param{create mask} verkn"upft wird. Nur die
-Rechte, die in der \param{create mask} gesetzt sind, k"onnen
-m"oglicherweise in der neu erzeugten Datei auftauchen. In einem
-weiteren Schritt setzt Samba explizit gew"unschte Zugriffsrechte
-anhand des Parameters \param{force create mode}, dessen Standardwert
-auf \param{000} steht. Dies geschieht durch eine ODER-Verkn"upfung mit
-diesem Wert.
-
-Diese Zusammenh"ange werden an einem Beispiel deutlicher. Es kann
-gew"unscht sein, da"s auf neu erstellten Dateien nur der
-Dateibesitzer und die Gruppe Leserecht haben sollen. Der Rest der Welt
-soll diese Dateien nicht lesen k"onnen. Das wird dadurch erreicht,
-da"s man die \param{create mask = 740} setzt, also das Leserecht f"ur
-den Rest der Welt ausmaskiert. Es kann dar"uber hinaus gew"unscht
-sein, da"s die besitzende Gruppe ein Schreibrecht einger"aumt
-bekommt. Das kann man durch \param{force create mode = 020} erreichen.
-Tabellarisch dargestellt hei"st dies:
-
-\[ \begin{tabular}{|l|l||c|l|}
-\hline
-Wunsch & & & \texttt{rw-r-{}-r-{}-} \\
-\hline
-create mask & 740 & UND & \texttt{rw-r-{}-{}-{}-{}-} \\
-\hline
-\hline
-& & & \texttt{rw-r-{}-{}-{}-{}-} \\
-\hline
-force create mode & 020 & ODER & \texttt{-{}-{}-{}-w-{}-{}-{}-} \\
-\hline
-\hline
-Ergebnis & & & \texttt{rw-rw-{}-{}-{}-} \\
-\hline
-\end{tabular} \]
-
-Die Ausf"uhrungsrechte auf Dateien werden unter DOS nicht verwendet,
-sie k"onnen also verwendet werden, um DOS-Attribute im
-Unix-Dateisystem abzulegen. Ausf"uhrungsrechte auf Dateiverzeichnissen
-wirken sich jedoch auf das Verhalten von Samba aus, da durch sie der
-Zugriff zu den Verzeichnissen geregelt wird. Daher kann es
-w"unschenswert sein, da"s die Rechtezuweisung auf Dateien und
-Verzeichnissen unterschiedlich geregelt wird. Die Parameter
-\param{create mask} und \param{force create mode} wirken daher nur auf
-neu angelegte Dateien. F"ur Verzeichnisse sind die Parameter
-\param{directory mask} und \param{force directory mode}
-verantwortlich. Der Vorgabewert f"ur \param{directory mask} ist
-hierbei \param{755}, um den Zutritt f"ur die Gruppe und den Rest der
-Welt zu erm"oglichen, die Vorgabe f"ur \param{force directory mode}
-besetzt mit dem Wert \param{000} kein zus"atzliches Recht.
-
-\subsection{Beispiel: Ein Projektverzeichnis}
-
-H"aufig mu"s man einer Anzahl von Benutzern gemeinsamen Schreibzugriff
-auf eine Freigabe, beispielsweise auf die Freigabe \param{fibu},
-geben. Das Beispiel der Projektverzeichnisse wird noch mehrfach
-betrachtet werden. Es gibt mit Samba viele M"oglichkeiten der
-Realisation, die alle f"ur unterschiedliche Situation geeignet sind.
-
-Ein einfaches Projektverzeichnis l"a"st sich folgenderma"sen
-realisieren:
-
-\begin{verbatim}
-[fibu]
- path = /data/fibu
- writeable = yes
- valid users = @fibu, mueller, meier
-\end{verbatim}
-
-Damit darf die Gruppe \username{fibu} das Recht, auf diese Freigabe
-schreibend zuzugreifen. \username{mueller} und \username{meier}, die
-nicht Mitglied der Finanzbuchhaltung sind, d"urfen ebenfalls
-schreiben. Damit problemloser gemeinsamer Zugriff m"oglich ist, mu"s
-die Rechtevergabe im Unix-Dateisystem geregelt werden. Dabei wird hier
-vorausgesetzt, da"s im Unix selbst nur die Benutzer der Gruppe
-\username{fibu} auf \dateistyle{/data/fibu} zugreifen sollen.
-\username{meier} und \username{mueller} sind \emph{nicht} Mitglieder
-der Gruppe \username{fibu}, sollen aber trotzdem schreiben k"onnen.
-F"ur sie mu"s eine Sonderregelung geschaffen werden, die sich mit
-Standard-Unixrechten nicht abbilden l"a"st. Dazu ben"otigt man die
-ACLs aus Kapitel \ref{acl}.
-
-Hat man keine ACLs zur Verf"ugung, gibt es eine sehr einfache
-M"oglichkeit, jegliche Probleme im gemeinsamen Dateizugriff zu
-vermeiden, ist der Parameter \param{force user}. Will man diesen
-Parameter anwenden, so sollte man f"ur diese Freigabe oder f"ur alle
-solchen Gruppenfreigaben einen separaten User anlegen, und diesem dann
-das freigegebene Verzeichnis "ubergeben:
-
-\begin{verbatim}
-root@delphin:~ > mkdir -p /data/fibu
-root@delphin:~ > useradd fibuuser
-root@delphin:~ > chown projektuser /data/fibu/
-root@delphin:~ > chmod 770 /data/fibu
-\end{verbatim}
-
-Die Freigabe sieht dann folgenderma"sen aus:
-
-\begin{verbatim}
-[fibu]
- path = /data/fibu
- writeable = yes
- valid users = @fibu, mueller, meier
- force user = fibuuser
-\end{verbatim}
-
-Die Zugriffskontrolle wird bei dieser Definition ganz normal anhand
-von \param{valid users} vorgenommen. Nur die dort erw"ahnten Benutzer
-bekommen Zugriff auf die Freigabe. \emph{Nachdem} der Zugriff gew"ahrt
-wurde, vergi"st Samba den Namen, mit dem sich der Benutzer angemeldet
-hat. Samba schaltet f"ur jegliche Zugriffe im Dateisystem in den
-Benutzer \username{fibuuser}. Man mu"s sich damit nicht mehr um
-gemeinsame Zugriffsrechte im Unix k"ummern, da man ohnehin nur unter
-einer einzigen Userid arbeitet. Man verliert jedoch die
-Nachvollziehbarkeit. Alle Dateien geh"oren \username{pcuser}. Dies
-wird insbesondere auch so im entsprechenden Dialog von Windows
-angezeigt.
-
-Mit etwas mehr Aufwand kann man es schaffen, den Dateibesitzer korrekt
-zu behalten und gleichzeitig gemeinsames Schreiben zu erm"oglichen.
-Das Verzeichnis \dateistyle{/data/fibu} selbst kann mit den
-korrekten Gruppenschreibrechten angelegt werden:
-
-\begin{verbatim}
-root@delphin:~ > mkdir -p /data/fibu
-root@delphin:~ > groupadd fibu
-root@delphin:~ > chgrp fibu /data/fibu/
-root@delphin:~ > chmod 770 /data/fibu
-\end{verbatim}
-
-Die Benutzer der Gruppe \username{fibu} k"onnen in diesem
-Verzeichnis einwandfrei Dateien anlegen und ihre eigenen Dateien auch
-"andern. Es gibt jedoch noch zwei Probleme.
-
-\begin{itemize}
-\item \username{mueller} und \username{meier} k"onnen nicht auf das
- Verzeichnis zugreifen, da Unix ihnen den Zugriff verweigert.
-\item Die Benutzer aus der Gruppe \username{fibu} m"ussen nicht
- notwendigerweise diese Gruppe als Hauptgruppe haben. Das hei"st, neu
- angelegte Dateien geh"oren m"oglicherweise anderen Gruppen an.
- Dieses spezielle Problem lie"se sich mit dem set-group-id Bit auf
- dem Verzeichnis \dateistyle{/data/fibu} l"osen:
-
-\begin{verbatim}
-chmod g+s /data/fibu
-\end{verbatim}
-
- \username{mueller} und \username{meier} blieben jedoch immer noch
- au"sen vor, da sie nicht in der Gruppe \username{fibu} sind, also
- auf dem Verzeichnis \dateistyle{/data/fibu} kein Schreibrecht haben.
-\end{itemize}
-
-Beide Probleme bekommt man mit dem Parameter \param{force group =
- fibu} in den Griff. Dieser Parameter arbeitet genau so wie
-\param{force user}, nur da"s er sich anstatt der User-ID auf die
-Group-ID bezieht. Jegliche Dateisystemzugriffe werden damit als Gruppe
-\username{fibu} vorgenommen, die User-ID bleibt unangetastet.
-
-Als letztes mu"s nun noch sichergestellt werden, da"s die Gruppe, in
-diesem Fall \username{fibu}, immer schreiben kann, und da"s der
-Rest der Welt keinen Zugriff bekommt. Die vollst"andige
-Freigabedefinition sieht demnach folgenderma"sen aus:
-
-\begin{verbatim}
-[fibu]
- path = /data/fibu
- writeable = yes
- valid users = @fibu, mueller, meier
- force group = fibu
- create mask = 740
- directory mask = 750
- force create mode = 020
- force directory mode = 020
-\end{verbatim}
-
-\todo{Global- und shareparameter, copy = freigabe}
-
-\section{Projektverzeichnisse, zum zweiten}
-
-Folgendes Problem stellt sich bei der Migration von Novell zu Samba
-recht h"aufig. Unter Novell kann man anhand von
-Gruppenzugeh"origkeiten den Zugriff auf Verzeichnisse regeln. Dies ist
-unter Samba anhand von Unixrechten ebenfalls m"oglich. Was Unix leider
-nicht zur Verf"ugung stellt, ist die M"oglichkeit, Verzeichnisse vor
-Benutzern zu verstecken. Ein Benutzer sieht grunds"atzlich alle
-Verzeichnisse, bekommt aber bei vielen dieser Verzeichnisse die
-Meldung, da"s der Zugriff verweigert wurde. Wenn es jetzt anhand der
-Gruppenzugeh"origkeit des Benutzers m"oglich w"are, nur die
-Verzeichnisse anzuzeigen, auf die er tats"achlich Zugriff hat,
-k"onnten die Verzeichnisse deutlich "ubersichtlicher werden.
-
-Die Flexibilit"at von Samba erm"oglicht es, diese von Unix
-vorgegeben Beschr"ankung zu umgehen, und zwar unter Benutzung von
-Skripten, die vor dem Verbinden mit einer Freigabe ausgef"uhrt werden.
-
-Folgendes Szenario wird vorausgesetzt: Jeder Benutzer ist in mehrere
-Gruppen eingeteilt, die jeweils Projekte, Arbeitsgruppen oder
-Abteilungen darstellen k"onnen. Jede dieser Gruppen hat unter
-\dateistyle{/data/groups} ein eigenes Verzeichnis, auf das sie schreiben
-darf. Die einzelnen Verzeichnisse haben das Set Group ID Bit gesetzt,
-damit die neu angelegten Dateien den jeweiligen Gruppen angeh"oren.
-
-Als Beispiel gebe es die drei Gruppen \param{edv}, \param{fibu} und
-\param{verkauf}. Unter \dateistyle{/data/groups} kann man folgende
-Gruppenverzeichnisse anlegen:
-
-{\small\begin{verbatim}
-root@server:/data/groups> ls -l
-total 12
-drwxrws--- 2 root edv 4096 Jan 31 06:43 edv
-drwxrws--- 2 root fibu 4096 Jan 31 06:43 fibu
-drwxrws--- 2 root verkauf 4096 Jan 31 06:43 verkauf
-root@server:/data/groups>
-\end{verbatim}
-}
-
-Die korrekten Rechte erreicht man unter Unix durch:
-
-{\small\begin{verbatim}
-root@server:/root> mkdir /data/groups/edv
-root@server:/root> chgrp edv /data/groups/edv
-root@server:/root> chmod 2770 /data/groups/edv
-\end{verbatim}
-}
-
-Eine Freigabe, die jedem Benutzer anhand seiner Rechte hierauf Zugriff
-gew"ahrt, kann folgenderma"sen aussehen:
-
-{\small\begin{verbatim}
-[allgroups]
-path = /data/groups
-writeable = yes
-create mode = 740
-directory mode = 750
-force create mode = 020
-force directory mode = 020
-\end{verbatim}
-}
-
-Zu beachten ist hier, da"s keine zus"atzlichen Einschr"ankungen anhand
-von \param{valid users} notwendig sind, da der Zugriff durch die
-Unixrechte beschr"ankt ist. Die Parameter \param{create mask} und
-\param{directory mask} sind nicht strikt notwendig, da bereits auf der
-Ebene \dateistyle{/data/share} die Benutzer abgewiesen werden. Die
-Parameter \dateistyle{force create mode} und \param{force directory mode}
-sind hingegen notwendig, da ohne sie neu angelegte Dateien nicht die
-notwendigen Gruppenschreibrechte erhalten w"urden, die zum gemeinsamen
-Zugriff notwendig sind.
-
-Diese Freigabe erf"ullt funktional genau die Anforderungen, da"s
-jeder in die Verzeichnisse schreiben darf, f"ur die er die
-Gruppenmitgliedschaft hat. Der Nachteil an diesem Verfahren ist, da"s
-er alle anderen Verzeichnisse sieht, was bei gro"sen Servern mit
-vielen Gruppen recht un"ubersichtlich werden kann.
-
-Die preexec-Skripte von Samba erm"oglichen die "ubersichtliche
-Darstellung der Gruppenstruktur. Ein preexec-Skript wird ausgef"uhrt,
-bevor der Benutzer tats"achlich mit der Freigabe verbunden wird.
-
-{\small\begin{verbatim}
-[gruppen]
-path = /data/users/%U
-root preexec = /usr/local/bin/mklinks %U
-writeable = yes
-\end{verbatim}
-}
-
-Die Datei \dateistyle{mklinks} hat folgenden Inhalt:
-
-{\small\begin{verbatim}
-#!/bin/sh
-umask 022
-cd /data/users
-rm -rf "$1"
-mkdir "$1"
-cd "$1"
-for i in $(groups $1)
-do
- ln -s "/data/groups/$i" .
-done
-\end{verbatim}
-}
-
-Beim Verbinden an die Freigabe wird das Verzeichnis
-\dateistyle{/data/users/username} frisch erstellt, das anhand der
-Gruppenzugeh"origkeit des Benutzers eine Liste von symbolischen Links
-erstellt, die auf die eigentlichen Gruppenverzeichnisse verweisen.
-Damit bekommt er nur die Verzeichnisse im Explorer angezeigt, auf die
-er tats"achlich Zugriff hat. Durch die Angabe \param{path =
-/data/users/\%U} ist zudem sichergestellt, da"s die Freigabe f"ur
-alle Benutzer gleich hei"st, aber f"ur jeden Benutzer auf ein eigenes
-Verzeichnis verweist.
-
-Das Skript wird in diesem Beispiel als \param{root preexec}
-ausgef"uhrt, um den Verwaltungsaufwand beim Anlegen neuer Benutzer zu
-minimieren. Mit einem reinen \param{preexec} ohne Rootrechte w"are es
-notwendig, f"ur jeden Benutzer unterhalb von \param{/data/users} ein
-eigenes Verzeichnis mit den notwendigen Rechten anzulegen. Jedoch darf dieses
-Verfahren nur dann angewendet werden, wenn die Benutzernamen unter
-vertrauensw"urdiger Kontrolle stehen. Wenn es m"oglich ist, da"s
-Benutzernamen beispielsweise von einem NIS-Server bezogen werden, kann "uber
-einen Benutzernamen \username{../..} das gesamte Dateisystem
-gel"oscht werden. Ist ein NIS-Server beteiligt, mu"s man das Verfahren
-ohne \param{root preexec} und nur mit \param{preexec} ohne Root-Rechte
-verwenden.
-
-Alternativ k"onnte man das Verzeichnis mit der Gruppenliste im
-Heimatverzeichnis des Benutzers anlegen, wobei dabei Zweifel
-bez"uglich der "Ubersichtlichkeit angebracht sind. Ein weiteres
-Argument, das Skript unter Rootrechten auszuf"uhren, ist die
-Betriebssicherheit. Ohne dies w"are es dem Benutzer m"oglich, sich
-vollst"andig von einem Gruppenverzeichnis auszuschlie"sen indem er das
-gesamte Verzeichnis inklusive symbolischem Link l"oscht. Mit der
-dargestellten Version geh"ort das Verzeichnis mit den symbolischen
-Links dem Benutzer root, und Fehlbedienungen in dieser Ebene sind
-ausgechlossen.
-
-Wenn man die Freigabe \param{[allgroups]} auf \param{browseable =
- no} setzt, so hat man maximale "Ubersichtlichkeit bei vollem
-Zugriff auf s"amtliche Gruppenverzeichnisse durch den Administrator
-gegeben.
-
-"Andern sich die Gruppenzugeh"origkeiten eines Benutzers, so kann
-er einfach durch ein Neuverbinden an die Freigabe die neue Sicht auf
-die Verzeichnisstruktur bekommen. Dieses Neuverbinden kann erzwungen
-werden, indem der richtige Serverprozess get"otet wird. Dieser kann
-anhand des Programms \prog{smbstatus} leicht herausgefunden werden.
-
-\section{ACLs}
-\label{acl}
-
-Die Zugriffsrechte unter Unix werden durch den Dateimodus bestimmt.
-Dieser Dateimodus enth"alt neun Bits, die den Zugriff auf die Datei
-regeln. Dazu kommen drei zus"atzliche Bits f"ur spezielle Anwendungen.
-Mit diesen neun Bits k"onnen Zugriffsrechte f"ur drei Benutzerklassen
-vergeben werden: Den Dateibesitzer, die besitzende Gruppe und den Rest
-der Welt. Mit dem Befehl \prog{chmod} werden diese Rechte gesetzt.
-
-Dieser Mechanismus hat einen unsch"atzbaren Vorteil: Er ist einfach.
-Mit insgesamt zw"olf Bits kann ein sehr gro"ses Spektrum an Szenarien
-abgedeckt werden. Jedoch ist es oft notwendig, Zugriffsrechte feiner
-zu vergeben, als dies mit Unix m"oglich ist. Insbesondere haben viele
-Unternehmensanwendungen komplexere Anforderungen an die
-Zugriffsrechte.
-
-Beispielsweise soll auf einem Verzeichnis die Gruppe \username{fibu}
-Schreibrecht haben und die Gruppe \username{controlling} soll Leserecht
-bekommen. Der Benutzer \username{mueller} ist nun in der Gruppe
-\username{controlling} und hat sich bei der Finanzbuchhaltung unbeliebt
-gemacht. Er soll auf dieses Verzeichnis keinen Zugriff mehr haben. Eine
-solche Konfiguration ist mit den traditionellen Unix-Zugriffsrechten nicht
-mehr abzubilden.
-
-Die Hersteller von Unix haben sich irgendwann zusammengefunden, um das
-beschr"ankte Rechtemodell zu erweitern. Geplant war eine Erweiterung, die
-sich in das vorhandene Rechtemodell von Unix nahtlos einbinden l"a"st, aber
-die dem Benutzer erheblich mehr M"oglichkeiten zur
-Rechtesteuerung gibt.
-
-Zugriffskontrollisten (Access Control Lists oder ACLs) unterst"utzen genau
-diese weitergehenden Zugriffsrechte. Beliebige Benutzer und
-Gruppen k"onnen Rechte auf Dateien und Verzeichnissen bekommen oder
-verweigert bekommen. Die klassischen drei Benutzerklassen kann man als drei
-Eintr"age in einer ACL ansehen.
-
-Das Modell der ACLs erweitert M"oglichkeiten, wem man Rechte geben
-kann. Es erweitert nicht die Art der Rechte, die vergeben werden
-k"onnen. Es geht weiterhin nur um die Rechte Lesen, Schreiben und
-Ausf"uhren, mit der bekannten Bedeutung auf Dateien und
-Verzeichnissen.
-
-\subsection{Rechte unter Unix}
-
-Die Auswertung der Zugriffsrechte unter Unix funktioniert, indem
-zuerst entschieden wird, welche der drei Rechtegruppen Benutzer,
-Gruppe und Andere benutzt werden soll. Im zweiten Schritt wird
-nachgesehen, ob das gew"unschte Recht auf der Datei gesetzt ist.
-
-Die Zugriffsrechte eines Benutzers werden bestimmt durch seinen
-Sicherheitskontext. Dieser Sicherheitskontext besteht aus seiner
-effektiven User ID (EUID), seiner prim"aren Gruppe (EGID) und seinen
-zus"atzlichen Gruppen (GIDs). Die Entscheidung f"ur eine Rechtegruppe
-funktioniert in drei Schritten:
-
-\begin{itemize}
-\item Ist EUID gleich dem Dateibesitzer? In diesem Fall wird die erste
- Rechtegruppe, die f"ur den User benutzt.
-\item Ist der Benutzer in der besitzenden Gruppe? Dann wird die zweite
- Rechtegruppe f"ur Group benutzt. Die tats"achliche Pr"ufung
- passiert, indem die besitzende Gruppe in der Liste GID's gesucht
- wird, in der der Benutzer aufgenommen ist.
-\item Ist beides nicht der Fall, so wird die dritte Rechtemaske f"ur
- Others benutzt.
-\end{itemize}
-
-Wenn entschieden wurde, welche Rechtemaske verwendet werden soll, wird
-nicht mehr versucht, eine andere Rechtemaske zu verwenden. Wenn ein
-Benutzer sich selbst das Leserecht auf einer Datei genommen hat, und
-dem Rest der Welt "uber die Maske Others Leserecht gegeben hat, wird
-er die Datei nicht lesen k"onnen.
-
-\subsection{Eintr"age in einer ACL}
-
-Da ACLs eine reine Erweiterung des Unix-Rechtemodells sind, gibt es
-weiterhin einen Dateibesitzer und eine besitzende Gruppe f"ur jede
-Datei. Eine Access Control List kennt eine Anzahl unterschiedlicher
-Eintr"age:
-
-\begin{description}
-\item[ACL\_USER\_OBJ:] Dies ist die Rechtemaske f"ur den
- Dateibesitzer. Sie entspricht der ersten Rechtemaske f"ur den User
- im klassischen Rechtemodell.
-\item[ACL\_GROUP\_OBJ:] Dies ist die Entsprechung der
- Group-Rechtemaske im klassischen Modell.
-\item[ACL\_OTHER:] Die Rechtemaske f"ur den Rest der Welt unter Unix.
- Von diesen ersten drei Eintr"agen gibt es jeweils genau einen in
- jeder ACL.
-\item[ACL\_USER:] Ein Eintrag f"ur einen benannten Benutzer. Von
- diesem Eintrag kann es mehrere geben, mit denen f"ur
- unterschiedliche Benutzer unterschiedliche Rechte vergeben werden.
- Gibt es einen Benutzereintrag ohne jegliche Rechte, kann dieser auf
- die Datei nicht zugreifen.
-\item[ACL\_GROUP:] Eintrag f"ur eine Gruppe. Auch von diesem Eintrag
- kann es mehrere geben.
-\item[ACL\_MASK:] Die Maske f"ur die effektiven Rechte. Sobald f"ur
- eine Datei ACLs verwendet werden, wird \prog{ls -l} diese
- Rechtemaske als Gruppenrecht anzeigen. Sobald mit \prog{chmod} die
- Rechte f"ur die besitzende Gruppe ver"andert werden (etwa per
- \prog{chmod g-rx}), wird die ACL\_MASK ver"andert.
-\end{description}
-
-\subsection{Rechte mit ACLs}
-
-Wenn ein Prozess auf eine Datei zugreifen will, wird mit dem folgenden
-Algorithmus festgestellt, ob der Zugriff zugelassen oder verweigert
-wird.
-
-\begin{itemize}
-\item Ist die EUID des Prozesses gleich dem Dateibesitzer, wird der
- Zugriff gew"ahrt, wenn der Eintrag f"ur ACL\_USER\_OBJ die
- ben"otigten Zugriffsrechte enth"alt.
-\item Wenn es in der ACL einen ACL\_USER Eintrag gibt, der der EUID
- entspricht, wird dieser Eintrag verwendet. Ist dass gew"unschte
- Recht in diesem Eintrag vorhanden, wird der Zugriff gew"ahrt, sofern
- es \emph{auch} im Eintrag ACL\_MASK vorhanden ist. Ist das Recht
- entweder im ACL-Eintrag oder in ACL\_MASK \emph{nicht} vorhanden,
- wird das Recht verweigert.
-\item Ist der Benutzer in der besitzenden Gruppe der Datei ist
- (Eintrag f"ur ACL\_GROUP\_OBJ), oder wenn der Benutzer in einer
- Gruppeneintr"age vom Typ ACL\_GROUP ist, wird folgendes getestet:
- Sind die gew"unschten Rechte in einem der Eintr"age vollst"andig
- vorhanden, so wird der Zugriff gew"ahrt, sofern das Recht ebenfalls
- im Eintrag ACL\_MASK vorhanden ist. Ansonsten wird der Zugriff
- verweigert.
-\item Wenn kein Eintrag gefunden werden konnte, wird der Zugriff
- anhand des Eintrags ACL\_OTHER gew"ahrt.
-\end{itemize}
-
-Es ist hier wichtig festzustellen, da"s die Benutzereintr"age in einer
-ACL immer \emph{vor} Gruppeneintr"agen durchsucht werden. Damit werden
-die spezifischeren Eintr"age grunds"atzlich vorrangig vor den weniger
-spezifischen Eintr"agen behandelt.
-
-\subsection{ACL-Beispiel}
-
-Linux unterst"utzt mit dem richtigen Kernelpatch die beschriebenen
-ACLs auf dem Ext2-Dateisystem. Der Kernelpatch ist zu diesem Zeitpunkt
-(Sommer 2001) notwendig, da Linus Torvalds ihn noch nicht in den
-Standardkernel aufgenommen hat. Unter
-\href{http://acl.bestbits.at/}{http://acl.bestbits.at} findet man den
-entsprechenden Kernelpatch und die notwendigen Utilities. ACLs setzen
-kann man mit \prog{setfacl}, mit \prog{getfacl} werden ACLs angezeigt.
-
-Das oben beschriebene Beispiel eines Verzeichnisses f"ur die
-Finanzbuchhaltung l"a"st sich folgenderma"sen erstellen:
-
-\begin{verbatim}
-root@delphin:~ > cd /
-root@delphin:/ > mkdir fibu
-root@delphin:/ > chmod o-rwx fibu
-root@delphin:/ > setfacl -m group:fibu:rwx fibu
-root@delphin:/ > setfacl -m group:controlling:rx fibu
-root@delphin:/ > setfacl -m user:mueller:--- fibu
-root@delphin:/ > getfacl fibu
-# file: fibu
-# owner: root
-# group: root
-user::rwx
-user:mueller:---
-group::r-x
-group:fibu:rwx
-group:controlling:r-x
-mask:rwx
-other:---
-\end{verbatim}
-
-Obwohl der Benutzer \username{mueller} Mitglied der Gruppe
-\username{controlling} ist, hat er keinen Zugriff auf dieses
-Verzeichnis, da der ACL-Eintrag f"ur ihn keinen Zugriff erlaubt, und
-dieser vor seinem Gruppeneintrag gefunden wird.
-
-Interessant an diesem Beispiel ist die Behandlung der ACL-mask. Sie
-wird in der Anzeige von \prog{ls -l} als Gruppenberechtigung
-angezeigt.
-
-\begin{verbatim}
-root@delphin:/ > ls -ld fibu
-drwxrwx--- 2 root root 4096 Aug 28 07:56 fibu
-\end{verbatim}
-
-An der Ausgabe von \prog{getfacl} ist zu sehen, da"s die besitzende
-Gruppe \username{root} nur Lese- und Ausf"uhrungsrechte hat. Trotzdem
-zeigt \prog{ls -l} f"ur die Gruppe ein \prog{rwx} an. Dies wird
-gemacht, um Benutzer vor "Uberraschungen zu sch"utzen. "Uber ACLs sind
-auf dem Verzeichnis \dateistyle{fibu} mehr Rechte vergeben, als aus
-der Ausgabe von \prog{ls -l} ersichtlich ist. Will man die
-Rechtevergabe durch ACLs ausschalten, gen"ugt es, mit \prog{chmod
- g-rwx fibu} die Rechte f"ur die besitzende Gruppe komplett
-wegzunehmen.
-
-\subsection{Default ACLs}
-
-Das vorangegangene Beispiel ist noch nicht vollst"andig. F"ur das
-Verzeichnis \dateistyle{fibu} sind die Rechte korrekt gesetzt. Wenn
-jedoch Benutzer in diesem Verzeichnis Dateien anlegen, gelten wieder
-nur die normalen Regeln von Unix. Erreichen m"ochte man jedoch in der
-Regel, da"s f"ur neue Dateien unterhalb eines solchen Verzeichnisses
-wieder die gleichen Regeln gelten wie f"ur das Verzeichnis selbst.
-
-Wenn eine neue Datei oder ein Verzeichnis erstellt wird, mu"s "uber
-die Zugriffsrechte entschieden werden, die darauf gesetzt werden. Im
-traditionellen Unixmodell wird die Rechtemaske auf neuen Dateien und
-Verzeichnissen durch die so genannte \emph{umask} eingeschr"ankt. Ein
-Programm, das eine Datei erzeugt, kann einen Satz von Zugriffsrechten
-bestimmen, mit dem die Datei erzeugt werden soll. Bevor die Datei
-tats"achlich mit diesen Rechten erzeugt wird, wird dieser Satz von
-Rechten um die Bits eingeschr"ankt, die in der \emph{umask} gesetzt
-sind. Wenn ACLs verwendet werden, ist dieses einfache Modell nicht
-mehr verwendbar. Stattdessen kann man f"ur jedes Verzeichnis eine
-so genannte \emph{Default ACL} vergeben. Diese werden an Dateien und
-Verzeichnisse weitergegeben.
-
-Setzen kann man die Default ACL, indem man dem Befehl \prog{setfacl}
-den Schalter \prog{-d} mitgibt:
-
-\begin{verbatim}
-root@delphin:/ > setfacl -d -m group:fibu:rwx fibu/
-root@delphin:/ > setfacl -d -m group:controlling:r-x fibu
-root@delphin:/ > setfacl -d -m user:mueller:--- fibu
-root@delphin:/ > getfacl fibu
-# file: fibu
-# owner: root
-# group: root
-user::rwx
-user:mueller:---
-group::r-x
-group:fibu:rwx
-group:controlling:r-x
-mask:rwx
-other:---
-default:user::rwx
-default:user:mueller:---
-default:group::r-x
-default:group:fibu:rwx
-default:group:controlling:r-x
-default:mask:rwx
-default:other:---
-\end{verbatim}
-
-Mit diesen Eintr"agen ist das Beispielverzeichnis vollst"andig. Die
-Default-Eintr"age werden an neue Dateien und Verzeichnisse
-weitergegeben.
-
-Zu beachten ist hier noch die umask des Benutzers. Sobald ACLs benutzt
-werden, wirken die Gruppenrechte, die im \prog{ls} dargestellt und mit
-\prog{chown} ge"andert werden, als \emph{mask} einschr"ankend auf die
-ACLs. Wenn die umask eines Unix-Benutzers so gesetzt ist, da"s die
-Gruppe eingeschr"ankt wird, so wirkt sich das beim Einsatz von ACLs so
-aus, da"s bei neu angelegten Dateien und Verzeichnissen diese
-Gruppeneinschr"ankungen als \emph{mask} wirken und somit die default
-ACLs beschr"anken.
-
-\subsection{ACLs aus Windows-Sicht}
-
-Was hat das ganze mit Samba zu tun? Zun"achst einmal sind
-Windows-Administratoren gewohnt, deutlich st"arker mit ACLs zu
-arbeiten, als Unixbenutzer. Dies mag daran liegen, da"s Unix lange
-Zeit keine ACLs unterst"utzt hat und man vieles auch mit den
-traditionellen Zugriffsrechten erreichen kann. Bei der Planung eines
-Sambaservers als Ersatz f"ur einen NT-Server stellt sich so
-zwangsl"aufig die Frage nach der Unterst"utzung von ACLs.
-
-Der Zusammenhang mit Samba ergibt sich nun daraus, da"s mit Samba 2.2
-diese ACLs von Windows aus angeschaut und sogar gesetzt werden
-k"onnen. Dazu mu"s bei der Kompilation von Samba die Option
-\prog{-{}-with-acl-support} an das Skript \prog{configure} "ubergeben
-worden sein, und beim Kompilieren mu"s die ACL-Unterst"utzung in den
-Headerfiles des Kernels vorhanden sein. Ist beides der Fall, kann man
-"uber die Sicherheitseigenschaften von Dateien und Verzeichnissen
-deren ACLs editieren. Dabei ergibt sich bei der Umsetzung von den sehr
-komplexen NT-ACLs zu den deutlich einfacheren Posix-ACLs h"aufig eine
-gewisse Einschr"ankung der Funktionalit"at, aber dies ist leider nicht
-zu vermeiden. Die Anforderungen, die im obigen Beispiel skizziert
-wurden, werden jedoch korrekt umgesetzt. Wer sich f"ur die genaue
-Umsetzung der ACLs zwischen der NT- und der Posix-Welt interessiert,
-mag sich die Datei \dateistyle{samba-acls.ag.pdf} aus dem
-Unterverzeichnis \prog{slides} eines Samba-FTP Servers ansehen. Dies
-sind die Folien eines Vortrags von Jeremy Allison "uber jene
-Umsetzung, den er bei der CIFS 2001 Konferenz in Bellevue gehalten
-hat.
-
-\section{oplocks}
-
-Dateizugriffe "uber ein Netzwerk sind trotz leistungsf"ahiger
-Netzwerkhardware meistens deutlich langsamer als auf einer lokalen
-Festplatte. Der lokale Hauptspeicher, der heutzutage in den meisten
-Workstations im "Uberflu"s vorhanden ist, ist nochmal um
-Gr"o"senordnungen schneller. F"ur lokale Festplatten gibt es in allen
-Systemen Caches im Hauptspeicher, und so w"are es Verschwendung,
-Caching nicht auch auf Netzwerkdateien anzuwenden. Netzwerkzugriffe,
-die gar nicht erst gemacht werden m"ussen, sind die schnellsten
-Zugriffe. Im Gegensatz zu einem lokalen Festplattencache kann ein
-Cache von Netzwerkdateien nicht davon ausgehen, die Datei alleine zu
-benutzen\footnote{Geteilte Blockger"ate in einem Storage Area Network
- sei hier einmal au"sen vor gelassen.}. Zugriffe unterschiedlicher
-Clients m"ussen koordiniert werden.
-
-Opportunistic Locks (Oplocks) sind ein Mechanismus, mit dem Clients
-erlaubt werden kann, Dateiinhalte zu cachen. Mit einem Oplock bekommt
-der Client eine Datei solange exklusiv f"ur sich, bis der Server ihn
-auffordert, die "Anderungen zur"uckzuschreiben und die Sperre
-freizugeben.
-
-Ein Client A m"ochte eine Datei "offnen und beantragt ein Oplock auf
-die Datei. Wenn der Server dieses Oplock gew"ahrt, ist das die Zusage,
-da"s niemand anders auf die Datei zugreift. Damit mu"s Client A
-weder bei jedem Lesezugriff den Server befragen, noch mu"s er jeden
-Schreibzugriff unverz"uglich an den Server liefern. Moderne
-Windowsclient nutzen dieses Feature sehr ausgiebig und erreichen damit
-in typischen Applikationen zwischen drei"sig und vierzig Prozent mehr
-Geschwindigkeit.
-
-Wenn ein zweiter Client, B, auf die Datei "offnen m"ochte, schickt der
-Server dem Client A ein so genanntes Oplock Break. Dies ist die
-Anweisung, s"amtliche lokalen "Anderungen zur"uckzuschreiben und den
-Schreibcache auf dieser Datei in Zukunft auszuschalten. Erst nachdem
-Client A alle "Anderungen zur"uckgeschrieben hat, wird Client B die
-Datei "offnen k"onnen. Da keiner von beiden noch ein Oplock bekommt,
-sehen beide s"amtliche "Anderungen sofort.
-
-Dieses Schema funktioniert innerhalb von Samba hervorragend. Sobald
-Unix-Prozesse ebenfalls auf Dateien zugreifen m"ussen, die von Samba
-freigegeben sind, gibt es Probleme mit Oplocks. Beispielsweise wird es
-nicht m"oglich sein, vern"unftig Datensicherung zu betreiben, da
-Clients m"oglicherweise nicht alle Daten zum Server geschickt haben.
-
-Es gibt mehrere M"oglichkeiten, dieses Problem in den Griff zu
-bekommen:
-
-\begin{description}
-\item[Keine Oplocks:] Durch den Parameter \param{oplocks = no} k"onnen
- Oplocks f"ur eine Freigabe komplett abgeschaltet werden. Damit
- handelt man sich aber massive Performanceprobleme ein.
-\item[Keine Oplocks f"ur einzelne Dateien:] Der Parameter \param{veto
- oplock files} verweigert Oplocks f"ur einzelne Dateien. Dieser
- Parameter verlangt eine Liste von Unix-Pfadnamen oder
- DOS-Wild\-cards. Die Syntax ist in der Beschreibung zum Parameter
- \param{veto files} zu finden.
-\item[Kernel Oplocks:] Das Problem mit Oplocks liegt darin, da"s Samba
- vom Kernel nicht informiert werden kann, wenn ein Unixproze"s eine
- Datei "offnen will. Samba k"onnte f"ur diese Datei ein Oplock
- vergeben haben und m"u"ste es vom Client zur"uckfordern, bevor der
- Unixproze"s die Datei "offnen kann. IRIX und Linux 2.4 sind um ein
- API erweitert worden, das genau dies leistet. Um Kernel Oplocks zu
- nutzen, mu"s Samba entsprechend kompiliert werden. Liegen bei der
- Kompilation die Quellen des Kernel 2.4 vor, erkennt Samba diese
- automatisch. Sollten sich bei der Nutzung dieses Features Probleme
- herausstellen, kann es mit \param{kernel oplocks = no} abgeschaltet
- werden, obwohl dies nie notwendig sein sollte.
-\end{description}
-
-Bevor Samba Oplocks unterst"utzt hat, konnte man mit \param{fake
- oplocks = yes} f"ur read only Freigaben jegliche Oplocks vergeben,
-ohne sie jemals zur"uckzufordern. Dies sollte man heutzutage
-\emph{nicht} mehr einsetzen.
-
-\section{Pa"sw"orter}
-\label{passwoerter}
-
-Protokolle der IP-Welt wie telnet, ftp und pop3 "ubertragen die
-Pa"sw"orter zur Benutzerauthentifizierung im Klartext. Damit kann
-jeder, der den Netzverkehr abh"oren kann, s"amtliche Pa"sw"orter
-mitschreiben. Daf"ur existieren fertige Programme, die Benutzernamen
-und dazugeh"orige Pa"sw"orter ausgeben. In der Unixwelt wurde dies
-zun"achst nicht als problematisch angesehen, da zum Zugriff auf das
-Netz Administratorrechte oder physikalischer Zugriff zum Netz
-notwendig sind. Beides war historisch oft nicht gegeben, so da"s das
-Risiko als relativ gering eingesch"atzt wurde. Seit dem Aufkommen von
-DOS und Ethernet hat jeder Benutzer Administratorrechte, kann also den
-Netzverkehr mitschneiden.
-
-Benutzerauthentifizierung mu"s vor allem eins leisten: Der Benutzer
-mu"s beweisen, da"s er sein Pa"swort kennt. Ein
-Authentifizierungsprotokoll kann es dabei erm"oglichen, da"s das
-Pa"swort nicht "ubertragen werden mu"s.
-
-Klassische symmetrische Verschl"usselung funktioniert folgenderma"sen:
-Jemand m"ochte einem Bekannten\footnote{In der Literatur hei"sen diese
- beiden Bekannten Alice und Bob. Es gibt ganze Abhandlungen dazu, was
- diesen beiden schon alles passiert ist$\ldots$} eine geheime
-Nachricht zukommen lassen. Das hei"st, jemand, der die "Ubertragung
-abh"ort, soll diese Nachricht nicht lesen k"onnen. Dazu kann man ein
-symmetrisches Verfahren wie DES, IDEA oder AES einsetzen. Diese
-Verfahren zerst"uckeln die Nachricht so, da"s sie niemand mehr lesen
-kann, au"ser jemand wei"s, mit welchem Verfahren die Nachricht
-verschl"usselt wurde. Zu jedem Verschl"usselungsverfahren gibt es
-n"amlich ein Gegenst"uck, das aus der zerst"uckelten Nachricht das
-Original wieder herstellt. Es gibt auch Verfahren, bei denen es keinen
-R"uckweg gibt. Diese sind zwar f"ur die genannte Anwendung nicht
-brauchbar, denn man kommt nicht mehr an die Nachricht, aber in anderen
-Bereichen sind diese so genannten Hashverfahren sehr weit verbreitet.
-
-Alle heute verwendeten symmetrischen Verschl"usselungsverfahren
-verwenden zus"atzlich Schl"ussel. Erst mit einem Schl"ussel wird die
-genaue Methode festgelegt, mit der die Nachricht verschl"usselt wird.
-Jemand, der die verschl"usselte Nachricht liest, mu"s also nicht nur
-das grunds"atzliche Verfahren kennen, sondern insbesondere mu"s er den
-Schl"ussel herausbekommen, um die Nachricht lesen zu k"onnen. Das
-Raten des Schl"ussels ist meistens der viel schwierigere Teil, da es
-sehr viel mehr Schl"ussel gibt als Verschl"usselungsverfahren. An
-dieser Stelle kommt die vielzitierte Schl"ussell"ange ins Spiel. Wenn
-ein Schl"ussel wie bei DES 56 Bit lang ist, dann gibt es $2^56 =
-72.057.594.037.927.936$ verschiedene Schl"ussel. Mit heutiger
-Technologie k"onnen diese Schl"ussel alle in kurzer Zeit ausprobiert
-werden, daher arbeiten moderne Verfahren mit mindestens 128 Bit langen
-Schl"usseln. Man nimmt an, da"s $2^128$ Schl"ussel auch in der
-absehbaren Zukunft nicht alle durchprobiert werden k"onnen. Abbildung
-\ref{symmetrisch} verdeutlicht die symmetrische Verschl"usselung.
-
-\begin{figure}\[
-\setlength{\unitlength}{1cm}
-\begin{picture}(11,3.5)
-
-\put(0,0){\framebox(11,3.5){}}
-
-\put(4,0){\line(0,1){3.5}}
-\put(7,0){\line(0,1){3.5}}
-\put(0,2.5){\line(1,0){11}}
-
-\put(2,3){\makebox(0,0){Alice}}
-\put(5.5,3){\makebox(0,0){Eve}}
-\put(9,3){\makebox(0,0){Bob}}
-
-\put(0.2,1.5){\framebox(1,0.5){Pssst!}}
-\put(1.2,1.75){\vector(1,0){0.8}}
-\put(2,1.5){\framebox(1,0.5){AES}}
-\put(3,1.75){\vector(1,0){1.6}}
-\put(1.6,0.3){\framebox(1.8,0.5){Schl"ussel}}
-\put(2.5,0.8){\vector(0,1){0.7}}
-
-\put(4.6,1.5){\framebox(1.8,0.5){@Yx!?a\{}}
-\put(6.4,1.75){\vector(1,0){1.6}}
-
-\put(8,1.5){\framebox(1,0.5){AES}}
-\put(7.6,0.3){\framebox(1.8,0.5){Schl"ussel}}
-\put(8.5,0.8){\vector(0,1){0.7}}
-\put(9,1.75){\vector(1,0){0.8}}
-\put(9.8,1.5){\framebox(1,0.5){Pssst!}}
-
-\end{picture}\]
-\caption{Symmetrische Verschl"usselung}
-\label{symmetrisch}
-\end{figure}
-
-\subsection{Challenge-Response Verfahren}
-
-Werden im SMB-Protokoll verschl"usselte Pa"sw"orter verwendet, so wird
-die symmetrische Verschl"usselung trickreich eingesetzt. Der Client
-m"ochte eine Verbindung zum Server aufbauen. Bevor dies geschieht,
-mu"s der Benutzer seinen Namen und sein Pa"swort eingeben. Erst danach
-baut der Client die Verbindung zum Server auf. In der Antwort auf die
-erste Anfrage des Clients, der Negotiate Protocol Response, schickt
-der Server dem Client eine Zufallszahl. Diese Zufallszahl wird
-Herausforderung genannt.
-
-Der Client verf"ugt nun "uber drei Werte: Den Benutzernamen, das
-Pa"swort des Benutzers und die Herausforderung. Das Pa"swort soll nun
-verschl"usselt "uber das Netz "ubertragen werden. Ein naiver Ansatz
-w"are, die Herausforderung als Schl"ussel f"ur ein symmetrisches
-Verschl"usselungsverfahren einzusetzen. Der Server kennt die
-Herausforderung, da er sie selbst verschickt hat, kann also das
-verschl"usselte Pa"swort wieder entschl"usseln. Das Problem liegt
-darin, da"s jeder Zuh"orer ebenfalls den Schl"ussel kennt, also auch
-das Pa"swort entschl"usseln kann. Daher wird anders vorgegangen: Das
-Pa"swort wird als Schl"ussel benutzt, um die Herausforderung zu
-verschl"usseln. Diese mit dem Pa"swort verschl"usselte Herausforderung
-schickt der Client im Session Setup zusammen mit dem Benutzernamen an
-den Server.
-
-Wor"uber verf"ugt der Server, wenn er den Session Setup erhalten hat?
-Er hat sich die Zufallszahl gemerkt, und der Client hat im den
-Benutzernamen geschickt. Aus der Benutzerdatenbank kann er damit das
-Pa"swort des Benutzers auslesen. Mit diesem ausgelesenen Pa"swort als
-Schl"ussel entschl"usselt der Server die verschl"usselte
-Herausforderung und pr"uft, ob wieder die versendete Zufallszahl
-herauskommt. Ist dies der Fall, stimmen die beiden Schl"ussel
-"uberein. Das hei"st, der Client hat die als Herausforderung gesendete
-Zufallszahl mit dem gleichen Pa"swort verschl"usselt, das auch der
-Server in seiner Benutzerdatenbank gespeichert hat. Stimmt der
-entschl"usselte Wert nicht mit der gesendeten Zufallszahl "uberein,
-wurde f"ur die Verschl"usselung ein anderer Schl"ussel, also ein
-anderes Pa"swort, benutzt, als f"ur die Entschl"usselung. Das am
-Client eingegebene Pa"swort stimmt also nicht mit dem "uberein, das
-der Server in seiner Benutzerdatenbank gespeichert hat. Der Server
-bekommt nicht heraus, welches Pa"swort der Client benutzt hat, aber
-das mu"s er auch gar nicht. Das Pa"swort war in jedem Fall falsch.
-
-Abbildung \ref{encrypt-challenge} verdeutlicht die verwendete
-Verschl"usselung, Abbildung \ref{challenge-requests} den zeitlichen
-Ablauf des Protokolls.
-
-\begin{figure}\[
-\setlength{\unitlength}{1cm}
-\begin{picture}(11,3.5)
-
-\put(0,0){\framebox(11,3.5){}}
-
-\put(4,0){\line(0,1){3.5}}
-\put(7,0){\line(0,1){3.5}}
-\put(0,2.5){\line(1,0){11}}
-
-\put(2,3){\makebox(0,0){Client}}
-\put(5.5,3){\makebox(0,0){Zuh"orer}}
-\put(9,3){\makebox(0,0){Server}}
-
-\put(0.2,1.5){\framebox(1.2,0.5){Zufall}}
-\put(1.4,1.75){\vector(1,0){0.6}}
-\put(2,1.5){\framebox(1,0.5){DES}}
-\put(3,1.75){\vector(1,0){1.6}}
-\put(1.6,0.3){\framebox(1.8,0.5){Pa"swort}}
-\put(2.5,0.8){\vector(0,1){0.7}}
-
-\put(4.6,1.5){\framebox(1.8,0.5){@Yx!?a\{}}
-\put(6.4,1.75){\vector(1,0){1.6}}
-
-\put(8,1.5){\framebox(1,0.5){DES}}
-\put(7.6,0.3){\framebox(1.8,0.5){Pa"swort}}
-\put(8.5,0.8){\vector(0,1){0.7}}
-\put(9,1.75){\vector(1,0){0.5}}
-\put(9.5,1.5){\framebox(1.3,0.5){Zufall?}}
-
-\end{picture}\]
-\caption{Verschl"usselung der Herausforderung}
-\label{encrypt-challenge}
-\end{figure}
-
-\begin{figure}\[
-\begin{pspicture}(11.5,6.5)
-%\psgrid[subgriddiv=1,griddots=10]
-\psframe(11.5,6.5)
-\psline(3,6.5)(3,0)
-\psline(7,6.5)(7,0)
-\psframe[fillstyle=solid,fillcolor=lightgray](3,0)(7,6.5)
-\rput(2,6){{\sffamily\bfseries Client}}
-\rput(5,6){{\sffamily\bfseries Zuh"orer}}
-\rput(8,6){{\sffamily\bfseries Server}}
-\psline(0,5.7)(11.5,5.7)
-
-\psline{->}(2.5,5)(7.5,5)
-\rput(5,5.2){Negotiate Protocol}
-
-\rput[lB](8,4.5){H: Herausforderung}
-\psline{->}(7.5,4.5)(2.5,4.5)
-\rput(5,4.3){{\bfseries H}}
-
-\psline{->}(2.5,3)(7.5,3)
-\rput(5,3.2){Session Setup}
-\rput(5,2.8){{\bfseries Username, PW(H)}}
-\rput[lB](0.3,3.9){Herausforderung}
-\rput[lB](0.3,3.5){Username}
-\rput[lB](0.3,3.1){Pa"swort}
-
-\rput[lB](8,2.9){Username}
-\rput[lB](8.2,2.5){$\Rightarrow$ Pa"swort}
-\rput[lB](8.2,2.1){entschl"ussle PW(H)}
-
-% \pscurve{->}(5.8,2.7)(8,1.8)(9.5,1.8)(10,2)
-\rput[tl](9.8,1.9){$\Rightarrow$ =H?}
-
-% \pscurve{<->}(10.5,1.6)(10.8,1.5)(11.3,2)(11,3)(8.3,4.4)
-%\rput[t](10.8,1.4){=?}
-
-\psline{->}(7.5,0.8)(2.5,0.8)
-\rput(5,0.6){{\bfseries Ok?}}
-\end{pspicture}\]
-\caption{Challenge-Response Verfahren}
-\label{challenge-requests}
-\end{figure}
-
-Warum ist das Verfahren sicher? Die mit dem Pa"swort verschl"usselte
-Herausforderung hat den Server davon "uberzeugt, da"s der Benutzer
-sein Pa"swort kennt. Man k"onnte vermuten, da"s man diese
-verschl"usselte Herausforderung einfach nochmal schicken mu"s, um die
-Rechte des Benutzers zu bekommen. Dieser so genannte Replay-Angriff
-schl"agt jedoch fehl, da bei jeder neuen Anmeldung eine neue
-Herausforderung verschl"usselt werden mu"s. Dies gilt nat"urlich nur,
-wenn der Server sich jedes Mal eine neue Herausforderung
-ausdenkt$\ldots$
-
-Windows NT verh"alt sich diesbez"uglich vern"unftig. Windows 95 denkt
-sich jedoch nur alle 15 Minuten eine neue Herausforderung aus. Das
-hei"st, da"s jemand nur einen Verbindungsaufbau mitschneiden mu"s, und
-sich sofort danach mit der gleichen Benutzerkennung bei der gleichen
-Maschine anmelden kann. Man kann sich fast sicher darauf verlassen,
-die gleiche Herausforderung zu bekommen, und mit der mitgeschnittenen
-Antwort Zugriff zu erhalten. Dies gilt selbstverst"andlich nur f"ur
-die Zugriffe, bei denen Windows 95 als Server benutzt wird. Und wer
-tut das schon?
-
-Ein Zuh"orer verf"ugt "uber die Herausforderung und den
-verschl"usselten Wert. Mit diesen beiden Werten k"onnte er einen
-Known-Plaintext-Angriff gegen die Verschl"usselung starten. Das
-hei"st, es mu"s ein Verschl"usselungsalgorithmus gew"ahlt werden, der
-gegen einen solchen Angriff f"ur alle praktischen Belange immun ist.
-
-\subsection{Vor- und Nachteile von verschl"usselten Pa"sw"ortern}
-
-Das Challenge-Response Verfahren setzt voraus, da"s der Server "uber das
-Benutzerpa"swort im Klartext verf"ugt. Unter Unix tut er das nicht, sondern
-der Server kennt nur eine zerhackte Version des Pa"swortes. Die meisten
-Linuxsysteme speichern diesen Wert in der Datei \dateistyle{/etc/shadow},
-andere Unixe k"onnen die Pa"swortdatenbank in anderen Dateien abspeichern. Der
-Wert, der dort gespeichert wird, ist f"ur die Authentifizierung benutzbar. Der
-Server ist jedoch nicht in der Lage, daraus das Klartextpa"swort des Benutzers
-zu berechnen.
-
-Die Authentifizierung unter Unix benutzt eine Hashfunktion, die drei
-Eigenschaften erf"ullt:
-
-\begin{enumerate}
-
-\item Sie ist leicht zu berechnen. Dies ist notwendig, damit die
-Pa"swort"uberpr"ufung nicht zu lange dauert.
-
-\item Sie ist nur sehr schwer umkehrbar. Das hei"st, aus dem
- zerhackten Pa"swort ist das Klartextpa"swort nicht berechenbar. Als
- Beispiel f"ur eine solche Einwegfunktion soll hier die
- Multiplikation herhalten. 98453*34761=3422324733 ist relativ einfach
- zu berechnen. Da"s die Zahl 3422324733 aus den beiden
- Ursprungszahlen entstanden ist, ist schon sehr viel schwieriger
- herauszufinden. Es gibt Verfahren, bei denen es keinen R"uckweg gibt, der
-irgendwie berechnet werden kann. Um f"ur einen Funktionswert den Ausgangswert
-herauszubekommen, mu"s man alle m"oglichen Ausgangswerte durchprobieren oder
-gleich eine Wertetabelle mit allen Ausgangswerten anlegen.\footnote{Wie
-"uberall in der Kryptographie gilt
- dies auch nur so lange, bis jemand den R"uckweg gefunden hat.}.
-
-Mit dieser Eigenschaft war es zu rechtfertigen, da"s in den fr"uhen Tagen von
-Unix die Hashwerte der Pa"sw"orter f"ur alle Benutzer lesbar waren, da
-niemand daraus etwas ableiten konnte. Mit dem "Uberflu"s an Rechenleistung
-kann man aber so genannte crack-Programme verwenden, die die erste
-Eigenschaft der Hashfunktion ausnutzen: Sie probieren einfach tausende von
-Pa"sw"ortern pro Sekunde aus. Schlechte Pa"sw"orter k"onnen so sehr schnell
-gefunden werden. Daher hat man die Pa"sw"orter in die nicht allgemein lesbare
-Datei \dateistyle{/etc/shadow} ausgelagert.
-
-\item Zwei verschiedene Pa"sw"orter f"uhren zu zwei verschiedenen Hashwerten.
-Damit kann das Loginprogramm ausreichend sicher sein, da"s ein korrekter
-Hashwert aus dem korrekten Pa"swort entstanden ist.
-
-\end{enumerate}
-
-Authentifizierung unter Unix setzt voraus, da"s der Client dem Server
-das Klartextpa"swort pr"asentiert. Der Server kann daraus den Hashwert
-berechnen, und mit dem gespeicherten Wert vergleichen. Leider verf"ugt er
-nicht "uber das Klartextpa"swort des Benutzers, um das
-Challenge-Response Verfahren durchf"uhren zu k"onnen. Daher mu"s unter Samba
-f"ur die Pa"swortversch"usselung eine zweite Pa"swortdatenbankgepflegt
-werden, die Datei \dateistyle{smbpasswd}.
-
-Was bis jetzt beschrieben wurde, entspricht nur fast der Wahrheit. Oben wurde
-beschrieben, da"s die Verschl"usselung der Herausforderung mit dem Pa"swort des
-Benutzers geschieht. Dies ist so nicht ganz richtig. Die Verschl"usselung
-geschieht mit einem Hashwert des Pa"swortes. Dieser Hashwert wird vom Client
-direkt nach Eingabe des Pa"swortes gebildet und gespeichert. Das gesamte oben
-beschriebene Verfahren wird dann mit diesem Hashwert durchgef"uhrt. Das hei"st,
-da"s auch in der Datei \dateistyle{smbpasswd} keine echten Klartextpa"sw"orter
-gespeichert werden m"ussen, sondern diese Hashwerte. Das hei"st, da"s man mit
-den dort enthaltenen Werten so direkt nicht mehr anfangen kann als mit den
-Werten aus der Datei \dateistyle{/etc/shadow} unter Unix. Wenn man sie als
-Pa"swort eingeben w"urde, w"urde Windows sofort wieder den Hash darauf
-anwenden, und einen anderen, also falschen Wert daraus errechnen. Das
-Programm \prog{smbclient} mu"s diese Operation ebenfalls durchf"uhren, nur
-hat man hierzu den Quellcode und kann die entsprechenden Stellen
-auskommentieren. So hat man die M"oglichkeit, sich anhand der Werte in der
-\dateistyle{smbpasswd} ohne Einsatz von crack bei einem NT-Rechner
-anzumelden. Damit sind die Werte aus der \dateistyle{smbpasswd} so gut wie
-Klartextpa"sw"orter.
-
-Alles nicht dramatisch, sagt Microsoft. Das "Aquivalent zur Datei
-\dateistyle{smbpasswd} liegt unter NT verschl"usselt vor. Diese
-Verschl"usselung mu"s jedoch reversibel sein, um das
-Challenge-Response Verfahren durchf"uhren zu k"onnen. Ein Teil der
-Sicherheitsargumentation liegt darin, da"s dieses
-Verschl"usselungsverfahren nicht offengelegt wurde. Das Verfahren war solange
-geheim, bis Jeremy Allison das Programm \prog{pwdump} ver"offentlicht hat.
-Dieses Programm extrahiert aus der Benutzerdatenbank von NT eine Datei, die
-direkt als
-\dateistyle{smbpasswd} verwendet werden kann \footnote{Allerdings nur f"ur
-Samba 1.9, zu 2.0 hin wurde das Format ge"andert. Es gibt in Samba 2.0 aber
-ein Konvertierungsskript.}.
-
-Das hei"st, der Administrator unter NT verf"ugt direkt "uber die
-Pa"sw"orter aller Benutzer oder zumindest "uber etwas Gleichwertiges.
-Damit hat er automatisch die M"oglichkeit, sich bei fremden Systemen
-anzumelden, sofern dort das Pa"swort gleich ist. Bei Unix kann sich
-der Administrator zwar in die Identit"at jedes Benutzers versetzen.
-Dies bleibt aber auf das lokale System beschr"ankt, da er das Pa"swort
-des Benutzers nicht kennt. Windows 2000 mit dem dort eingesetzten
-Kerberos-Verfahren ist in dieser Hinsicht "ubrigens nicht besser. Der
-Dom"anencontroller kennt hier ebenfalls die Klartextpa"sw"orter der Benutzer.
-Ihm wird also genau so vertraut wie einem NT4-Dom"anencontroller.
-
-Sollte ein neugieriger Administrator einmal an den tats"achlichen
-Klartextpa"sw"ortern seiner Benutzer interessiert sein, dann macht NT
-es ihm deutlich einfacher als Unix dies tut. Unix verwendet so
-genannte versalzene Pa"sw"orter. Wenn ein Pa"swort ge"andert wird,
-dann wird ein Zufallswert berechnet, dem Pa"swort hinzugef"ugt und
-dann die Hashfunktion durchgef"uhrt. Der Zufallswert wird der Datei
-\dateistyle{/etc/shadow} im Klartext hinzugef"ugt, damit die
-"Uberpr"ufung die gleichen Operationen durchf"uhren kann. So kann man
-keine Tabelle von Pa"sw"ortern und den zugeh"origen Hashwerten
-anlegen. Man kann auch nicht erkennen, wenn zwei Benutzer das gleiche
-Pa"swort verwenden. Windows NT verwendet dieses Verfahren nicht.
-
-Aus Kompatibilit"atsgr"unden mu"s NT auch noch zus"atzlich einen sehr
-schlechten Hashwert mitf"uhren. Bei alten Windowsversionen konnte das
-Pa"swort bis zu 14 Zeichen lang sein. War es k"urzer, wurde es mit
-Leerzeichen aufgef"ullt. Dann wurde mit den ersten 7 Zeichen ein
-Hashwert berechnet, und dann mit den zweiten 7 Zeichen. Das hei"st, es
-sind sofort alle Pa"sw"orter erkennbar, die weniger als 7 Zeichen
-haben, da die zweite H"alfte des Hashwertes immer gleich ist.
-
-\subsection{NT4 Service Pack 3}
-
-Um die Pa"swortverschl"usselung im Zusammenhang mit Windows NT 4
-Service Pack 3 und Windows 95 in sp"ateren Versionen gibt es immer
-noch weitverbreitete Mi"sverst"andnisse. Beispielsweise da"s alle
-Systeme vorher nicht in der Lage waren, mit verschl"usselten
-Pa"sw"ortern zu arbeiten. Richtig ist folgendes:
-
-\begin{itemize}
-\item \emph{Alle} Clients sind in der Lage, mit verschl"usselten
- Pa"sw"ortern umzugehen. Das gilt f"ur alle aktuellen Clients
- sowieso. Aber sogar der DOS-LanManager-Client, den man sich heute
- noch von Microsofts FTP-Server laden kann, kann Pa"sw"orter
- verschl"usseln.
-\item Auch die neuen Clients k"onnen sowohl mit verschl"usselten
- Pa"sw"ortern, als auch mit Klartextpa"sw"ortern umgehen.
-\item Windows NT4 Service Pack 3 ist das erste NT-System, das sich in
- der Default-Einstellung weigert, Klartextpa"sw"orter zu verschicken.
-\end{itemize}
-
-Ein Client wirkt an der Entscheidung "uber verschl"usselte Pa"sw"orter
-zun"achst einmal "uberhaupt nicht mit. Der Server wird f"ur
-verschl"usselte oder f"ur Klartextpa"sw"orter mit der Einstellung
-\param{encrypt passwords} konfiguriert. In der Antwort zum Negotiate
-Protocol teilt der Server dem Client seine Entscheidung mit. Der
-Server verschickt im Falle der verschl"usselten Pa"sw"orter noch eine
-Herausforderung mit. Der Server teilt dem Client m"oglicherweise mit,
-da"s er ein Klartextpa"swort sehen will. Der Client kann nur noch die
-Verbindung sofort abbrechen, sofern er keine Pa"sw"orter im Klartext
-verschicken m"ochte. Windows NT tut dies ab Service Pack 3 mit der
-Fehlermeldung, da"s man sich micht diesem Konto nicht an dem Server
-anmelden kann.
-
-\begin{center}
-\epsfig{file=konto.eps,width=6cm}
-\end{center}
-
-Windows 95 und folgende fragen immer wieder nach dem Kennwort f"ur die
-Freigabe \texttt{IPC\$}. F"ur alle Clientbetriebssysteme liefert Samba
-im Unterverzeichnis \dateistyle{docs/} Registrierungsdateien mit, mit
-denen diese Verweigerung von Klartextpa"sw"ortern abgestellt werden
-kann.
-
-Mit Klartextpa"sw"ortern bekommt man den gro"sen Vorteil, da"s man
-nicht zwei verschiedene Pa"swortdatenbanken pflegen mu"s. Einige
-Nachteile handelt man sich jedoch ein:
-
-\begin{itemize}
-\item Man mu"s heutzutage jeden Client anfassen, um die Registrierung
- zu "andern.
-\item Man versendet Pa"sw"orter im Klartext, man hat also ein
- m"oglicherweise erhebliches Sicherheitsproblem. Tools wie
- \prog{dsniff}\footnote{Suchen Sie einmal auf http://freshmeat.net
- nach dsniff und lesen Sie das README.} sammeln die Pa"sw"orter
- automatisch auf.
-\item Man verliert jegliche Dom"anenfunktionalit"at, auf die weiter
- unten noch genauer eingegangen wird. Ein Dom"anencontroller kann nur
- mit verschl"usselten Pa"sw"ortern funktionieren.
-\end{itemize}
-
-Insgesamt kann man nur zu verschl"usselten Pa"sw"ortern raten, wenn
-nicht wirklich wichtige Gr"unde f"ur Klartextpa"sw"orter sprechen.
-
-\subsection{Migration zu verschl"usselten Pa"sw"ortern}
-
-Sind momentan Klartextpa"sw"ortern auaf einem Server im Einsatz, und
-ist die Migration zu verschl"usselten Pa"sw"ortern geplant, gibt es
-einen sehr einfachen Weg, dies binnen einer Woche ohne gro"se Arbeit
-zu erledigen. Direkt aus der \dateistyle{/etc/shadow} bekommt man die
-die NT- und LanManager-Hashes leider nicht heraus, da man dazu die
-Klartextpa"sw"orter ben"otigt. Nur aus diesen k"onnen die
-Windows-Hashwerte berechnet werden. Die Clients liefern die
-Pa"sw"orter jedoch bei jedem Anmelden im Klartext zum Server, und
-daraus k"onnen dann die Hashwerte berechnet werden. Dazu mu"s man aus
-der \dateistyle{/etc/passwd} mit dem Skript
-\dateistyle{mksmbpasswd.sh} zun"achst eine Datei
-\dateistyle{smbpasswd} machen, in der alle Benutzer mit leerem
-Pa"swort angelegt sind. Dieses Skript findet sich in den Samba-Quellen
-im Unterverzeichnis \dateistyle{source/script}. Die neu angelegte
-\dateistyle{smbpasswd} mu"s dann mit den korrekten Zugriffsrechten
-versehen werden:
-
-\begin{verbatim}
-sh mksmbpasswd.sh < /etc/passwd > /etc/smbpasswd
-chown root.root /etc/smbpasswd
-chmod 700 /etc/smbpasswd
-\end{verbatim}
-
-Die Migration leitet man mit den folgenden Einstellungen ein:
-
-\begin{verbatim}
-[global]
- encrypt passwords = no
- update encrypted = yes
-\end{verbatim}
-
-Jeder Benutzer, der sich anmeldet, liefert sein Pa"swort im Klartext
-an den Server. Dieser berechnet daraus die beiden Windows-Hashwerte
-und tr"agt sie in der \dateistyle{/etc/smpasswd} ein. Das hei"st, man
-mu"s jetzt nur abwarten, bis sich alle Benutzer einmal angemeldet
-haben, und kann dann verschl"usselte Pa"sw"orter aktivieren:
-
-\begin{verbatim}
-[global]
- encrypt passwords = yes
- update encrypted = no
-\end{verbatim}
-
-\section{Druckfreigaben}
-
-Um Drucker unter Samba zur Verf"ugung zu stellen, m"ussen diese von
-Unix aus ansprechbar sein. Unter Linux mit einem BSD-kompatiblen
-Drucksystem geschieht dies durch Eintr"age in der Datei
-\dateistyle{/etc/printcap}. Alle Drucker, die dort definiert sind,
-kann man als Netzwerkdrucker f"ur Windowsclients freigeben.
-
-Unter Linux ist die Frage der Druckertreiber noch nicht
-zufriedenstellend gel"ost. Druckertreiber unter Windows w"urde man
-unter Linux nicht als solche bezeichnen. In der Linuxwelt sind Treiber
-Softwaremodule, die direkt Hardware wie Netzwerkkarten oder den
-parallelen Port ansprechen. Druckertreiber im Sinne von Windows sind
-unter Linux so genannte Filter, die Druckdaten in ein f"ur den Drucker
-akzeptables Format aufbereiten. Das einheitliche Druckformat unter
-Linux ist Postscript, das mit dem Programm Ghostscript in viele
-druckereigene Formate umgewandelt werden kann. Druckertreiber unter
-Windows gehen vom Windows Metafile-Format aus, und wandeln dies
-entsprechend um. Das Windows Metafile-Format enth"alt Aufrufe an die
-Graphische Komponente von Windows, das GDI.
-
-Wenn man einen Drucker, der "uber Unix angesprochen wird, von Windows
-aus nutzen m"ochte, mu"s man planen, wo die Aufbereitung in das
-druckereigene Format geschehen soll. Zwei Wege sind denkbar.
-
-\begin{itemize}
-\item Auf den Arbeitspl"atzen wird ein generischer Postscripttreiber
- installiert. Die Clients m"ussen nicht wissen, welches Druckermodell
- sich hinter einer Freigabe verbirgt. Die Umwandlung findet auf dem
- Druckerserver mittels \prog{ghostscript} statt.
-\item Der Druckertreiber reicht die Daten weiter, ohne sie weiter zu
- behandeln. Auf den Arbeitspl"atzen werden f"ur jeden Netzdrucker die
- korrekten Treiber installiert.
-\end{itemize}
-
-Beide Wege haben Vor- und Nachteile. Im ersten Fall hat man weniger
-Aufwand mit der Administration auf Clientseite. Man mu"s den korrekten
-"`Druckertreiber"' nur einmal definieren, am Druckerserver. Beim
-zweiten Weg kann man die bessere Unterst"utzung der Druckerhersteller
-f"ur die Windowsplattformen nutzen. Druckertreiber f"ur Windows bieten
-in der Regel die M"oglichkeit, Sonderfunktionen wie die Auswahl des
-Papierschachtes zu nutzen. Dieser erh"ohte Komfort zieht jedoch nach
-sich, da"s auf jedem Client der korrekte Druckertreiber installiert
-ist.
-
-Nutzt eine Windows NT Workstation einen Drucker, der von einem Windows
-NT Server freigegeben wurde, so gibt es noch die M"oglichkeit, die
-Druckaufbereitung komplett vom NT Server vornehmen zu lassen, und
-trotzdem s"amtliche Komfortfunktionen auf der Workstation zu nutzen.
-Dazu mu"s auf der Workstation kein Druckertreiber installiert sein.
-Diese so genannten EMF-Druckerwarteschlangen kann Samba zur Zeit nicht
-exportieren. Samba wird dies voraussichtlich auch nicht so schnell
-erm"oglichen, da hierf"ur gro"se Teile von Windows, n"amlich das GDI,
-auf Sambaseite implementiert werden m"u"ste.
-
-Eine Druckfreigabe wird genau wie eine Dateifreigabe in einem eigenen
-Abschnitt erstellt, wobei f"ur die Druckfunktion drei Optionen
-notwendig sind:
-
-\begin{verbatim}
-[deskjet]
-printable = yes
-printer = lp
-path = /tmp
-\end{verbatim}
-
-Zu einer Druckfreigabe wird die Definition durch die Angabe
-\param{printable = yes}.
-
-Mit der Option \param{printer =} wird festgelegt, welche
-Druckerwarteschlange unter Unix angesprochen werden soll. Diese
-Warteschlange mu"s das Format verstehen, das vom Windowsdruckertreiber
-geliefert wird. Also sollte hier entweder Postscript angenommen
-werden, oder die Daten sollten per so genannter Raw-Queue direkt ohne
-Umwandlung an den Drucker weitergeleitet werden.
-
-Die Option \param{path =} legt einen Spoolbereich fest. Ein Druckjob,
-den ein Windowsrechner an Samba schickt, mu"s zun"achst in einer Datei
-abgespeichert werden. Wenn diese Datei geschlossen wird, teilt der
-Client dem Server mit, da"s diese nun zum Drucker geschickt werden
-soll. Samba realisiert dies, indem das Programm \prog{lpr} mit der
-Druckdatei als Argument aufgerufen wird. Samba mu"s also f"ur sich die
-M"oglichkeit haben, Druckjobs in Dateien zu speichern, bevor sie an
-den \prog{lpd} "ubergeben werden. Dies sollte nicht das
-Spoolverzeichnis sein, das der \prog{lpd} selbst f"ur den Drucker
-vorsieht.
-
-\section{Windows NT Dom"anen}
-
-Installiert man eine Arbeitsgruppe von Windows NT Rechnern, dann
-bekommt man komplett getrennte Benutzerdatenbanken auf den einzelnen
-Rechnern. Erstellt man auf einem Server eine Freigabe und m"ochte f"ur
-diese Freigabe Rechte vergeben, so mu"s man zun"achst die
-Benutzer\footnote{Windows NT benutzt grunds"atzlich \param{security =
- user}} einrichten, die Rechte auf dieser Freigabe bekommen sollen.
-Greift ein Benutzer von einer anderen Workstation auf die Freigabe zu,
-so probiert die Workstation das so genannte transparente Anmelden: Die
-Workstation versucht es erst einmal mit dem lokal angemeldeten
-Benutzer und seinem Pa"swort. Dadurch sieht es so aus, als ob man nur
-ein Benutzerkonto verwenden w"urde.
-
-Die Administration der Benutzerdatenbanken kann komplett von einem
-zentralen Rechner aus erfolgen. Dazu ben"otigt man den Benutzermanager
-f"ur Dom"anen\footnote{Benutzermanager f"ur Dom"anen}, der
-normalerweise bei Windows NT Server mitgeliefert wird. Man kann sich
-diesen aber auch kostenlos von Microsoft von der Webseite
-\url{http://www.microsoft.com/} beziehen. Man mu"s zu dem Rechner, den
-man administrieren m"ochte, eine Verbindung als Administrator
-aufbauen. Dazu mu"s man auf der Workstation, von der aus man
-administriert, auf der Kommandozeile mit
-
-\begin{verbatim}
-net use \\remote\ipc$ /user:administrator
-\end{verbatim}
-
-eine Verbindung aufgebaut werden. Kommt dann die Fehlermeldung
-\emph{Die Referenzen passen nicht zu einer bestehenden
- Referenzenmenge}, so besteht unter einer anderen Benutzerkennung
-bereits eine Verbindung. In diesem Fall mu"s man sich ab- und neu
-anmelden, und den Befehl als allererstes absetzen, bevor irgend eine
-Verbindung zum entfernten Rechner \nbname{remote} aufgebaut werden
-kann. Hat man eine solche Verbindung, kann man im Benutzermanager f"ur
-Dom"anen im Men"upunkt \emph{Dom"ane ausw"ahlen} mit
-\nbname{\textbackslash{}\textbackslash{}remote} die Benutzerdatenbank
-von \nbname{remote} ausw"ahlen und voll administrieren.
-
-Diese Art der Administration skaliert nicht besonders gut. Jeden
-Benutzer mu"s es auf jedem Server geben, die lokalen Workstations
-brauchen ebenfalls separat gepflegte Benutzer. Mit Windows NT wurde,
-um dieses Problem zu l"osen, das Dom"anenkonzept eingef"uhrt. Mit
-einer Windows NT Dom"ane bekommt jeder Benutzer ein zentrales Konto,
-das auf allen Dom"anenmitgliedern g"ultig ist.
-
-Realisiert ist die Dom"ane durch einen speziellen Rechner, den Primary
-Domain Controller PDC, der seine Benutzerdatenbank f"ur andere im Netz
-zur Verf"ugung stellt. Alle Dom"anenmitglieder importieren diese
-Benutzerdatenbank. Somit sind auf den Dom"anenmitgliedern zwei
-Benutzerdatenbanken g"ultig: Die lokale und die des PDC.
-
-Die Kommunikation zwischen der Workstation und dem Primary Domain
-Controller l"auft verschl"usselt ab. Um eine solche Verschl"usselung
-zu erm"oglichen, mu"s ein gemeinsamer Schl"ussel vereinbart werden. Um
-sich "uber einen Schl"ussel einig zu werden, gibt es spezialisierte
-Protokolle, wie beispielsweise den Diffie-Hellmann
-Schl"usselaustausch. Um jeglichen Problemen mit Patenten oder
-Exportrestriktionen zu umgehen, ist Microsoft einen anderen Weg
-gegangen. Beim Schl"usselaustausch geht es im wesentlichen darum,
-sich "uber ein gemeinsames Geheimnis einig zu werden. Um ein
-gemeinsames Geheimnis zu wahren und zu pr"ufen, kennt Microsoft
-bereits eine Gruppe von Protokollen: Die Protokolle zum Pr"ufen und
-Austauschen von Benutzerpa"sw"ortern. Genau diese Protokolle werden
-verwendet, um die Kommunikation zwischen PDC und Workstation zu
-sichern. Das hei"st, es mu"s f"ur jedes Dom"anenmitglied ein
-Benutzerkonto auf dem PDC geben, damit f"ur dieses Konto ein Pa"swort
-vergeben werden kann. Dieses Benutzerkonto hei"st "ublicherweise
-Computerkonto.
-
-\section{Samba als Primary Domain Controller}
-
-Um Samba als PDC zu konfigurieren, sind in der \dateistyle{smb.conf}
-im Abschnitt \param{[global]} 2 Einstellungen notwendig:
-
-\begin{verbatim}
-domain logons = yes
-domain master = yes
-\end{verbatim}
-
-Eine vollst"andige \dateistyle{smb.conf} f"ur einen PDC sieht damit
-folgenderma"sen aus\label{pdc-smbconf}:
-
-\begin{verbatim}
-[global]
- workgroup = samba
- encrypt passwords = yes
- domain master = yes
- domain logons = yes
-\end{verbatim}
-
-Da"s ein PDC auch gleichzeitig Domain Master Browser sein mu"s, ist
-eine Einschr"ankung der Implementation der Microsoft-Clients.
-Eigentlich hat die Funktion des Domain Master Browsers (siehe
-Abschnitt \ref{browsing-im-wan}) nichts mit der Funktion als zentraler
-Server f"ur die Benutzerdatenbank zu tun. Die Clientimplementation von
-Microsoft setzt aber voraus, da"s beide Funktionen auf einer Maschine
-vereinigt sind. Auch funktionieren die Dom"anenfunktionen
-ausschlie"slich mit verschl"usselten Pa"sw"ortern. Ist man auf
-Klartextpa"sw"orter angewiesen, kann man Samba nicht als PDC
-einsetzen.
-
-Befinden sich Windows 9x Clients im Netz, k"onnen diese den Samba-PDC
-sofort ohne weitere Konfiguration als Anmeldeserver nutzen. Dazu
-tr"agt man in den Eigenschaften des Clients f"ur Microsoft-Netzwerke
-ein, da"s sich die Clients an der Samba-Dom"ane anmelden m"ussen. Ist
-dies erfolgreich, so kann man "uber die Systemsteuerung des Clients
-direkt sein SMB-Pa"swort auf dem Server "andern.
-
-\subsection{Manuelles Erstellen der Computerkonten}
-
-F"ur Dom"anenmitglieder unter Windows NT oder 2000 m"ussen noch die
-Computerkonten erstellt werden. Jedes Maschinenkonto mu"s unter Unix
-als normaler Benutzer existieren. Dieser Benutzer braucht weder ein
-Unixpa"swort, noch eine Login-Shell oder ein Heimatverzeichnis. Der
-Name des Benutzers ist der Name der Workstation, erg"anzt um ein
-\$-Zeichen. Erstellt wird ein solcher Benutzer f"ur die Workstation
-\nbname{WKS} unter Linux beispielsweise mit
-
-\begin{verbatim}
-root@erde: useradd -d /dev/null -s /bin/false wks\$
-root@erde: smbpasswd -a -m wks
-\end{verbatim}
-
-Der Befehl \prog{smbpasswd -a -m wks} f"ugt den Benutzer mit einem
-Standardpa"swort in die Datei \dateistyle{smbpasswd} ein. Das
-Standardpa"swort f"ur Computerkonten ist der Name der Workstation, in
-diesem Fall also \nbname{wks}. Man beachte, da"s beim Befehl
-\texttt{useradd} ein Dollarzeichen, maskiert durch den Backslash,
-hinzugef"ugt wurde. Der Befehl \prog{smbpasswd} f"ugt diesen bei
-Verwendung des Parameters \prog{-m} selbst hinzu.
-
-Nachdem das Computerkonto auf dem PDC erstellt wurde, kann in den
-Eigenschaften der Netzwerkumgebung in die Dom"ane gewechselt werden.
-Dabei wird das Pa"swort des Computerkontos ge"andert. Sollte aus
-irgendwelchen Gr"unden ein erneutes Betreten der Dom"ane notwendig
-sein, dann mu"s der Befehl \prog{smbpasswd -a -m wks} erneut
-ausgef"uhrt werden, um das Pa"swort des Computerkontos auf den
-Anfangswert zur"uckzusetzen.
-
-\subsection{Automatisches Erstellen der Computerkonten}
-
-Windows NT 4 bietet in dem Dialog, in dem in die Dom"ane gewechselt
-wird, die M"oglichkeit, das Computerkonto automatisch erstellen zu
-lassen. Dies geschieht unter Angabe eines Benutzers und Kennwortes,
-der auf dem PDC berechtigt ist, Computerkonten zu erstellen. Dies ist
-unter Unix nur \emph{root}, da die \dateistyle{/etc/passwd} hierzu
-ge"andert werden mu"s.
-
-Um das Computerkonto automatisch erstellen zu lassen, m"ussen zwei
-Dinge auf dem PDC konfiguriert sein:
-
-\begin{itemize}
-\item \emph{root} oder ein anderer Benutzer mit der UID 0 mu"s ein
- Pa"swort in der \dateistyle{smbpasswd} haben. Dieses Pa"swort mu"s
- nicht mit dem Systempa"swort von \emph{root} "ubereinstimmen. Wenn
- man nicht \emph{root}, sondern beispielsweise einen Benutzer
- \emph{admin} mit der UID 0 verwendet, braucht dieser Benutzer nicht
- einmal eine Login-Shell auf Unix. Er mu"s nur in die
- \dateistyle{/etc/passwd} schreiben d"urfen.
-\item Der Parameter \param{add user script} mu"s korrekt konfiguriert
- werden. Mit \param{add user script} wird ein Unix-Script angegeben,
- mit dem das Computerkonto in der \dateistyle{/etc/passwd} angelegt
- wird. Beispielsweise kann man mit
-
-\begin{verbatim}
-add user script = useradd -d /dev/null -s /bin/false %u
-\end{verbatim}
-
- die gleiche Wirkung erzielen wie mit der manuellen Konfiguration aus
- dem letzten Abschnitt.
-\end{itemize}
-
-\subsection{BDCs mit Samba}
-
-In einer echten NT Dom"ane gibt es zwei Arten von Dom"anencontrollern:
-Prim"are Dom"anencontroller (PDCs) und Backup Dom"anencontroller
-(BDCs). Der PDC besitzt die Hauptkopie der Benutzerdatenbank
-SAM\todo{uebersetzung}, die BDCs halten read-only Kopien der SAM vor,
-um Authentifizierungsanfragen von Workstations und Mitgliedsservern
-beantworten zu k"onnen. Alle "Anderungen an der Benutzerdatenbank,
-beispielsweise Pa"swort"anderungen, m"ussen auf dem PDC durchgef"uhrt
-werden. Der PDC "ubertr"agt diese "Anderungen dann an die BDCs, damit
-diese wieder "uber den aktuellen Stand der Datenbank verf"ugen.
-
-Samba 2.2.2 ist noch kein voller Ersatz f"ur einen Backup Domain
-Controller in einer echten NT-Dom"ane. Auch kann Samba als PDC keinen
-echten NT-BDC mit Dom"anendaten versorgen. Die Protokolle zur
-Replikation der Benutzerdatenbank sind noch nicht vollst"andig
-implementiert. Das Samba Team, insbesondere Tim Potter, arbeitet
-jedoch daran, die Protokolle zu verstehen und in Samba zu integrieren.
-Vermutlich ist mit Erscheinen dieses Buches die echte
-BDC-Funktionalit"at bereits in Samba integriert.
-
-Wird Samba als PDC eingesetzt, k"onnen weitere Sambaserver jedoch als
-Backup Domain Controller eingesetzt werden. Die Replikation der
-Benutzerdatenbank zwischen den Servern kann mit Unix-Bordmitteln
-vorgenommen werden. Die wesentliche Idee beim Einsatz eines BDC ist
-seine \dateistyle{smb.conf}:
-
-\begin{verbatim}
-workgroup = samba
-encrypt passwords = yes
-domain master = no
-domain logons = yes
-\end{verbatim}
-
-Der Unterschied zum PDC ist die Zeile \param{domain master = no} im
-Gegensatz zu \param{domain master = yes}. Mit dieser
-\dateistyle{smb.conf} sehen die Workstations den BDC als
-Dom"anencontroller f"ur die Dom"ane \nbname{SAMBA} an.
-
-Wenn eine Workstation einen Benutzer authentifizieren mu"s, tut sie
-dies nicht selbst, sondern sucht ihren Dom"anencontroller f"ur die
-Best"atigung der Identit"at des Benutzers. Dies tut sie, indem sie
-eine NetBIOS-Namensanfrage nach dem Namen \nbname{SAMBA<1c>} absetzt.
-\nbname{SAMBA<1c>} ist ein NetBIOS-Gruppenname, den jeder
-Dom"anencontroller per Broadcast oder beim WINS-Server reserviert.
-Diese Reservierung wird bei Samba durch den Parameter \nbname{domain
- logons = yes} angesto"sen. Im n"achsten Schritt authentifizieren
-sich die Workstation und der Dom"anencontroller gegenseitig anhand des
-Workstationkontos. Dieses Workstationkonto mu"s somit sowohl auf dem
-PDC, als auch auf den BDCs vorhanden sein, damit die Workstation auch
-die BDCs als Dom"anencontroller akzeptiert. Auch die gesamte restliche
-Benutzerdatenbank mu"s vom PDC auf die BDCs "ubertragen werden.
-
-\subsection{Hintergrund: Benutzerdatenbanken und SIDs}
-
-Unter Unix besteht ein Benutzer im wesentlichen aus einer numerischen
-Userid, und nicht mehr. Das Programm \prog{login} mu"s beim Anmelden
-des Benutzers anhand seines Namens herausfinden, welche numerische
-Userid er hat. Dazu sieht es in der Datei \dateistyle{/etc/passwd}
-nach. Mit der Datei \dateistyle{/etc/shadow} pr"uft \prog{login} das
-Pa"swort. Ist es korrekt, wird in die gefundene Userid umgeschaltet
-und die Loginshell des Benutzers gestartet. Nach diesem Vorgang ist
-es Unix v"ollig egal, wie der Benutzer hei"st, das einzige, was
-interessiert, ist der numerische Wert. Damit h"angt an jedem Proze"s
-eine endeutige Identifikation der Rechte, die er hat.
-
-Unter Unix ist es so, da"s Userids nur auf dem Rechner gelten, auf dem
-sie zugeordnet wurden. Es gibt keine M"oglichkeit, Rechte von einem
-Rechner auf den n"achsten zu "ubernehmen oder global Benutzer
-zuzuordnen. Die einzige M"oglichkeit, die man zu Vereinheitlichung
-hat, ist der Austausch der jeweils auf einem Rechner geltenden
-Tabellen "uber verschiedene Rechner hinweg. Genau das tut NIS. Die
-Benutzerdatenbank wird im Netz kopiert, gilt aber
-auf jedem Rechner rein lokal.
-
-Unter NT ist das zun"achst genau so. Es gibt eine numerische Userid,
-der Name des Benutzers ist nur w"ahrend der Anmeldung f"ur das System
-interessant. Nach der Anmeldung ist nur noch die numerische Userid
-relevant. Windows NT Benutzer sind jedoch im Gegensatz zu Unix
-Benutzern "uber Rechnergrenzen hin g"ultig. Um dies zu erreichen, wird
-der Benutzer nicht durch eine kleine Zahl beschrieben, sondern durch
-einen so genannten Security Identifier SID. Dieser SID besteht aus zwei
-wesentlichen Teilen. Der erste Teil besteht aus einer 96 Bit langen
-Zahl, die die Benutzerdatenbank des SID eindeutig identifiziert. Der
-zweite Teil ist der so genannte Relative Identifier RID. Der RID ist
-mit der numerischen Userid unter Unix vergleichbar. Da eine Userid
-unter NT jedoch \emph{nur} zusammen mit den 96 Bit der
-Benutzerdatenbank verwendet werden, sind Benutzer unterschiedlicher
-Maschinen oder Dom"anen unterscheidbar.
-
-Mit dieser eindeutigen Zuordnung von Benutzern zu ihren jeweiligen
-Benutzerdatenbanken wird es m"oglich, da"s eine Workstation
-gleichnamige Benutzer aus mehreren Benutzerdatenbanken lokal v"ollig
-gleichwertig verwenden kann. Je nachdem, ob sich ein Dom"anenbenutzer
-oder ein lokaler Benutzer an der Workstation anmelden m"ochte, wird
-die lokale Benutzerdatenbank oder die des PDC um Best"atigung des
-Kennwortes gebeten. Ist dies erfolgt, ist der Benutzer dem System nur
-noch unter dem numerischen SID bekannt. Dabei ist es v"ollig
-gleichg"ultig, ob es sich bei diesem SID um einen lokalen, oder einen
-Dom"anen-SID handelt.
-
-Jeder Sambaserver generiert beim ersten Start seine eigene
-Maschinenkennung und speichert sie in der Datei
-\dateistyle{MACHINE.SID} ab. Die Maschinenkennung wird sp"atestens
-dann ben"otigt, wenn der Sambaserver als Dom"anencontroller
-konfiguriert wird. Die Benutzer, die sich an den Workstations
-anmelden, m"ussen eine eindeutige Dom"anenkennung als Teil ihres SID
-bekommen. Selbst wenn der Sambaserver nicht als Dom"anencontroller
-fungiert, wird die Maschinenkennung verwendet. Beispielsweise bei der
-Anzeige der ACLs in den Sicherheitseigenschaften von Dateien und
-Verzeichnissen wird die Liste der Benutzer in Form eine SID-Liste
-"ubergeben. Diese SIDs m"ussen eindeutig sein und mit separaten
-Aufrufen in Benutzernamen "ubersetzt werden k"onnen.
-
-\section{Profile, Logon Scripts und Policies}
-
-Unter Unix gibt es f"ur jeden Benutzer ein Heimatverzeichnis als
-einzigen Bereich im System, in dem der Benutzer schreiben kann. So
-etwas kennt Windows in dieser restriktiven Form nicht, da viele
-Anwendungen voraussetzen, "uberall im System schreiben zu k"onnen. Aus
-Kompatibilit"atsgr"unden mu"s Windows also relativ offen sein. Dem
-Heimatverzeichnis am n"achsten kommt unter NT das Profil des
-Benutzers, ein ihm zugeordneter Bereich unter
-\verb|c:\winnt\profiles\<benutzername>|. Dort ist der Desktop, der
-benutzereigene Teil des Startmen"us, der Zweig HKEY\_CURRENT\_USER der
-Registry und vieles andere abgelegt. Also alles, was zur
-Arbeitsumgebung des Benutzers geh"ort.
-
-Meldet sich ein Benutzer bei NT das erste Mal an, wird aus
-\verb|c:\winnt\profiles\default user| eine Kopie in das benutzereigene
-Profil gelegt. Beim Anmelden an der n"achsten Workstation wird der
-gleiche Vorgang wiederholt. Das hei"st, jeder Benutzer hat an jeder
-Workstation ein anderes Profil. In einer Dom"anenumgebung m"ochte man
-nat"urlich erreichen, da"s ein Benutzer sein Profil mitnehmen kann,
-da"s er also an jedem Arbeitsplatz seine eigene Umgebung vorfindet.
-Windows l"ost dies mit den serverbasierten Profilen.
-
-F"ur jeden Benutzer kann ein Pfad angegeben werden, in dem sein Profil
-abgelegt wird. Viele Anwendungen setzen aber voraus, da"s das Profil auf
-einer lokalen Platte abgelegt wird. Folglich kopiert Windows beim Anmelden
-des Benutzers das Profil von seinem Serverpfad nach \verb|c:\winnt\profiles|
-und bei jedem abmelden wieder zur"uck auf den Serverpfad.
-
-Der Pfad f"ur das serverbasierte Profil wird bei Samba mit dem
-Parameter \param{logon path} festgelegt. Der Standardpfad steht auf
-\param{logon path =
-\textbackslash{}\textbackslash{}\%N\textbackslash{}\%U\textbackslash{}profile}
-.
-Damit wird im Heimatverzeichnis des Benutzers auf dem PDC ein
-Verzeichnis namens \dateistyle{profile} angelegt und das Profil dort
-gespeichert. Leider kann man mit Samba nicht sauber f"ur einzelne
-Benutzer festlegen, da"s sie ihre Profile auf einem Server ablegen,
-andere Benutzer ihre Profile aber lokal auf den Workstations belassen.
-
-\todo{logon home f"ur win95}
-
-\subsection{Anmeldeskripte}
-
-Meldet sich ein Benutzer an einer Dom"ane an, kann der Primary Domain
-Controller der Workstation mitteilen, da"s unter den Rechten des Benutzers
-eine Batchdatei automatisch ausgef"uhrt werden soll, das so genannte
-\emph{Logon Script}. Samba kennt den Parameter \param{logon
- script}, mit dem der Name des Logon Schriptes festgelegt wird.
-Standarm"a"sig gibt es kein Logon Script. Wird eines festgelegt,
-bezieht es sich immer auf eine \dateistyle{.bat}-Datei in der
-festgelegten Freigabe \param{[netlogon]}. Eine vollst"andige
-\dateistyle{smb.conf} f"ur einen PDC s"ahe so aus:
-
-\begin{verbatim}
-[global]
-workgroup = samba
-encrypt passwords = yes
-domain master = yes
-domain logons = yes
-
-logon script = logon.bat
-
-[homes]
-writeable = yes
-valid users = %S
-
- [netlogon]
-path = /data/netlogon
-\end{verbatim}
-
-Ein einfaches Logon Script in \dateistyle{/data/netlogon/logon.bat}
-kann so aussehen:
-
-\begin{verbatim}
-@echo off^M
-net use h: \\pdc\homes^M
-\end{verbatim}
-
-Die \verb|^M|-Zeichen am Zeilenende bezeichnen die
-DOS-Zeilenendekonvention, bei der an jedem Zeilenende zuerst ein
-Carriage Return und dann ein Linefeed kommt. Unix kennt nur den
-Linefeed als Zeilenende. Der Carriage Return ist hier entscheidend, da
-ansonsten Windows diese Batchdatei nicht ausf"uhren wird. Wenn ein
-Logon Script unter Unix editiert wird, bekommt man den Carriage Return
-im Editor normalerweise durch die Kombination Control-V Control-M.
-Moderne Editoren wie der vim oder der Emacs erkennen eine existierende
-Datei mit DOS-Zeilenendekonvention automatisch und speichern sie auch
-entsprechend wieder ab.
-
-\section{Samba als Dom"anenmitglied}
-\label{domain-member}
-Wenn man mehr als einen Sambaserver betreibt oder einen echten Windows-Server
-betreibt, ben"otigt man genau so wie mit einer echten Windows-Dom"ane eine
-zentrale Benutzerverwaltung.
-
-Die zentrale Verwaltung der Pa"sw"orter ist ein erster Schritt. Um dies zu
-erreichen, mu"s man mit Samba eine Windows NT-Dom"ane betreten. Dazu setzt
-man in der \dateistyle{smb.conf} folgende Parameter:
-
-\begin{verbatim}
-[global]
- workgroup = windows
- security = domain
- password server = *
- encrypt passwords = yes
- name resolve order = wins bcast
-\end{verbatim}
-
-Im Kapitel \ref{smb-sitzungen} wurde beschrieben, wie eine SMB-Sitzung
-aufgebaut wird. Dort wurde auf den Unterschied zwischen \param{security
-= share} und \param{security = user} eingegangen. \param{security = domain}
-verh"alt sich aus der Sicht eines Clients genau wie \param{security = user},
-es wird vom Benutzer im Session
-Setup ein Benutzername, eine Dom"ane und ein Kennwort verlangt. Ist das
-Kennwort nicht korrekt, so wird der Benutzer zur"uckgewiesen. Der Parameter
-\param{security = domain} bewirkt nun, da"s das Pa"swort nicht wie bei
-\param{security = user} in der lokalen \dateistyle{smbpasswd} nachgesehen
-wird, sondern an einen PDC weitergeleitet wird. Dieser entscheidet dann, ob
-das Pa"swort korrekt ist oder nicht. Best"atigt der PDC das Pa"swort,
-akzeptiert Samba den Benutzer. Kann der PDC die Benutzeridentit"at nicht
-best"atigen, macht Samba einen zweiten Versuch anhand der lokalen
-\dateistyle{smbpasswd}. Damit kann man es erreichen, da"s f"ur Administratoren
-der Zugriff auf den Sambaserver noch m"oglich ist, falls einmal kein
-Dom"anencontroller verf"ugbar sein sollte.
-
-Zus"atzlich zu \param{security = domain} gibt es noch
-\param{security = server}. Diese Einstellung ist jedoch nicht mehr zu
-empfehlen, dazu mehr am Ende des Kapitels.
-
-F"ur den Parameter \param{password server} gibt es zwei
-M"oglichkeiten. Entweder man setzt ihn auf * wie im Beispiel
-geschehen. Dann sucht sich Samba mit NT-konformen Mitteln selbst den
-PDC oder einen BDC, um Benutzer zu authentifizieren. Man kann aber
-auch eine Liste von NetBIOS-Namen angeben, mit denen Samba arbeiten
-soll. In beiden F"allen ist es wichtig, da"s die Namensaufl"osung
-einwandfrei funktioniert. Samba mu"s in der Lage sein, einen
-Dom"anencontroller f"ur die Authentifizierung zu finden. Dies ist eine
-der wenigen Stellen, bei denen Samba als NetBIOS-Client arbeitet.
-Daher ist es hier m"oglicherweise n"otig, die \param{name resolve
- order} korrekt zu setzen. Insbesondere ist dies wichtig, wenn die
-Namen der PDCs im DNS bereits vergeben sind und vielleicht auf andere
-Maschinen zeigen als die entsprechenden NetBIOS-Namen.
-
-Um f"ur bestimmte Benutzer nicht auf den PDC angewiesen zu sein,
-versucht Samba bei einem erfolglosen Versuch der Dom"anenanmeldung
-zus"atzlich, den Benutzer in der \dateistyle{smbpasswd} zu finden.
-Damit kann der Server mit m"oglicherweise nicht aktuellen Pa"sw"ortern
-funktionsf"ahig gehalten werden, auch wenn der PDC einmal ausfallen
-sollte.
-
-Samba mu"s, um Pa"sw"orter an den PDC weiterzuleiten, genau wie eine
-NT-Workstation ein Computerkonto auf dem PDC besitzen und die Dom"ane
-betreten. Das Computerkonto kann auf dem PDC mit dem Servermanager
-oder mit dem Kommando
-
-\begin{verbatim}
-net computer <name> /add
-\end{verbatim}
-
-auf der Kommandozeile erledigt werden. Danach kann Samba mit dem
-Aufruf
-
-\begin{verbatim}
-smbclient -j DOMAIN -r PDCNAME
-\end{verbatim}
-
-die Dom"ane betreten. Seit Samba 2.2.2 ist es zus"atzlich m"oglich,
-das Computerkonto wie von einer NT Workstation aus beim Betreten der
-Dom"ane automatisch erstellen zu lassen. Dies geschieht, indem man dem
-Aufruf von \prog{smbpasswd -j} noch einen berechtigten Benutzer
-mitgibt:
-
-\begin{verbatim}
-smbclient -j DOMAIN -r PDCNAME -U Administrator
-\end{verbatim}
-
-\prog{smbclient} erfragt das Pa"swort des Dom"anenadministrators. Nach
-Eingabe des Pa"swortes wird das Computerkonto auf dem PDC erstellt und
-das entsprechende Pa"swort korrekt gesetzt.
-
-Ist Samba Dom"anenclient, so wird das Pa"swort zum Computerkonto in
-der Datei \dateistyle{secrets.tdb} abgespeichert. Diese
-"ubernimmt damit die Aufgabe der Datei
-\dateistyle{DOMAIN.MACHINE.mac}, die es bis Samba 2.0 gab. Geht diese
-Datei verloren, mu"s die Dom"ane neu betreten werden. Dies kann durch
-Entfernen und wieder Hinzuf"ugen zur Dom"ane mit dem Servermanager und
-nachfolgendes \prog{smbpasswd -j} oder durch ein automatisches
-Erstellen des Computerkontos geschehen.
-
-\todo{allow trusted domains}
-
-Mit der Dom"anenmitgliedschaft wird der Sambaserver nur von der
-Pa"swortverwaltung befreit. Um die Benutzer und Gruppen mu"s er sich
-weiterhin selbst k"ummern. Eine gewisse Erleichterung kann dabei das
-\param{add user script} bringen, das bei Samba als PDC daf"ur gesorgt
-hat, die Computerkonten in der \param{/etc/passwd} automatisch zu
-erstellen. Ist Samba Dom"anenmitglied, so wird bei einer
-Benutzeranfrage auf den Server zun"achst der PDC nach der Richtigkeit
-des Pa"swortes befragt. Best"atigt dieser das Pa"swort und will der
-Benutzer dann auf das Dateisystem des Sambaservers zugreifen, so wird
-eine Unix UID ben"otigt, Samba schaut in die \dateistyle{/etc/passwd}.
-Findet Samba dort trotz erfolgreicher Anmeldung am PDC keinen
-Benutzer, so wird das \param{add user script} mit entsprechenden
-Argumenten aufgerufen, um den Benutzer zu erstellen.
-
-Damit mu"s man sich teilweise nicht mehr um die Verwaltung der
-Benutzer auf dem Sambaserver k"ummern. Teilweise deswegen, da von dem
-neu anzulegenden Benutzer ausschlie"slich der Name bekannt ist. Es
-fehlt jegliche Information dar"uber, in welchen Gruppen sich der
-Benutzer in der Dom"ane befindet. Diese Einschr"ankung macht eine
-Rechteverwaltung auf dem Sambaserver sehr schwierig bis unm"oglich.
-
-Unter Unix gibt es mehrere M"oglichkeiten, "uber Rechnergrenzen hinweg die
-Benutzerdatenbanken zu synchronisieren. Das reicht vom unsicheren NIS bis hin
-zur skriptgesteuerten Verteilung der Dateien \dateistyle{/etc/passwd} und
-\dateistyle{/etc/group} "uber rsync und ssh. Setzt man f"ur die Datei- und
-Druckdienste komplett auf Unix mit Samba, kann man so eine zentrale
-Verwaltung der Server erreichen. Die \dateistyle{smbpasswd} mu"s dabei in die
-Verteilung der Benutzerdatenbanken nicht mit einbezogen werden, da hierf"ur
-eine Dom"ane aufgebaut werden kann. Einer der Server wird zum
-Dom"anencontroller erkl"art, die anderen Server sind ganz normale
-Mitgliedsserver, die die Pa"sw"orter vom Dom"anencontroller "uberpr"ufen lassen.
-
-\subsection{Hintergrund: \param{security = server}}
-
-Vor Samba 2.0 gab es f"ur die zentrale Verwaltung von Pa"sw"ortern nur
-die M"oglichkeit, \param{security = server} zu setzen. Damit konnte
-ein Sambaserver sehr einfach die Anmeldung von einem weiteren Server
-oder einer NT Workstation beziehen. Samba 2.0 und 2.2 beherrschen
-diese M"oglichkeit immer noch, man sollte jedoch strikt von ihrer
-Nutzung abraten, da sie erhebliche Probleme mit sich bringt.
-\param{security = server} nutzt nicht das Dom"anencontrollerprotokoll,
-sondern leitet den Benutzernamen und das Pa"swort an einen Server
-weiter. Dies ist im Prinzip nicht schlecht, birgt aber ein subtiles
-Problem. Setzt man keine verschl"usselten Pa"sw"orter ein, verschicken
-viele Clients die Pa"sw"orter in Gro"sbuchstaben. Verlangt der
-Pa"swortserver nun verschl"usselte Pa"sw"orter, mu"s Samba raten. Dies
-kostet Last und Zeit. Setzt man auf dem Sambaserver verschl"usselte
-Pa"sw"orter ein, handelt man sich ein noch subtileres Problem ein. Um
-das zu verstehen, sollte man sich das Kapitel \ref{passwoerter} auf
-jeden Fall genau angesehen haben.
-
-In der Antwort zur Anfrage Negotiate Protocol liefert der Server dem
-Client eine Herausforderung. Im Session Setup mu"s der Client die mit
-dem Pa"swort verschl"usselte Herausforderung liefern. Will Samba dies
-nun gegen"uber einem Pa"swortserver machen, so mu"s er zun"achst einen
-Negotiate Protocol absetzen, um vom Pa"swortserver eine
-Herausforderung zu erhalten. Diese Herausforderung liefert er seinem
-Client direkt weiter, damit dieser sie dann mit dem Pa"swort
-verschl"usseln kann. Da es pro Verbindung vom Client zum Server nur
-einen Negotiate Protocol Request gibt, gilt die Herausforderung f"ur
-die gesamte Verbindung. Viele Clients setzen aber mehrere Session
-Setups "uber die gleiche Verbindung ab. Damit der Sambaserver zwischen
-Client und Pa"swortserver immer mit der gleichen Herausforderung
-arbeiten kann (der Client sieht nur diese eine Herausforderung), mu"s
-er zum Pa"swortserver st"andig eine Verbindung offen halten. Br"ache
-diese Verbindung ab, bek"ame der Sambaserver vom Pa"swortserver eine
-neue Herausforderung mitgeteilt. Der Sambaserver hat leider keine
-M"oglichkeit, den Client dazu zu zwingen, eine neue Herausforderung zu
-verlangen. Die einzige M"oglichkeit ist, die Verbindung zum Client
-abzubrechen, um einen neuen Negotiate Protocol zu verlangen. Damit
-gibt es zwei Probleme:
-
-\begin{itemize}
-\item Pro Clientsystem mu"s der Sambaserver st"andig eine Verbindung
-zum Pa"swortserver offenhalten. Damit werden auf dem Pa"swortserver
-erhebliche Resourcen gebunden.
-\item Das Netz wird au"serordentlich instabil, sollte sich der
-Pa"swortserver entscheiden, diese vielen nicht besonders aktiven
-Verbindungen abzubrechen. Clients werden sich am Sambaserver
-erneut anmelden m"ussen.
-\end{itemize}
-
-Das Dom"anencontrollerprotokoll l"ost diese beiden Probleme, indem es
-dem Sambaserver erlaubt, sich eine eigene Herausforderung pro Client
-auszudenken und diese bei der Netzwerkanmeldung beim PDC
-mitzuschicken. Um kein Sicherheitsproblem aufkommen zu lassen, mu"s
-diese Netzwerkanmeldung vom Sambserver zum PDC verschl"usselt sein,
-daher das Computerkonto, dessen Pa"swort als Schl"ussel f"ur die
-symmetrische Verschl"usselung zwischen Sambaserver und PDC verwendet
-wird.
-
-\section{winbind}
-
-Wenn man Samba als Dom"anenmitglied betreibt, hat man die gr"o"ste
-H"urde zu einer problemlosen Integration bereits genommen: Die
-Pa"swortverwaltung. Jeder Benutzer kann sein Pa"swort in der Dom"ane
-"andern, und die "Anderung wird sofort auf allen Dom"anenmitgliedern
-sichtbar. Ein Problem bleibt jedoch bestehen. Man mu"s auf den
-Sambaservern, die Dom"anenmiglieder sind, die Benutzer
-nachpflegen. Wird ein neuer Benutzer in der Dom"ane angelegt, oder
-werden Gruppenmitgliedschaften ge"andert, mu"s dies manuell auf den
-Sambaservern eingetragen werden. Ist auch der Primary Domain Cotroller
-ein Sambaserver, kann man sich mit dem Network Information System NIS
-behelfen, aber wenn die Benutzerdatenbank auf einem echten NT-Server
-liegt, ist dieser Weg verschlossen.
-
-Eine wirklich zwischen Windows NT und Unix vereinheitlichte
-Benutzerdatenbank bietet seit Samba 2.2.2 der D"amon
-\defin{winbind}. Er erm"oglicht die volle Einbindung eines Unixsystems
-in eine NT-Dom"ane. Voraussetzung daf"ur ist die Unterst"utzung der
-\prog{nsswitch}-Module. Momentan bieten dies Linux und Solaris. Die
-anderen von Samba unterst"utzten Unixsysteme bleiben au"sen vor.
-
-\subsection{nsswitch-Module}
-
-Viele Programme unter Unix m"ussen auf Datenbanken im Verzeichnis
-\dateistyle{/etc} zugreifen. Beispielsweise mu"s \prog{ls -l} den
-Dateibesitzer, der in der Datei nur in numerischer Form vorliegt, in
-einen Benutzernamen "ubersetzen. Dazu mu"s die numerische User-ID in
-der Datei \dateistyle{/etc/passwd} gesucht werden. Da"s diese
-"Ubersetzung tats"achlich stattfindet, kann man leicht folgenderma"sen
-"uberpr"ufen. Man mu"s nur testweise die Leserechte f"ur
-\username{others} von der Datei \dateistyle{/etc/passwd} mit
-\prog{chmod o-r /etc/paswd} wegnehmen und \prog{ls -l} aufrufen. Die
-Dateibesitzer werden nur noch numerisch angezeigt\footnote{Sollte dies
-nicht spontan funktionieren, kann der \prog{nscd} schuld sein. Siehe
-hierzu Seite \pageref{nscd}.}
-
-Sauber geschriebene Programme greifen nicht direkt auf die Dateien in
-\dateistyle{/etc} zu, sondern durch Bibliotheksaufrufe wie beispielsweise
-\prog{getpwuid(2)}. Seit der glibc-Version 2 werden diese Bibliotheksaufrufe
-in dynamisch geladenen Modulen implementiert. Gesteuert werden diese Module
-"uber die Datei \dateistyle{/etc/nsswitch.conf}. F"ur jede der Dateien in
-\dateistyle{/etc}, die von allgemeinem Interesse ist, gibt es eine
-Zeile in der \dateistyle{/etc/nsswitch.conf}. Beispielsweise wird der
-Zugriff auf die Datei \dateistyle{/etc/passwd} "uber die Zeile
-
-\begin{verbatim}
-passwd: compat
-\end{verbatim}
-
-\noindent oder
-
-\begin{verbatim}
-passwd: files nis
-\end{verbatim}
-
-\noindent gesteuert. Durch die erste Version wird ein
-Kompatibilit"atsmodul zum Zugriff herangezogen, die zweite Variante
-legt explizit fest, da"s zuerst in der lokalen Datei
-\prog{/etc/passwd} nach Benutzern gesucht werden soll. Schl"agt dies
-fehl, wird das NIS befragt.
-
-Wie funktioniert diese Steuerung? Die Option \param{compat} bewirkt,
-da"s zur Laufzeit eines Programms die dynamische Bibliothek
-\dateistyle{/lib/libnss\_{\bfseries compat}.so.2} geladen wird und die
-Anfrage beantworten mu"s. \param{files} und \param{nis} beziehen sich
-entsprechend auf die Dateien \dateistyle{/lib/libnss\_{\bfseries
- files}.so.2} und \dateistyle{/lib/libnss\_{\bfseries nis}.so.2}.
-
-\prog{winbind} besteht aus zwei Teilen: Einer Datei
-\dateistyle{libnss\_winbind.so} und einem D"amon \prog{winbind}. In
-den Samba-Quellen findet sich der winbind unter
-\dateistyle{source/nsswitch}. Dort wird auch die Datei
-\dateistyle{libnss\_winbind.so} abgelegt. Zur Installation mu"s sie
-manuell nach \dateistyle{/lib} kopiert werden:
-
-\begin{verbatim}
-cp source/nsswitch/libnss_winbind.so /lib/libnss_winbind.so.2
-\end{verbatim}
-
-Der \prog{winbindd} selbst wird automatisch mit im
-\dateistyle{sbin}-Unterverzeichnis von Samba installiert.
-
-\subsection{Konfiguration von Winbind}
-
-Um Winbind zu aktivieren, m"ussen in der Datei
-\dateistyle{/etc/nsswitch.conf} die beiden Zeilen f"ur \param{passwd}
-und \param{group} durch die Angabe \param{winbind} erg"anzt werden,
-etwa so:
-
-\begin{verbatim}
-# /etc/nsswitch.conf
-passwd: files winbind
-group: files winbind
-\end{verbatim}
-
-Damit werden Benutzer und Gruppen zuerst in den lokalen Dateien
-gesucht. Danach wird der \prog{winbindd} befragt, der im Hintergrund
-laufen mu"s.
-
-F"ur die Konfiguration des \prog{winbindd} mu"s Samba ein normales
-Dom"anenmitglied sein. Siehe hierzu Kapitel \ref{domain-member}. Der
-\prog{winbindd} ben"otigt in der \dateistyle{/etc/smb.conf} einige
-zus"atzliche Parameter. Eine vollst"andige Beispielkonfiguration ist
-die folgende:
-
-\begin{verbatim}
-; Samba als Domaenenmitglied
-workgroup = windows
-security = domain
-password server = *
-encrypt passwords = yes
-
-; Winbind-Konfiguration
-winbind separator = +
-winbind uid = 10000-20000
-winbind gid = 10000-20000
-template shell = /bin/bash
-template homedir = /home/%D/%u
-\end{verbatim}
-
-Die Parameter bedeuten im einzelnen:
-
-\begin{description}
-
-\item[winbind separator:] Unter Windows wird ein vollst"andiger
- Benutzername mit Dom"ane in der Form
- \username{DOMAENE\textbackslash{}benutzername} angegeben. Unter Unix
- hat dies Nachteile, da der Backslash \textbackslash{} f"ur die Shell
- eine Sonderbedeutung hat. Daher kann man den Trenner zwischen
- Dom"ane und Benutzername separat konfigurieren. Als unkritisch
- erweist sich das +-Zeichen. Ein Benutzer wird somit als
- \username{DOMAENE+benutzername} angegeben.
-
-\item[winbind uid:] Der \prog{winbindd} mu"s dynamisch f"ur
- Dom"anenbenutzer numerische User-IDs vergeben. Um dies tun zu
- k"onnen, wird ihm mit dem Parameter \param{winbind uid} eine Menge
- von User-IDs "ubergeben, die nicht in der \dateistyle{/etc/passwd}
- oder im NIS verwendet werden. Wird auf einen Benutzernamen das erste
- Mal zugegriffen, w"ahlt der \prog{winbindd} f"ur diesen Benutzer aus
- seinem Pool die n"achste freie User-ID aus und speichert diese
- Zuordnung fest in der Datei \dateistyle{winbindd\_idmap.tdb}.
-
-\item[winbind gid:] F"ur Group-IDs gilt das gleiche wie f"ur User-IDs.
-
-\item[template shell:] Der Primary Domain Controller kennt das Konzept
- der Login-Shell nicht. Diese mu"s zentral f"ur alle Winbind-Benutzer
- in der \dateistyle{smb.conf} vergeben werden.
-
-\item[template homedir:] Auch ein Heimatverzeichnis wird in der SAM
- von Windows nicht abgespeichert und mu"s in der
- \dateistyle{smb.conf} vorgegeben werden. Hierbei sollte man auf
- jeden Fall die Dom"ane des Benutzers in den Pfad mit aufnehmen, um
- Namenskollisionen bei Vertrauensstellungen zu behandeln. Der
- Benutzer \username{schmidt} in der Dom"ane \username{GOE} sollte ein
- anderes Heimatverzeichnis bekommen als der Benutzer
- \username{schmidt} in der Dom"ane \username{HD}. Die
- Heimatverzeichnisse werden selbstverst"andlich nicht automatisch
- erzeugt, sondern m"ussen manuell angelegt und den Benutzern
- "ubergeben werden. Auf einem reinen Fileserver mit gemeinsamen
- Dateien ist es jedoch m"oglicherweise nicht notwendig, f"ur jeden
- Benutzer eigene Heimatverzeichnisse anzulegen.
-\end{description}
-
-Mit diesen Einstellungen kann man den \prog{winbindd} zus"atzlich zu
-\prog{smbd} und \prog{nmbd} starten, die ebenfalls laufen m"ussen.
-
-\subsection{Winbindd abfragen: wbinfo}
-
-Laufen \prog{winbindd}, \prog{smbd} und \prog{nmbd} in der Dom"ane,
-kann man das ganze testen. Das Utility zum Testen hei"st
-\prog{wbinfo}. Der wichtigste Test ist der Aufruf \prog{wbinfo -t}.
-Damit wird die Verbindung zum Dom"anencontroller gepr"uft,
-\prog{winbindd} sucht den PDC und meldet sich mit dem Workstationkonto
-an. Das Programm \prog{wbinfo} mu"s die Ausgabe \texttt{Secret is
- good} geben. Gibt \prog{wbinfo} diese Ausgabe, so ist der
-\prog{winbindd} g"ultiges Dom"anenmitglied und kann Informationen vom
-PDC abrufen.
-
-\prog{wbinfo} kennt noch eine Reihe weiterer Parameter, mit denen die
-Benutzerdatenbank der Dom"ane abgefragt werden kann. Die Ausgabe des
-Aufrufts \prog{wbinfo} ohne Parameter gibt einen Hilfetext mit den
-verf"ugbaren Optionen aus.
-
-Schl"agt \prog{wbinfo -t} fehl, so mu"s die Dom"anenmitgliedschaft
-"uberpr"uft werden. Hierzu siehe Kapitel \ref{domain-member}.
-
-Verl"auft der Test mit \prog{wbinfo -t} erfolgreich, so kann man sich
-s"amtliche verf"ugbaren Benutzer mit \prog{getent passwd} und die
-Gruppen mit \prog{getent group} auflisten lassen.
-
-\todo{valid users = @DOMAIN+group}
-
-\todo{pam\_winbind}
-
-\subsection{nscd}
-\label{nscd}
-
-Unter Linux ist der Name Service Caching Daemon \prog{nscd} ist ein
-Programm, mit dem s"amtliche Abfragen durch den nsswitch-Mechanismus
-gecached werden k"onnen. Der \prog{nscd} macht Sinn, wenn diese
-Anfragen sehr lange dauern. Dies kann der Fall sein, wenn die Dateien
-sehr gro"s sind, etwa wenn hunderte von Usern im System angelegt sind.
-Ein anderer Verz"ogerungsgrund ist die Abfrage von Benutzerdaten "uber
-ein Netzwerk beim Einsatz von NIS.
-
-Ein Nachteil des \prog{nscd} kann sein, da"s er "Anderungen in der
-Benutzerdatenbank nicht schnell genug mitbekommt. Insbesondere beim
-Testen des \prog{winbind} kann dies sehr hinderlich sein. Wer
-beispielsweise folgendes schon einmal erlebt hat, hat ein Problem mit
-dem \prog{nscd}:
-
-\begin{verbatim}
-delphin:~ # useradd -m vl
-delphin:~ # passwd vl
-passwd: Unknown user vl
-delphin:~ #
-\end{verbatim}
-
-In diesem Falle sollte man den \prog{nscd} schleunigst killen und
-daf"ur sorgen, da"s er beim n"achsten booten nicht wiederkommt.
-
-
-\section{smbcontrol}
-
-Bis zur Version 2.0 hatte man relativ wenig M"oglichkeiten, in das
-laufende Samba einzugreifen. Man konnte mit dem Signal \texttt{USR1}
-den Debuglevel um einen Punkt erh"ohen und mit \texttt{USR2} um einen
-Punkt erniedrigen. Dar"uber hinaus blieb h"aufig nur die M"oglichkeit,
-einzelne Sambaprozesse oder sogar das ganze Samba herunterzufahren,
-wenn man Konfigurations"anderungen vorgenommen hatte. Mit Samba 2.2
-gibt es f"ur diese Anwendungen ein neues Werkzeug: \prog{smbcontrol}.
-\prog{smbcontrol} bietet die M"oglichkeit, einzelne Dinge anzusto"sen.
-\prog{smbcontrol} verschickt hierzu Nachrichten an einzelne
-Sambaprozesse, oder an alle \prog{smbd}s.
-
-Man kann jetzt im Gegensatz zu Samba 2.0 den Debuglevel einzelner
-Prozesse direkt setzen. Dies geschieht wie in folgendem Beispiel:
-
-\begin{verbatim}
-root@server:~ > smbcontrol smbd debuglevel
-Current debug level of PID 4423 is 0
-Current debug level of PID 17392 is 0
-Current debug level of PID 22272 is 0
-root@server:~ > smbcontrol 17392 debug 1
-root@server:~ > smbcontrol smbd debuglevel
-Current debug level of PID 4423 is 0
-Current debug level of PID 17392 is 1
-Current debug level of PID 22272 is 0
-\end{verbatim}
-
-An diesem Beispiel ist deutlich, wie \prog{smbcontrol} zu benutzen
-ist. Als ersten Parameter verlangt \prog{smbcontrol} das Ziel der
-Nachricht, die es verschicken soll. Zweiter Parameter ist die
-Nachricht, die verschickt werden soll. Daran schlie"sen sich dann
-weitere Parameter an, die m"oglicherweise zu der Nachricht geh"oren.
-
-Die Nachrichten im Einzelnen:
-
-\begin{description}
-\item[debug:] Mit dieser Nachricht wird der Debuglevel anhand des
- weiteren Parameters gesetzt.
-\item[debuglevel:] \prog{smbcontrol} liest hiermit den aktuellen
- Debuglevel von Prozessen aus.
-\item[force-election:] Mit dieser Nachricht wird eine Wahl zum Local
- Master Browser erzwungen. Diese Nachricht kann nur an den
- \prog{nmbd} geschickt werden. Der \prog{smbd} hat mit der Wahl
- nichts zu tun.
-\item[ping:] Mit dieser Nachricht k"onnen Prozesse einfach zum
- Antworten bewegt werden. {\bfseries ping} erwartet einen Parameter,
- der die Anzahl der Pings zum Ziel festlegt.
-\item[profile:] Diese Nachricht ist f"ur Entwickler gedacht. Um das
- Profiling zu nutzen, mu"s Samba mit der \prog{configure}-Option
- \texttt{-{}-with-profiling-data} compiliert werden. Dann kann mit
- dieser Nachricht der interne Profiling-Code gesteuert werden. Damit
- k"onnen Entwickler die Teile des Codes bestimmen, in denen am
- meisten Zeit verbraucht wird.
-\item[profilelevel:] Diese Nachricht ist ebenfalls f"ur Entwickler
- gedacht.
-\item[close-share:] Der \prog{smbd} kann mit dieser Nachricht dazu
- bewegt werden, alle Verbindungen zu einer bestimmten Freigabe zu
- beenden, ohne die restlichen Verbindungen zu st"oren. Dies kann
- insbesondere dann sinnvoll sein, wenn "Anderungen an den
- Zugriffsrechten einer Freigabe vorgenommen wurden.
-\item[printer-notify:] Wenn Sie von Windows NT Clients aus mit
- Druckern verbunden sind, nutzen Sie m"oglicherweise das neue
- Drucksystem von Samba. In diesem Fall sind Druckereinstellungen auf
- dem Server gespeichert. "Andern sich diese Einstellungen, k"onnen
- Sie mit dieser Nachricht die momentan verbundenen Clients "uber
- diese "Anderungen informieren.
-\end{description}
-
-\end{document}
diff --git a/docs/textdocs/logo.ps b/docs/textdocs/logo.ps
deleted file mode 100644
index 4fa39aef36..0000000000
--- a/docs/textdocs/logo.ps
+++ /dev/null
@@ -1,344 +0,0 @@
-%!PS-Adobe-3.0
-%%Pages: (atend)
-%%BoundingBox: 0 261 683 580
-%.....................................
-%%Creator: Aladdin Ghostscript 601 (pswrite)
-%%CreationDate: 2000/08/03 14:15:29
-%%DocumentData: Clean7Bit
-%%EndComments
-%%BeginProlog
-% This copyright applies to everything between here and the %%EndProlog:
-% Copyright (C) 2000 Aladdin Enterprises, Menlo Park, CA. All rights reserved.
-%%BeginResource: procset GS_pswrite_ProcSet
-/GS_pswrite_ProcSet 80 dict dup begin
-/!{bind def}bind def/#{load def}!/N/counttomark #
-/rG{3{3 -1 roll 255 div}repeat setrgbcolor}!/G{255 div setgray}!/K{0 G}!
-/r6{dup 3 -1 roll rG}!/r5{dup 3 1 roll rG}!/r3{dup rG}!
-/w/setlinewidth #/J/setlinecap #
-/j/setlinejoin #/M/setmiterlimit #/d/setdash #/i/setflat #
-/m/moveto #/l/lineto #/c/rcurveto #/h{p closepath}!/H{P closepath}!
-/lx{0 rlineto}!/ly{0 exch rlineto}!/v{0 0 6 2 roll c}!/y{2 copy c}!
-/re{4 -2 roll m exch dup lx exch ly neg lx h}!
-/^{3 index neg 3 index neg}!
-/P{N 0 gt{N -2 roll moveto p}if}!
-/p{N 2 idiv{N -2 roll rlineto}repeat}!
-/f{P fill}!/f*{P eofill}!/s{H stroke}!/S{P stroke}!
-/q/gsave #/Q/grestore #/rf{re fill}!
-/Y{initclip P clip newpath}!/Y*{initclip P eoclip newpath}!/rY{re Y}!
-/|={pop exch 4 1 roll 3 array astore cvx exch 1 index def exec}!
-/|{exch string readstring |=}!
-/+{dup type/nametype eq{2 index 7 add -3 bitshift 2 index mul}if}!
-/@/currentfile #/${+ @ |}!
-/Ix{[1 0 0 1 11 -2 roll exch neg exch neg]exch}!
-/,{true exch Ix imagemask}!/If{false exch Ix imagemask}!/I{exch Ix image}!
-/|X{exch string readhexstring |=}!/$X{+ @ |X}!
-/@X{{currentfile ( ) readhexstring pop}}!
-/PS{1 index where{pop cvx exec pop pop}{pop/setpage where
-{pop pageparams 3{exch pop}repeat setpage}{pop pop}ifelse}ifelse}!
-end def
-%%EndResource
-%%EndProlog
-%%Page: 1 1
-%%BeginPageSetup
-/pagesave save def GS_pswrite_ProcSet begin
-612 792 /letter PS
-0.1 0.1 scale
-480 0 translate
-%%EndPageSetup
-mark
-75 w
-4 M
-255 15 0 rG
-481.48 4361.14 m
--66 41.75 -145.25 62.64 -237.74 62.64 c
--24.49 0 -47.76 -3.02 -69.76 -9 c
--31.49 -8.49 -46.23 -21.97 -44.23 -40.43 c
-1.99 -16.99 28.47 -38.2 79.51 -63.66 c
-78.49 -38.96 125.74 -63.66 141.74 -74.15 c
-51.97 -33.95 79.98 -69.9 83.99 -107.81 c
-7 -64.92 -39.99 -117.36 -141.01 -157.3 c
--90.5 -35.94 -199.74 -53.9 -327.74 -53.9 c
--89.01 0 -168.99 7.23 -239.97 21.71 c
--90.53 18.45 -137.02 39.43 -139.51 62.9 c
--0.53 3.48 -0.03 6.97 1.49 10.49 c
-45 140.04 p
-74 -54.26 149.24 -81.39 225.76 -81.39 c
-36.97 0 54.23 12.21 51.74 36.68 c
--3.52 30.41 -24.76 58.85 -63.75 85.31 c
--20.51 12.95 -56.78 36.91 -108.75 71.84 c
--43.51 29.91 -65.24 65.83 -65.24 107.75 c
-0 75.32 60.73 130.69 182.26 166.11 c
-84.49 24.44 182.72 36.68 294.72 36.68 c
-119.48 0 224.24 -16.81 314.24 -50.42 c
-17.25 -164.09 h
-S
-1304.6 4343.04 m
--22.5 -58.8 -50.01 -109.87 -82.5 -153.2 c
--45.5 -60.29 -92.26 -90.44 -140.25 -90.44 c
--35.01 0 -52.5 23.91 -52.5 71.75 c
-0 38.85 12.25 82.94 36.74 132.27 c
-37.5 75.24 91.23 112.86 161.25 112.86 c
-105.76 0 -28.5 -73.24 h
-1108.1 4573.78 m
--132.51 0 -249.26 -30.5 -350.24 -91.5 c
--120 -72.5 -180 -170.77 -180 -294.75 c
-0 -13.51 0.73 -27.51 2.25 -42.01 c
-7.97 -76.5 42.98 -134.24 105 -173.24 c
-53.49 -34.01 120.99 -51 202.5 -51 c
-149.01 0 267.75 57.86 356.25 173.61 c
--51.76 -164.24 426 0 195.76 626.25 p
--169.51 11.25 -404.76 16.88 -705.76 16.88 c
-h
-S
-5755.04 4343.04 m
--22.5 -58.8 -50.01 -109.87 -82.5 -153.2 c
--45.5 -60.29 -92.26 -90.44 -140.25 -90.44 c
--35 0 -52.5 23.91 -52.5 71.75 c
-0 38.85 12.25 82.94 36.74 132.27 c
-37.5 75.24 91.23 112.86 161.25 112.86 c
-105.76 0 -28.5 -73.24 h
-5558.54 4573.78 m
--132.5 0 -249.25 -30.5 -350.24 -91.5 c
--120 -72.5 -180 -170.77 -180 -294.75 c
-0 -13.51 0.73 -27.51 2.26 -42.01 c
-7.96 -76.5 42.97 -134.24 105 -173.24 c
-53.49 -34.01 120.99 -51 202.5 -51 c
-149 0 267.74 57.86 356.25 173.61 c
--51.77 -164.24 426 0 195.77 626.25 p
--169.52 11.25 -404.77 16.88 -705.77 16.88 c
-h
-S
-4670.96 5042.19 -297.33 668.31 -574.48 -685.34 202.89 3.96 -315.84 -1098.47 436.49 0 23.24 59.24 P
-50.5 -49.51 136.75 -74.24 258.75 -74.24 c
-132.01 0 247.99 31.94 348.01 95.83 c
-115.49 73.89 173.26 173.21 173.26 298.01 c
-0 13.95 -0.76 28.19 -2.25 42.66 c
--15.5 147.74 -141.01 221.63 -376.5 221.63 c
--63.01 0 -138.77 -10.64 -227.25 -31.88 c
-123.99 490.32 227.02 9.97 h
-4464.7 4260.71 m
--48.01 -126.3 -109.01 -189.43 -182.99 -189.43 c
--26.51 0 -49.01 3.69 -67.52 11.13 c
--11.02 5.45 -22 10.9 -32.99 16.35 c
-16.49 45.32 p
-35.98 100.05 70.49 166.67 103.51 199.87 c
-28.01 28.21 68 42.33 120 42.33 c
-90.76 0 -47.26 -125.57 h
-S
-3637.84 4406.7 m
--12.01 112.61 -97.53 168.95 -256.52 168.95 c
--199.51 0 -348.49 -20.01 -446.98 -60 c
--56.52 39.99 -147.02 60 -271.5 60 c
--204.52 0 -428.26 -5.77 -671.25 -17.25 c
--196.5 -627.75 436.5 0 23.26 62.26 p
-73.48 195 138.72 313.74 195.74 356.25 c
-32.98 24.99 77.48 37.5 133.5 37.5 c
--19.02 -46.52 -33.25 -85.52 -42.75 -117.01 c
--107.25 -339 442.5 0 24 62.26 p
-45.46 115.99 77.22 192.74 95.24 230.24 c
-30.49 62.49 60.23 104.51 89.24 126.01 c
-32.99 24.99 77.49 37.5 133.5 37.5 c
--19.01 -46.52 -33.25 -85.52 -42.74 -117.01 c
--292.57 -917.2 -223.62 3.05 297.33 -668.31 543.98 656.81 -177.09 2.42 295.99 923.64 p
-16 50.53 21.97 96.09 17.99 136.64 c
-h
-S
-K
-457.11 4402.39 m
--66 41.75 -145.25 62.64 -237.74 62.64 c
--24.49 0 -47.76 -3.02 -69.76 -9 c
--31.49 -8.49 -46.23 -21.97 -44.23 -40.43 c
-1.99 -16.99 28.47 -38.2 79.51 -63.66 c
-78.49 -38.96 125.74 -63.66 141.74 -74.15 c
-51.97 -33.95 79.98 -69.9 83.99 -107.81 c
-7 -64.92 -39.99 -117.36 -141.01 -157.3 c
--90.5 -35.94 -199.74 -53.9 -327.74 -53.9 c
--89.01 0 -168.99 7.23 -239.97 21.71 c
--90.53 18.45 -137.02 39.43 -139.51 62.9 c
--0.53 3.48 -0.03 6.97 1.49 10.49 c
-45 140.04 p
-74 -54.26 149.24 -81.39 225.76 -81.39 c
-36.97 0 54.23 12.21 51.74 36.68 c
--3.52 30.41 -24.76 58.85 -63.75 85.31 c
--20.51 12.95 -56.78 36.91 -108.75 71.84 c
--43.51 29.91 -65.24 65.83 -65.24 107.75 c
-0 75.32 60.73 130.69 182.26 166.11 c
-84.49 24.44 182.72 36.68 294.72 36.68 c
-119.48 0 224.24 -16.81 314.24 -50.42 c
-17.25 -164.09 p f
-45 w
-0 255 r6
-457.11 4402.39 m
--66 41.75 -145.25 62.64 -237.74 62.64 c
--24.49 0 -47.76 -3.02 -69.76 -9 c
--31.49 -8.49 -46.23 -21.97 -44.23 -40.43 c
-1.99 -16.99 28.47 -38.2 79.51 -63.66 c
-78.49 -38.96 125.74 -63.66 141.74 -74.15 c
-51.97 -33.95 79.98 -69.9 83.99 -107.81 c
-7 -64.92 -39.99 -117.36 -141.01 -157.3 c
--90.5 -35.94 -199.74 -53.9 -327.74 -53.9 c
--89.01 0 -168.99 7.23 -239.97 21.71 c
--90.53 18.45 -137.02 39.43 -139.51 62.9 c
--0.53 3.48 -0.03 6.97 1.49 10.49 c
-45 140.04 p
-74 -54.26 149.24 -81.39 225.76 -81.39 c
-36.97 0 54.23 12.21 51.74 36.68 c
--3.52 30.41 -24.76 58.85 -63.75 85.31 c
--20.51 12.95 -56.78 36.91 -108.75 71.84 c
--43.51 29.91 -65.24 65.83 -65.24 107.75 c
-0 75.32 60.73 130.69 182.26 166.11 c
-84.49 24.44 182.72 36.68 294.72 36.68 c
-119.48 0 224.24 -16.81 314.24 -50.42 c
-17.25 -164.09 h
-S
-13 16 255 rG
-1280.22 4384.29 m
--22.5 -58.8 -50.01 -109.87 -82.5 -153.2 c
--45.5 -60.29 -92.25 -90.44 -140.24 -90.44 c
--35.01 0 -52.5 23.91 -52.5 71.75 c
-0 38.85 12.24 82.94 36.74 132.27 c
-37.5 75.24 91.23 112.86 161.25 112.86 c
-105.76 0 -28.51 -73.24 h
-1083.73 4615.03 m
--132.51 0 -249.26 -30.5 -350.25 -91.5 c
--120 -72.5 -180 -170.77 -180 -294.75 c
-0 -13.51 0.73 -27.51 2.25 -42.01 c
-7.97 -76.5 42.98 -134.24 105 -173.24 c
-53.49 -34.01 120.99 -51 202.5 -51 c
-149 0 267.74 57.86 356.25 173.61 c
--51.77 -164.24 426.01 0 195.76 626.25 p
--169.51 11.25 -404.77 16.88 -705.76 16.88 c
-f
-0 255 r6
-1280.22 4384.29 m
--22.5 -58.8 -50.01 -109.87 -82.5 -153.2 c
--45.5 -60.29 -92.25 -90.44 -140.24 -90.44 c
--35.01 0 -52.5 23.91 -52.5 71.75 c
-0 38.85 12.24 82.94 36.74 132.27 c
-37.5 75.24 91.23 112.86 161.25 112.86 c
-105.76 0 -28.51 -73.24 h
-1083.73 4615.03 m
--132.51 0 -249.26 -30.5 -350.25 -91.5 c
--120 -72.5 -180 -170.77 -180 -294.75 c
-0 -13.51 0.73 -27.51 2.25 -42.01 c
-7.97 -76.5 42.98 -134.24 105 -173.24 c
-53.49 -34.01 120.99 -51 202.5 -51 c
-149 0 267.74 57.86 356.25 173.61 c
--51.77 -164.24 426.01 0 195.76 626.25 p
--169.51 11.25 -404.77 16.88 -705.76 16.88 c
-h
-S
-13 16 255 rG
-5730.66 4384.29 m
--22.5 -58.8 -50.01 -109.87 -82.5 -153.2 c
--45.49 -60.29 -92.25 -90.44 -140.24 -90.44 c
--35.01 0 -52.5 23.91 -52.5 71.75 c
-0 38.85 12.25 82.94 36.74 132.27 c
-37.5 75.24 91.23 112.86 161.25 112.86 c
-105.76 0 -28.51 -73.24 h
-5534.17 4615.03 m
--132.51 0 -249.26 -30.5 -350.24 -91.5 c
--120.01 -72.5 -180.01 -170.77 -180.01 -294.75 c
-0 -13.51 0.74 -27.51 2.26 -42.01 c
-7.97 -76.5 42.98 -134.24 105 -173.24 c
-53.5 -34.01 121 -51 202.5 -51 c
-149.01 0 267.75 57.86 356.25 173.61 c
--51.77 -164.24 426.01 0 195.76 626.25 p
--169.51 11.25 -404.76 16.88 -705.76 16.88 c
-f
-0 255 r6
-5730.66 4384.29 m
--22.5 -58.8 -50.01 -109.87 -82.5 -153.2 c
--45.49 -60.29 -92.25 -90.44 -140.24 -90.44 c
--35.01 0 -52.5 23.91 -52.5 71.75 c
-0 38.85 12.25 82.94 36.74 132.27 c
-37.5 75.24 91.23 112.86 161.25 112.86 c
-105.76 0 -28.51 -73.24 h
-5534.17 4615.03 m
--132.51 0 -249.26 -30.5 -350.24 -91.5 c
--120.01 -72.5 -180.01 -170.77 -180.01 -294.75 c
-0 -13.51 0.74 -27.51 2.26 -42.01 c
-7.97 -76.5 42.98 -134.24 105 -173.24 c
-53.5 -34.01 121 -51 202.5 -51 c
-149.01 0 267.75 57.86 356.25 173.61 c
--51.77 -164.24 426.01 0 195.76 626.25 p
--169.51 11.25 -404.76 16.88 -705.76 16.88 c
-h
-S
-K
-4646.58 5083.44 -297.33 668.31 -574.48 -685.34 202.9 3.96 -315.85 -1098.47 436.5 0 23.23 59.24 P
-50.51 -49.51 136.76 -74.24 258.75 -74.24 c
-132.01 0 248 31.94 348.02 95.83 c
-115.48 73.89 173.26 173.21 173.26 298.01 c
-0 13.95 -0.76 28.19 -2.26 42.66 c
--15.5 147.74 -141 221.63 -376.49 221.63 c
--63.02 0 -138.78 -10.64 -227.26 -31.88 c
-123.99 490.32 227.02 9.97 h
-4440.33 4301.96 m
--48.02 -126.3 -109.01 -189.43 -182.99 -189.43 c
--26.51 0 -49.01 3.69 -67.53 11.13 c
--11.01 5.45 -22 10.9 -32.99 16.35 c
-16.5 45.32 p
-35.97 100.05 70.48 166.67 103.5 199.87 c
-28.01 28.21 68 42.33 120 42.33 c
-90.77 0 -47.26 -125.57 p f
-0 255 r6
-4646.58 5083.44 -297.33 668.31 -574.48 -685.34 202.9 3.96 -315.85 -1098.47 436.5 0 23.23 59.24 P
-50.51 -49.51 136.76 -74.24 258.75 -74.24 c
-132.01 0 248 31.94 348.02 95.83 c
-115.48 73.89 173.26 173.21 173.26 298.01 c
-0 13.95 -0.76 28.19 -2.26 42.66 c
--15.5 147.74 -141 221.63 -376.49 221.63 c
--63.02 0 -138.78 -10.64 -227.26 -31.88 c
-123.99 490.32 227.02 9.97 h
-4440.33 4301.96 m
--48.02 -126.3 -109.01 -189.43 -182.99 -189.43 c
--26.51 0 -49.01 3.69 -67.53 11.13 c
--11.01 5.45 -22 10.9 -32.99 16.35 c
-16.5 45.32 p
-35.97 100.05 70.48 166.67 103.5 199.87 c
-28.01 28.21 68 42.33 120 42.33 c
-90.77 0 -47.26 -125.57 h
-S
-K
-3613.46 4447.95 m
--12.01 112.61 -97.53 168.95 -256.52 168.95 c
--199.51 0 -348.49 -20.01 -446.98 -60 c
--56.51 39.99 -147.01 60 -271.5 60 c
--204.52 0 -428.26 -5.77 -671.25 -17.25 c
--196.49 -627.75 436.49 0 23.27 62.26 p
-73.47 195 138.72 313.74 195.73 356.25 c
-32.99 24.99 77.49 37.5 133.5 37.5 c
--19.01 -46.52 -33.25 -85.52 -42.74 -117.01 c
--107.26 -339 442.5 0 24 62.26 p
-45.47 115.99 77.22 192.74 95.24 230.24 c
-30.5 62.49 60.24 104.51 89.24 126.01 c
-32.99 24.99 77.49 37.5 133.51 37.5 c
--19.02 -46.52 -33.25 -85.52 -42.75 -117.01 c
--292.57 -917.2 -223.62 3.05 297.33 -668.31 543.99 656.81 -177.1 2.42 296 923.64 p
-15.99 50.53 21.97 96.09 17.98 136.64 c
-f
-0 255 r6
-3613.46 4447.95 m
--12.01 112.61 -97.53 168.95 -256.52 168.95 c
--199.51 0 -348.49 -20.01 -446.98 -60 c
--56.51 39.99 -147.01 60 -271.5 60 c
--204.52 0 -428.26 -5.77 -671.25 -17.25 c
--196.49 -627.75 436.49 0 23.27 62.26 p
-73.47 195 138.72 313.74 195.73 356.25 c
-32.99 24.99 77.49 37.5 133.5 37.5 c
--19.01 -46.52 -33.25 -85.52 -42.74 -117.01 c
--107.26 -339 442.5 0 24 62.26 p
-45.47 115.99 77.22 192.74 95.24 230.24 c
-30.5 62.49 60.24 104.51 89.24 126.01 c
-32.99 24.99 77.49 37.5 133.51 37.5 c
--19.02 -46.52 -33.25 -85.52 -42.75 -117.01 c
--292.57 -917.2 -223.62 3.05 297.33 -668.31 543.99 656.81 -177.1 2.42 296 923.64 p
-15.99 50.53 21.97 96.09 17.98 136.64 c
-h
-S
-cleartomark end showpage pagesave restore
-%%PageTrailer
-%%Trailer
-%%Pages: 1
-%%EOF