basic howto
[kai/samba.git] / docs / textdocs / kurs.tex
1 \documentclass{scrartcl}
2 \usepackage{pslatex}
3 \usepackage[dvips,colorlinks=true,
4             pdfauthor={Volker Lendecke, Service Network GmbH},
5             pdftitle={Kursskript Samba},
6             pdfsubject={Samba},
7             pdfkeywords={samba,training}
8             ]{hyperref}
9 \usepackage[T1]{fontenc}
10 \usepackage{german}
11 \usepackage{pstricks}
12 \usepackage[dvips]{epsfig}
13 \newcommand{\prog}{\texttt}
14 \newcommand{\param}{\texttt}
15 \newcommand{\datei}{\texttt}
16 \newcommand{\nbname}{\texttt}
17 \newcommand{\todo}{\texttt}
18 \newcommand{\defin}{\emph}
19 \hyphenation{Net-BIOS}
20
21 \usepackage{fancyheadings}
22 \pagestyle{fancyplain}
23 \lhead{}
24 \rhead{\thepage}
25 \rfoot{\copyright{} 1999, 2000, Volker Lendecke (http://www.sernet.de/vl/)}
26 \cfoot{}
27
28 \begin{document}
29
30 \title{Kursskript\\[\baselineskip]
31   \epsfig{file=logo.ps,width=6cm}}
32
33 \author{Volker Lendecke\\
34 Samba Team\\
35 Service Network GmbH\\
36 G"ottingen\\
37 http://samba.SerNet.DE/}
38
39 \date{\today}
40
41 \maketitle
42 \thispagestyle{empty}
43
44 \begin{quote}
45   Dieses Dokument ist eine Mitschrift des Sambakurses der Service
46   Network GmbH in G"ottingen. Es gibt einen guten "Uberblick "uber den
47   Kurs und kann gleichzeitig als generelle Einf"uhrung in NetBIOS und
48   Samba dienen.
49 \end{quote}
50
51 \break
52
53 \tableofcontents
54
55 \break
56
57 \section{Einf"uhrung}
58
59 Samba -- Was ist das?
60
61 Kurz gesagt l"a"st Samba jeden Unixrechner in der Netzwerkumgebung von
62 Windows NT erscheinen. Au"serdem lassen sich mit Samba Datei- und
63 Druckfreigaben erstellen. Das hei"st, unter Unix vorhandener
64 Plattenplatz kann ganz normal unter Windows genutzt werden, und unter
65 Unix vorhandene Drucker kann man als Netzwerkdrucker unter Windows
66 ansteuern. Dar"uber hinaus bietet Samba viele Dienste, die sonst nur
67 von Windows NT geleistet werden. Dazu geh"oren:
68
69 \begin{description}
70   
71 \item[WINS Server] Mit Samba kann sehr einfach ein WINS Server
72   eingerichtet werden.
73   
74 \item[Computersuchdienst] Samba als sehr stabiler Server kann alle
75   Aufgaben des Computersuchdienstes "ubernehmen. Die in Windowsumgebungen
76   oft nicht sehr vorhersagbare Netzwerkumgebung kann so etwas 
77   stabiler gemacht werden.
78   
79 \item[Logon Server] F"ur Windows 95/98 ist Samba Logon-Server, kann
80   also die Dom"anenanmeldung f"ur diese Systeme "ubernehmen.
81   
82 \item[PDC] Die Funktionalit"at des Primary Domain Controller ist in
83   einer noch nicht freigegebenen Version implementiert, ist jedoch
84   schon in vielen Installationen im produktiven Einsatz.
85   
86 \item[Diagnosewerkzeuge] Samba bietet eine Reihe von kleinen, aber
87 sehr effektiven Werkzeugen, die die oft m"uhselige Suche nach Fehlern
88 im Netz vereinfachen k"onnen.
89
90 \end{description}
91
92 Samba bietet gegen"uber den bekannten Implementationen des
93 SMB-Protokolls einige Vorteile. Teilweise sind diese Vorteile von Unix
94 geerbt, teilweise sind sie in der Architektur von Samba begr"undet.
95
96 \begin{description}
97   
98 \item[Entfernte Administration] Der gr"o"ste Vorteil von Samba in
99   gr"o"seren Umgebungen ist die M"oglichkeit, die gesamte
100   Administration von der Kommandozeile aus durchzuf"uhren. Damit
101   bekommt man gegen"uber grafischen Oberfl"achen sehr viel bessere
102   M"oglichkeiten, von entfernten Standorten aus zu administrieren.
103   Werkzeuge wie PC Anywhere sind hier deutlich weniger flexibel.
104   
105   Zus"atzlich bietet Samba die M"oglichkeit der grafischen
106   Administration "uber einen Webbrowser. Auch hier ist es unerheblich,
107   wo sich Administrator und Server befinden.
108   
109 \item[Zentrale Konfiguration] Die gesamte Konfiguration von Samba
110   befindet sich in einer einzigen Datei und ist nicht "uber viele
111   Dialogfelder verteilt. Das erleichtert die Administration erheblich.
112   So l"a"st sich eine funktionierende Konfiguration sehr einfach
113   sichern und wieder einspielen.
114   
115 \item[Stabilit"at] Samba erbt von Unix eine hohe Stabilit"at.
116   Unixrechner sind daf"ur ausgelegt, "uber Monate hinweg durchzulaufen
117   und leisten dies auch. Samba als weiterer Proze"s profitiert von
118   dieser hohen Verf"ugbarkeit. Die modulare Struktur von Unix l"a"st
119   es dar"uber hinaus zu, da"s der Serverdienst Samba unabh"angig von
120   allen anderen Systemprozessen eigenst"andig neu gestartet werden
121   kann, sofern hier ein Problem vorliegen sollte.
122   
123   Samba hat eine Architektur, die die Stabilit"at weiter f"ordert.
124   F"ur jede Clientverbindung wird ein eigener Proze"s gestartet.
125   Verursacht also ein Client ein Problem auf Serverseite, dann wird
126   nur dieser Client in Mitleidenschaft gezogen.  Eventuell
127   st"urzt dieser eine Proze"s ab, die anderen werden jedoch 
128   nicht gest"ort.
129   
130 \item[Skalierbarkeit] Samba kann von dem vielzitierten kleinen 386er
131   unter Linux bis hin zu den gr"o"sten heute verf"ugbaren Maschinen
132   jede Hardware optimal ausnutzen. Die Architektur von Samba
133   erm"oglicht es, da"s auch Multiprozessormaschinen optimal
134   ausgelastet werden. Multiprozessormaschinen k"onnen alle Prozessoren dann
135   besch"aftigen, wenn es viele unabh"angige Prozesse im System gibt.
136   Samba erstellt f"ur jeden Client einen Proze"s, der auf einem
137   eigenen Prozessor ablaufen kann.
138   
139 \item[Flexibilit"at] Samba bietet eine riesige Anzahl von
140   Konfigurationsoptionen, die zun"achst einmal "uberw"altigend wirkt.
141   Im Laufe des Kurses wird sich herausstellen, da"s f"ur das
142   Funktionieren von Samba nur sehr wenige Optionen wirklich notwendig
143   sind. Die meisten Optionen werden nur f"ur Spezialf"alle ben"otigt.
144   Durch ein sehr flexibles Schema von Makroersetzungen ist mit Samba
145   sehr viel mehr m"oglich als mit NT. Als Beispiel sei genannt, da"s
146   man sehr einfach einen Sambaserver unter zwei verschiedenen Namen in
147   der Netzwerkumgebung erscheinen lassen kann, und beide virtuelle
148   Server unterschiedlich konfigurieren kann. Zu Testzwecken ist es 
149   sogar m"oglich,
150   zwei unterschiedliche Versionen gleichzeitig auf einer Maschine
151   laufen zu lassen.
152
153 \end{description}
154
155 \section{NetBIOS}
156
157 Sobald Windowsrechner Dateisysteme austauschen, sich gegenseitig in
158 der Netzwerkumgebung sehen oder Drucker freigeben, funktioniert die
159 Kommunikation "uber NetBIOS\footnote{Dies ist in reinen Windows 2000
160   Umgebungen nicht mehr richtig. Microsoft hat die NetBIOS-Ebene
161   abgeschafft, Windows 2000 kommuniziert direkt "uber TCP. Aus
162   Kompatibilit"atsgr"unden kann Windows 2000 jedoch noch "uber NetBIOS
163   kommunizieren.}. NetBIOS ist eine reine
164 Softwareschnittstelle zur Kommunikation von Rechnern. Mit dieser
165 Schnittstelle werden Programmen unterschiedliche Dienste zur
166 Kommunikation zur Verf"ugung gestellt. NetBIOS wurde entworfen, um in
167 kleinen, lokalen Netzen Kommunikation zu erm"oglichen. Dabei lag der
168 Schwerpunkt des Entwurfs auf der Einfachheit der Anwendung. Auf
169 Skalierbarkeit und die Andwendung in Weitverkehrsnetzen wurde beim
170 Design nicht geachtet.
171
172 Die Kommunikation mit NetBIOS wurde in drei Teilbereiche aufgeteilt,
173 den Namensdienst, den Datagramm- und den Sitzungsdienst.
174
175 \begin{description}
176   
177 \item[Namensdienst:] Im Rahmen des Namensdienstes sind die Rechner in
178   der Lage, sich gegenseitig im Netz zu identifizieren. Es sei an
179   dieser Stelle betont, da"s der NetBIOS-Namensdienst nichts mit der
180   Anzeige in der Netzwerkumgebung zu tun hat. Der Computersuchdienst,
181   der f"ur die Netzwerkumgebung zust"andig ist, h"angt jedoch sehr
182   stark von einem korrekt funktionierenden Namensdienst ab.
183
184 \item[Datagrammdienst:] Betrachtet man die Rechnerkommunikation auf
185   dem Netz, so sieht man, da"s die versendeten Daten in einzelne
186   Pakete aufgeteilt werden.
187   Diese einzelnen Pakete werden dann vom Netz nach bestem Bem"uhen an
188   einen Zielrechner ausgeliefert. Geht ein Paket verloren, kann man
189   nichts machen, man bekommt unter Umst"anden nicht einmal eine
190   Benachrichtigung dar"uber, da"s etwas nicht stimmt. Aufeinander
191   folgende Pakete k"onnen in vertauschter Reihenfolge beim Empf"anger
192   ankommen. Es kann sogar sein, da"s Pakete auf dem Weg dupliziert
193   werden, also mehrfach ankommen. Diese Unzuverl"assigkeit des Netzes
194   wird durch den Datagrammdienst an die Benutzerprogramme
195   weitergegeben. Der Datagrammdienst hat jedoch nicht nur Nachteile.
196   Zwei Vorteile sind der geringe Aufwand, mit dem Pakete verschickt
197   werden k"onnen, und die M"oglichkeit, ein Datagramm an mehrere
198   Rechner gleichzeitig zu verschicken. Die Applikation mu"s selbst
199   entscheiden, wie sie mit der Unzuverl"assigkeit des Dienstes
200   klarkommt.
201   
202 \item[Sitzungsdienst:] Die Unzuverl"assigkeit des Netzes ist f"ur
203 bestimmte Applikationen wie Dateitransfer oder Terminalanwendungen
204 nicht akzeptabel. Wenn man eine Datei "ubertr"agt, m"ochte man sicher
205 sein, da"s die Datei komplett und korrekt "ubertragen wurde.  F"ur
206 diese h"oheren Anforderungen wurde der Sitzungsdienst entworfen. Zwei
207 Rechner vereinbaren eine NetBIOS-Sitzung. Die Daten, die "uber diese
208 Verbindung "ubertragen werden, kommen auf jeden Fall an, und zwar in
209 der richtigen Reihenfolge. K"onnen Daten einmal nicht "ubertragen
210 werden, so erh"alt die versendende Applikation eine Fehlermeldung. Die
211 Applikation kann nun versuchen, die abgebrochene Sitzung neu
212 aufzubauen. Dieser Zuverl"assigkeit steht ein erh"ohter Aufwand beim
213 Sitzungsauf- und -abbau gegen"uber.
214
215 \end{description}
216
217 Zwei Rechner, die kommunizieren wollen, m"ussen sich zun"achst gegenseitig
218 identifizieren. NetBIOS sieht hierf"ur bis zu 16 Zeichen lange Namen
219 vor.  Jede Applikation kann f"ur sich beliebig viele Namen reservieren
220 und unter einem dieser Namen Verbindungen aufbauen und Daten austauschen.
221 Diese Reservierung von Namen gilt sowohl f"ur Server, die vom Netz aus
222 erreichbar sein m"ussen, als auch f"ur Clients, die Server im Netz
223 erreichen wollen, da Server wissen m"ussen, wohin die Antworten
224 gehen m"ussen.
225
226 Zwei Anwendungen wollen nun per NetBIOS miteinander kommunizieren.
227 Dazu mu"s zun"achst der Server seine Bereitschaft kundtun,
228 Verbindungen entgegenzunehmen. Dazu meldet er sich im Netz mit seinem
229 Namen an. Diese Anmeldung geschieht per Broadcast, so da"s alle im
230 Netz mith"oren k"onnen. Jeder Rechner ist frei, beliebige Namen im
231 Netz f"ur sich zu beanspruchen, sofern diese noch nicht belegt
232 sind\footnote{Mit dieser Freiheit ergeben sich viele M"oglicheiten,
233   von einem beliebigen Rechner aus ein Windows-Netz bis zur
234   Unbenutzbarkeit zu st"oren. Man mu"s nur bestimmte, f"ur den PDC
235   vorgesehene Namen zum richtigen Zeitpunkt reservieren.}. Eine
236 Reservierung geschieht also, indem ein Rechner per Broadcast
237 ank"undigt, da"s er unter einem bestimmten Namen erreichbar ist. Dann
238 wartet er auf Protest. Beklagt sich niemand, schickt er eine zweite
239 Reservierung und wartet wieder. Nach der dritten Reservierung ist der
240 Rechner ausreichend sicher, da"s kein anderer den Namen bereits f"ur
241 sich eingenommen hat, und sieht ihn als f"ur sich reserviert an.
242
243 Wenn nun ein Client mit einem Server reden m"ochte, dann mu"s er sich
244 wie der Server einen eindeutigen Namen ausdenken und im Netz
245 reservieren. Das Verfahren dazu ist identisch. Zus"atzlich mu"s der
246 Client jedoch die MAC-Adresse des Servers herausbekommen. Die
247 Mechanismen, wie dies geschieht, h"angen davon ab, wie NetBIOS
248 implementiert ist.
249
250 NetBIOS kann mit unterschiedlichen Protokollen implementiert werden.
251 NetBEUI, IPX und TCP/IP sind drei heute verwendete Protokolle, wobei
252 f"ur Neuinstallation TCP/IP das bevorzugte Protokoll sein sollte.
253 Der Ablauf der Namensaufl"osung soll an einem
254 Beispiel verdeutlicht werden.
255
256 Auf einem Client soll eine Verbindung zu dem Server \nbname{samba}
257 aufgebaut werden. Direkt erreicht man dies, indem man in der Taskleiste
258 Start $\rightarrow$ Ausf"uhren $\rightarrow$ \verb|\\samba| eingibt.
259 Im folgenden werden die unterschiedlichen Verfahren betrachtet, mit
260 denen ein Rechner die MAC-Adresse des Servers herausbekommt.
261
262 \begin{description}
263
264 \item[NetBEUI:]
265
266   \textbf{"`Samba"'$\,\Rightarrow\,$MAC-Adresse}
267   
268   Bei diesem Protokoll findet der Client den Server ausschlie"slich
269   "uber Broadcasts. Er verschickt per Broadcast eine Anfrage, wer sich
270   f"ur den gesuchten Namen verantwortlich f"uhlt. Der Rechner, der
271   diesen Namen tats"achlich als Server reserviert hat, wird aufgrund
272   dieser Anfrage seine eigene MAC-Adresse aus dem ROM seiner
273   Netzwerkkarte auslesen und entsprechend antworten. Daraufhin kann
274   der Client dann die Verbindung aufbauen. "Uber NetBEUI k"onnen also
275   nur Rechner miteinander reden, die in der gleichen Broadcastdom"ane
276   liegen. Sobald Router zum Einsatz kommen sollen, kann reines NetBEUI
277   nicht mehr verwendet werden, da dann der Server, der kontaktiert
278   werden soll, von der Namensanfrage nichts mehr mitbekommt, also auch
279   nicht antworten kann.
280   
281 \item[IPX]
282   
283   \textbf{"`Samba"'$\,\Rightarrow\,$IPX-Knotenadresse
284     $\,\Rightarrow\,$MAC-Adresse}
285   
286   Bei IPX liegt zwischen Servernamen und der MAC-Adresse die
287   IPX-Knotenadresse. Diese enth"alt eine 4 Byte lange Netzwerknummer
288   und die 6 Byte lange MAC-Adresse des Rechners. Die Knotenadresse
289   wird anhand des NetBIOS-Namens wie bei NetBEUI per Broadcast im
290   lokalen Netz gesucht. Damit w"aren Rechner hinter Routern nicht
291   erreichbar, da die Namensanfrage nicht zu ihnen durchdringt.
292   IPX-Router erkennen diese Namensanfragen und leiten sie per
293   Broadcast in s"amtliche angeschlossenen Netze weiter, so da"s die
294   Anfrage jedes Teilnetz erreicht.
295   
296   Jede Anfrage l"ost einen Broadcast in jedem angeschlossenen Subnetz
297   aus. Einige IPX-Router speichern eine Namenstabelle und k"onnen so
298   viele Anfragen selbst beantworten, so da"s die Broadcastlast
299   reduziert wird.
300
301 \item[TCP/IP]
302   
303   \textbf{"`Samba"'$\,\Rightarrow\,$IP-Adresse$\,\Rightarrow\,
304     $MAC-Adresse}
305
306   Bei TCP/IP mu"s der Client die IP-Adresse des Servers herausfinden.
307   Dies geschieht wie bei den anderen Protokollen per Broadcast im
308   lokalen Netz. IP-Router k"onnen nicht angewiesen werden, die
309   Anfragen per Broadcast in alle angeschlossenen Netze weiterzuleiten.
310   Aus diesem Grund gibt es hier andere Mechanismen, die im folgenden
311   beschrieben werden.
312   
313   Nachdem die IP-Adresse herausgefunden wurde, kommen die bekannten
314   Mechanismen von IP zum tragen. Befindet sich der Rechner im eigenen
315   Subnetz, wird direkt eine ARP-Anfrage nach der MAC-Adresse
316   ausgel"ost. Andernfalls wird der entsprechende Router anhand der
317   Routingtabelle herausgefunden und dann dessen MAC-Adresse per ARP
318   festgestellt.
319
320 \end{description}
321
322 Die Protokolle ordnen sich folgenderma"sen ein:
323
324 \begin{figure}[ht]
325 \[\begin{pspicture}(12,6)
326 \psframe(3,0)(9,1)
327 \rput(6,0.5){Hardware}
328 \psframe(3,1)(5,3)
329 \rput(4,2){TCP/IP}
330 \psframe(5,1)(7,3)
331 \rput(6,2){NetBEUI}
332 \psframe(7,1)(9,2)
333 \rput(8,1.5){IPX}
334 \psframe(7,2)(9,3)
335 \rput(8,2.5){NWLink}
336 \psframe(3,3)(9,4)
337 \rput(6,3.5){{\bfseries NetBIOS}}
338 \psframe(0,4)(2,5)
339 \rput(1,4.5){ping}
340 \psline(0,4)(3,3)
341 \psline(2,4)(5,3)
342 \psframe(10,3)(12,4)
343 \rput(11,3.5){NWClient}
344 \psline(7,2)(10,3)
345 \psline(9,2)(12,3)
346 \psframe(3,4)(6,5)
347 \rput(4.5,4.5){SMB}
348 \psframe(3,5)(6,6)
349 \rput(4.5,5.5){Datei, Druck}
350 \psframe(6,4)(9,6)
351 \rput(7.5,5.5){Andere}
352 \rput(7.5,5){NetBIOS-}
353 \rput(7.5,4.5){Anwendungen}
354 \end{pspicture}\]
355 \caption{Protokollstapel}
356 \label{protokollstapel}
357 \end{figure}
358
359 In dieser Grafik steht das Programm \prog{ping} f"ur beliebige
360 Programme, die direkt auf TCP/IP aufsetzen. Dies gilt beispielsweise
361 f"ur alle WWW-Browser und f"ur die Programme \prog{telnet} und
362 \prog{ftp}.
363
364 Man kann festhalten, da"s NetBEUI hier das einzige Protokoll ist, das
365 nicht "uber Routergrenzen hinweg verwendbar ist. Sowohl IPX als auch
366 IP sind f"ur den Einsatz in Weitverkehrsnetzen entworfen worden und
367 k"onnen folglich mit Routern umgehen.
368
369 Samba ist ausschlie"slich in der Lage, NetBIOS "uber TCP/IP zu
370 benutzen. Daher werden die anderen Protokolle ab hier ignoriert.
371
372 \section{Bestandteile von Samba}
373
374 Das Programmpaket Samba besteht aus mehreren Programmen, von denen
375 einige der Serverseite und andere der Clientseite zugeordnet werden
376 k"onnen.
377
378 Die Servertools:
379
380 \begin{description}
381   
382 \item[smbd] ist der zentrale Serverproze"s, der f"ur die eigentlichen
383   Datei- und Druckdienste zust"andig ist. Sie werden mehrere
384   \prog{smbd}s im System finden. Einer dieser Prozesse lauscht auf dem
385   TCP-Port 139, und nimmt neue Verbindungen entgegen. Jede neue
386   Verbindung st"o"st einen neuen Proze"s \prog{smbd} an. Wenn Sie
387   einen Client vom Sambaserver trennen wollen, m"ussen Sie nur mit
388   \prog{smbstatus} die Proze"snummer des zust"andigen \prog{smbd}
389   erfragen, und diesen einen Proze"s t"oten.
390   
391   Samba ist im Hauptspeicherverbrauch recht sparsam. Jeder
392   \emph{aktive} Client ben"otigt etwa 1 MB Hauptspeicher auf dem
393   Server. Clients, die gerade nicht aktiv Dateien mit dem Sambaserver
394   austauschen, ben"otigen praktisch "uberhaupt keine Resourcen. Viel
395   Hauptspeicher kann von Samba selbstverst"andlich gut als Cache
396   genutzt werden.
397   
398 \item[nmbd] ist f"ur die NetBIOS Namens- und Datagrammdienste
399   zust"andig. Dieser Proze"s reserviert beim Start von Samba die
400   entsprechenden NetBIOS-Namen, er ist WINS-Server und f"ur den
401   Computersuchdienst zust"andig.
402   
403 \item[testparm] Mit diesem Programm kann man die \datei{smb.conf} auf
404   syntaktische Korrektheit pr"ufen. Das Programm liest die
405   Konfigurationsdatei ein und gibt Fehlermeldungen aus, sofern es
406   unbekannte Parameter findet.
407   
408 \item[smbpasswd] wird zur Pflege der verschl"usselten Pa"sw"orter auf
409   Serverseite verwendet. Wie dies funktioniert, wird im Kapitel
410   \ref{passwoerter} erkl"art.
411
412 \end{description}
413
414 Die Clients:
415
416 \begin{description}
417   
418 \item[smbclient:] Mit dem Programm \prog{smbclient} kann man auf
419   Freigaben von NT-Rechnern zugreifen. Man kann auf von NT zur
420   Verf"ugung gestellten Druckern drucken und man kann NT-Freigaben in
421   tar-Dateien sichern.  Weiterhin wird mit \prog{smbclient} die Liste
422   der Server im Netz erfragt, analog zu der Netzwerkumgebung unter
423   Windows.
424   
425 \item[nmblookup] ist ein Diagnosewerkzeug f"ur die
426   NetBIOS-Namensaufl"osung. Wenn zwei Computer mit Windows sich
427   nicht finden k"onnen, kann man mit \prog{nmblookup} deren Versuche,
428   sich gegenseitig zu finden, genau nachstellen. Ebenso k"onnen
429   WINS-Server befragt werden und ein NetBIOS Node Status abgefragt
430   werden. Das entsprechende Programm auf Seiten von Windows ist das
431   Kommandozeilenprogramm \prog{nbtstat}.
432
433 \end{description}
434
435 Auf der Serverseite finden sich noch weitere Komponenten:
436
437 \begin{description}
438   
439 \item[smb.conf:] Die zentrale Konfigurationsdatei von Samba. Ist Samba
440   als fester Systembestandteil installiert, findet sie sich in der
441   Regel unter \datei{/etc/smb.conf}. Ist Samba selbst compiliert,
442   liegt sie h"aufig unter \datei{/usr/local/samba/lib/smb.conf}.
443   
444 \item[/var/lock/samba:] Samba ben"otigt ein Verzeichnis, in dem es
445   tempor"are Lockdateien und Datenbanken ablegen kann. Wird Samba ohne
446   besondere Optionen selbst compiliert, liegt dies Verzeichnis unter
447   \datei{/usr/local/samba/var}.
448   
449 \item[/etc/smbpasswd] ist die Pa"swortdatenbank von Samba, sofern mit
450   verschl"usselten Pa"s\-w"ortern gearbeitet wird.
451   \datei{/usr/local/samba/private/} ist das Standardverzeichnis f"ur
452   diese Datei.
453
454 \end{description}
455
456 \section{NetBIOS-Konfiguration mit Samba}
457
458 Als erstes soll eine minimale Konfiguration von Samba erreicht werden,
459 mit der jeder Rechner in der Netzwerkumgebung zu sehen ist. Dazu
460 sollte die Datei \datei{smb.conf} folgenderma"sen aussehen:
461
462 \begin{verbatim}
463 [global]
464 workgroup = arbeitsgruppe
465 interfaces = <IP-Adresse>/<Netzmaske>
466 \end{verbatim}
467
468 \label{aufbau-smb.conf}
469 Der grunds"atzliche Aufbau der \datei{smb.conf} gleicht dem Aufbau der
470 .INI-Dateien von Windows 3. Die Datei ist in mehrere Abschnitte
471 unterteilt, die jeweils durch einen Abschnittsnamen eingeleitet
472 werden. Dieser Abschnittsname selbst wird in eckige Klammern gesetzt.
473 Der Inhalt jedes Abschnitts besteht nun aus Parameterzuweisungen. Im
474 Beispiel gibt es nur den Abschnitt \param{global}. In diesem werden
475 Festlegungen getroffen, die den Server als ganzes betreffen. Wenn
476 sp"ater Freigaben erstellt werden, geschieht dies durch Anlegen von
477 weiteren Abschnitten.
478
479 Mit dem Parameter \param{workgroup =} wird die Arbeitsgruppe
480 festgelegt, in der sich der Server befinden soll.
481
482 Der Parameter \label{interfaces}\param{interfaces =} ist einer der
483 wichtigsten Parameter der Sambakonfiguration. Er ist deshalb so
484 wichtig, weil damit das Funktionieren des NetBIOS-Systems innerhalb
485 von Samba garantiert wird.  Sp"ater wird deutlich werden, da"s gro"se
486 Teile der Kommunikation auf Broadcasts basieren. \prog{ifconfig
487   <interface>} unter Unix, oder unter Linux speziell \prog{ifconfig
488   eth0} gibt sowohl die IP-Adresse der Ethernetkarte als auch die dort
489 gesetzte Broadcastadresse als Ausgabe. Der Parameter \param{interfaces
490   =} weist Samba an, diese und keine andere Schnittstelle zu nutzen.
491 Dar"uberhinaus ist Samba nun in der Lage, die Broadcastadresse, die
492 auf dieser Schnittstelle g"ultig ist, zu bestimmen. Theoretisch
493 k"onnte man die Broadcastadresse selbst"andig herausfinden, aber es
494 gibt keinen portablen Weg, dies "uber Systemgrenzen hinweg zu tun. Das
495 sicherste ist, Samba direkt "uber die Broadcastadresse zu informieren.
496
497 Mit diesen beiden Einstellungen wird man direkt den Sambarechner in
498 der Netzwerkumgebung sehen. Zur Vereinfachung sollten noch zwei
499 weitere Parameter gesetzt werden, die sp"ater erkl"art werden. Die
500 vollst"andige \datei{smb.conf} sieht also folgenderma"sen
501 aus:\footnote{Auf einem der Rechner sollte zus"atzlich \param{os level
502     = 67} und \param{preferred master = yes} im Abschnitt 
503     \param{[global]} der /etc/smb.conf gesetzt sein.}
504
505 \begin{verbatim}
506 [global]
507 workgroup = arbeitsgruppe
508 interfaces = <IP-Adresse>/<Netzmaske>
509 security = share
510 encrypt passwords = yes
511 \end{verbatim}
512
513 Mit dieser Konfiguration kann Samba gestartet werden. Unter SuSE Linux
514 geschieht dies mit dem Aufruf:
515
516 \begin{verbatim}
517 rcsmb start
518 \end{verbatim}
519
520 Damit Samba beim n"achsten Hochfahren automatisch gestartet wird,
521 sollte die Variable \texttt{START\_SMB} in der Datei
522 \datei{/etc/rc.config} auf \texttt{yes} gesetzt werden. Es mu"s
523 letztlich nur erreicht werden, da"s sowohl der \prog{nmbd} als auch
524 der \prog{smbd} mit dem Parameter \texttt{-D} gestartet werden.
525
526 Es ist denkbar, den Aufruf beider Programme durch den \prog{inetd}
527 durchf"uhren zu lassen. Bei Samba ist dies jedoch nicht sinnvoll.
528 Insbesondere der \prog{nmbd} mu"s auf jeden Fall beim Start des
529 Systems hochfahren, da dieser im NetBIOS-System Namen f"ur sich
530 reservieren mu"s. W"urde er erst bei der ersten Anfrage gestartet,
531 h"atten Windowsrechner keine M"oglichkeit, den Sambarechner zu finden.
532 Au"serdem wird sich der \prog{nmbd} nicht wieder beenden, sobald er
533 einmal gestartet wurde. Der \prog{smbd} k"onnte durch den \prog{inetd}
534 gestartet werden. Jedoch ist der Resourcenbedarf nicht so hoch, da"s
535 die erh"ohte Startzeit damit gerechtfertigt werden k"onnte.
536
537 Nachdem alle Sambaserver gestartet wurden, sollten diese in der
538 Netzwerkumgebung der beteiligten Windowsrechner erscheinen.
539
540 \section{Namensaufl"osung per Broadcast}
541
542 Mit \prog{nmblookup} kann man direkt eine NetBIOS-Namensanfrage
543 ausl"osen.
544
545 \begin{quote}
546 \begin{small}\begin{verbatim}
547 vlendec@server:/home/vlendec> nmblookup server
548 querying server on 192.168.1.255
549 192.168.1.3 server<00>
550 vlendec@linux:/home/vlendec>
551 \end{verbatim}\end{small}
552 \end{quote}
553       
554 An diesem Beispiel wird deutlich, wie die NetBIOS-Namensaufl"osung
555 normalerweise arbeitet. Es wird ein Paket an der Adresse 192.168.1.255
556 versendet, die Broadcastadresse im lokalen Subnetz. Um
557 NetBIOS-Namensanfragen zu erm"oglichen, mu"s Samba in der Lage sein,
558 die Broadcastadresse herauszufinden, an die das Paket geschickt werden
559 soll.  \prog{nmblookup} entnimmt diese Adresse der Zeile
560 \param{interfaces =} der \datei{smb.conf}. F"ur Tests kann man
561 \prog{nmblookup} mit dem Parameter -B anweisen, die Anfragen an eine
562 andere Broadcastadresse zu versenden.
563
564 \begin{quote}
565 \begin{small}\begin{verbatim}
566 vlendec@server:/home/vlendec> nmblookup -B 192.168.1.31 server
567 querying server on 192.168.1.31
568 name_query failed to find name server
569 vlendec@linux:/home/vlendec>
570 \end{verbatim}\end{small}
571 \end{quote}
572
573 In diesem Beispiel wurde die Broadcastadresse auf 192.168.1.31
574 gesetzt. Diese Broadcastadresse gilt in Subnetz 192.168.1.0/27. Jedoch
575 f"uhlte sich der \prog{nmbd}, der f"ur diesen Namen verantwortlich
576 ist, nicht angesprochen. Folglich hat er nicht auf diese Namensanfrage
577 geantwortet.
578       
579 Unter Windows kann man die Namensanfrage so isoliert nicht ausl"osen,
580 man mu"s eine Verbindung aufbauen. Windows unterh"alt einen Cache, in
581 dem erfolgreiche Anfragen zwischengespeichert werden. Diesen kann man
582 sich mit \prog{nbtstat -c} anzeigen und mit \prog{nbtstat -R} l"oschen.
583 Man kann eine Anfrage erzwingen, indem man mit leerem Namenscache eine
584 Verbindung aufbaut, beispielsweise durch ein \prog{net view
585   \symbol{'134}\symbol{'134}samba}.
586
587 Die Fehlermeldung, wenn eine NetBIOS-Namensanfrage fehlschl"agt,
588 lautet im GUI: "`Der Netzwerkpfad wurde nicht gefunden"'. Auf der
589 Kommandozeile kommt noch die Fehlermeldung 53 dazu.
590
591 Mit \prog{nmblookup} kann man sich zus"atzlich die von einem Rechner
592 reservierten Namen ausgeben lassen. Die entsprechende Operation nennt
593 sich \defin{Node Status Request} und wird durch den Parameter \prog{-A
594   <IP-Adresse>} ausgel"ost. Die Ausgabe eines solchen Node Status
595 Request zeigt, da"s ein Rechner f"ur sich nicht nur einen einzigen
596 Namen reserviert, sondern gleich mehrere.
597
598 Zun"achst gibt es die Einzelnamen, zum Beispiel den Computernamen
599 selbst.  F"ur diese gilt die Regel, da"s sie nur ein einziges Mal im
600 gesamten Netz auftauchen d"urfen. Sie werden reserviert und stehen dem
601 entsprechenden Rechner dann exklusiv zur Verf"ugung. Daneben gibt es
602 die Gruppennamen, die im Node Status Request durch \texttt{<GROUP>}
603 markiert sind. Diese kann es mehrfach im Netz geben. Die Gruppennamen
604 sind insbesondere als Ziele f"ur NetBIOS-Datagramme interessant.
605 Beispielsweise reserviert jeder Teilnehmer an einer Arbeitsgruppe den
606 NetBIOS-Gruppennamen \nbname{arbeitsgruppe<00>}. Damit kann ein
607 Rechner mit einem einzigen verschickten Datagramm an diesen Namen
608 s"amtliche Rechner in dieser Arbeitsgruppe erreichen.
609
610 Zus"atzlich f"allt auf, da"s beispielsweise der Computername selbst
611 als Einzelnamen mehrfach reserviert ist. Hier kommen die
612 unterschiedlichen Namenstypen ins Spiel. Das 16. Byte eines
613 NetBIOS-Namens ist f"ur ein Typfeld reserviert. So sind
614 unterschiedliche Anwendungen auf einem Rechner in der Lage, sich Namen
615 zu reservieren, ohne sich gegenseitig zu st"oren.
616
617 Zun"achst die Einzelnamen, die h"aufig auftauchen:
618
619 \begin{description}
620
621 \item[computername$<$00$>$] Hiermit tut der Rechner einfach seine
622 Existenz kund. Wenn ein Rechner auf Resourcen anderer Rechner zugreift,
623 wird als Clientname dieser Name benutzt.
624
625 \item[computername$<$20$>$] Dieser Name wird f"ur den Serverdienst
626 reserviert. Wenn ein Rechner als Datei- oder Druckserver angesprochen
627 werden soll, dann wird eine Verbindung zu diesem NetBIOS-Namen aufgebaut.
628
629 \item[computername$<$03$>$] Unter diesem Namen meldet sich der
630 Nachrichtendienst des Rechners an. Kurze Meldungen, die unter Windows
631 NT mit dem Kommando \prog{net send} abgesetzt werden, und unter
632 Windows 95 mit dem Programm Winpopup verschickt werden, kann der
633 Rechner damit empfangen und am Bildschirm anzeigen.
634
635 \item[arbeitsgruppe$<$1d$>$] Dieser Rechner ist der sogenannte
636   \defin{Lokale Master Browser}, der die Liste s"amtlicher Rechner in
637   der Netzwerkumgebung pflegt.
638   
639 \item[arbeitsgruppe$<$1b$>$] Dieser Rechner ist der \defin{Domain
640     Master Browser}, der "uber Subnetzgrenzen hinweg f"ur die
641   Netzwerkumgebung zust"andig ist.
642
643 \end{description}
644
645 Einige Gruppennamen werden ebenfalls reserviert:
646
647 \begin{description}
648   
649 \item[arbeitsgruppe$<$00$>$] Ein Rechner verk"undet hiermit seine
650   Zugeh"origkeit zu einer Arbeitsgruppe. Beispielsweise k"onnen
651   Winpopup-Meldungen an eine ganze Arbeitsgruppe versendet werden.
652   Dies geschieht per Datagramm an diesen Namen.
653   
654 \item[arbeitsgruppe$<$1e$>$] Wahlen zum Lokalen Master Browser werden
655   "uber diesen Namen abgewickelt. Siehe hierzu Kapitel \ref{netzwerkumgebung}.
656
657 \end{description}
658
659 \section{Netzwerkumgebung}
660 \label{netzwerkumgebung}
661
662 Die \defin{Netzwerkumgebung} ist einer der instabileren Aspekte von
663 Windows. Hiermit kann man sich, sofern alles funktioniert, alle
664 Rechner in einer Arbeitsgruppe anzeigen lassen. Dabei dauert es
665 mitunter geraume Zeit, bis ein Rechner in einer Anzeige erscheint, und
666 es dauert unter Umst"anden noch l"anger, bis er wieder verschwindet.
667
668 Eine naive Implementation k"onnte funktionieren, indem jeder Rechner,
669 der Serverdienste anbietet, dieses regelm"a"sig per Broadcast im Netz
670 mitteilt. Ein solches Vorgehen hat jedoch mehrere Nachteile. Erstens
671 w"urde die Last im Netz mit jedem zus"atzlichen Rechner stark
672 ansteigen. Zweitens mu"s jeder Rechner, der die Netzwerkumgebung anzeigen
673 will, relativ komplexe Software laufen lassen. Und drittens scheitert dieses
674 Schema auf jeden Fall an Subnetzgrenzen, die f"ur Broadcasts eine
675 Grenze darstellen. Aus diesen Gr"unden ist man einen anderen Weg
676 gegangen.
677
678 Der \defin{Lokale Master Browser} (im folgenden auch LMB genannt) ist
679 ein Rechner, der im Netz die Netzwerkumgebung pflegt. Dieser Rechner
680 wird nirgendwo zentral bestimmt, sondern er wird gew"ahlt. Diese Wahl
681 findet immer dann statt, wenn einer der beteiligten Rechner
682 feststellt, da"s es im Moment keinen solchen Lokalen Master Browser
683 gibt.  Beispielsweise kann der Explorer von Windows eine solche Wahl
684 ansto"sen. Wenn Windows 95 die geschwenkte Taschenlampe anzeigt, wird
685 der LMB gesucht. Ist keiner vorhanden, wird eine Wahl angesto"sen.
686
687 Die Wahl erfolgt mit Datagrammen an den Gruppennamen
688 \nbname{arbeitsgruppe<1e>}. Ein Rechner verschickt ein Datagramm an
689 diesen Namen. Jeder Rechner, der diesen Namen reserviert hat, h"ort
690 dieses Datagramm und entscheidet, wie er selbst vorgehen soll.  In dem
691 Datagramm sind verschiedene Kriterien zur Wahl enthalten,
692 beispielsweise das Betriebssystem des versendenden Rechners.
693
694 Empf"angt beispielsweise eine Windows NT Workstation ein Paket von
695 einem Windows NT Server, so entscheidet sie, da"s sie die Wahl
696 verloren hat. Damit wird sie selbst nicht mehr aktiv. Kommt dieses
697 Paket jedoch von einem Windows 95 Rechner, so h"alt sie sich selbst
698 f"ur geeigneter, den Lokalen Master Browser zu "ubernehmen. Dann wird
699 sie selbst ein solches Wahlpaket mit ihren Parametern versenden.  Der
700 Windows 95 Rechner empf"angt dies, und sieht, da"s er verloren hat.
701 Auf diese Weise schaukelt sich die Wahl hoch, bis der "`beste"'
702 Rechner die Wahl gewinnt.
703
704 Wenn es nun mehrere Windows NT Workstations im Netz g"abe, dann
705 w"are die Wahl unentschieden. An dieser Stelle kommt die \emph{Uptime}
706 der Rechner ins Spiel. Der Rechner, der am l"angsten l"auft, gewinnt
707 die Wahl. Nun kann es sein, da"s nach einem Stromausfall zwei Rechner
708 genau die gleiche Uptime haben. Dann kommt als letztes und eindeutiges
709 Entscheidungskriterium der NetBIOS-Name des Rechners zum Zug. Der
710 alphabetisch vorne stehende Rechner gewinnt. Mit diesen drei Kriterien
711 ist eine eindeutige Wahl gesichert.
712
713 Samba ordnet sich in der Standardeinstellung zwischen Windows 95 und
714 Windows NT ein, das hei"st, gegen Windows 95 gewinnt Samba die Wahl,
715 "uberl"a"st jedoch Windows NT Rechnern den Lokalen Master Browser.
716
717 Drei Parameter in der \datei{smb.conf} bestimmen das Verhalten von
718 Samba in der Wahl zum Lokalen Master Browser:
719
720 \begin{description}
721   
722 \item[\param{os level}] Damit wird die Einordnung von Samba in die
723   unterschiedlichen Betriebssysteme geregelt. Diese haben f"ur die
724   Betriebssystemstufe folgende Werte:
725
726 \[\begin{tabular}{|l|r|}
727 \hline
728 Windows for Workgroups & 0 \\
729 \hline
730 Windows 95/98 & 1 \\
731 \hline
732 Windows NT Workstation & 16 \\
733 \hline
734 Windows NT Server & 32 \\
735 \hline
736 \end{tabular}\]
737
738 Diese Werte sind nicht als fest anzusehen. Wenn ein neues Service Pack
739 f"ur ein Betriebssystem herausgegeben wird, ist es m"oglich, da"s in
740 der Software f"ur den Lokalen Master Browser Fehler bereinigt wurden.
741 Dann ist es sinnvoll, da"s diese neue Software die Rolle des LMB
742 "ubernimmt. Der einfachste Weg ist, den \param{os level} einfach
743 hochzusetzen. Samba hat hier einen Vorgabewert von 20.
744
745 Der Parameter \param{os level} kann Werte von 0 bis 255 annehmen.
746 Setzt man ihn auf 255, wird nach einer erfolgreichen Wahl niemand mehr
747 Local Master Browser werden k"onnen.
748
749 \item[\param{local master}] M"ochte man auf keinen Fall den LMB auf
750   einem Sambarechner haben, so setzt man den Parameter \param{local
751     master = no}. Dann nimmt Samba an keiner Wahl teil.
752   
753 \item[\param{preferred master}] Mit der Standardeinstellung
754   \param{preferred master = no} sucht Samba beim Start nach
755   einem LMB. Findet er einen, meldet er sich dort.  Findet er keinen
756   LMB, bleibt Samba passiv. Jemand anders mu"s eine Wahl ansto"sen.
757   Wenn dann eine Wahl stattfindet, nimmt Samba teil und ordnet sich
758   anhand seines \param{os level} ein. Wenn man sichergehen m"ochte,
759   da"s Samba auf jeden Fall nach dem Start den LMB "ubernimmt, dann
760   mu"s man den \param{os level} hoch genug setzen, und den Parameter
761   \param{preferred master = yes} setzen.  Damit wird Samba beim Start
762   des \prog{nmbd} auf jeden Fall eine Wahl ansto"sen und sie dann
763   unter Umst"anden gewinnen.
764
765 \end{description}
766
767 Mit den Einstellungen
768
769 \begin{verbatim}
770 [global]
771 os level = 66
772 preferred master = yes
773 \end{verbatim}
774
775 \noindent
776 kann man sicher sein, da"s der Sambarechner immer den LMB innehat. Es
777 sei denn, ein anderer Administrator von Samba kommt auf die Idee,
778 einen noch h"oheren Wert f"ur den \param{os level} zu benutzen.
779
780 Ein Primary Domain Controller kann unter Umst"anden erheblich gest"ort
781 werden, wenn er in seinem Subnetz nicht der LMB ist.
782
783 \section{NetBIOS "uber Subnetzgrenzen}
784
785 \newcommand{\computer}[2]{%
786   \rput[t](0,0){%
787     \begin{pspicture}(2,2)
788       \psframe(0,0.5)(2,1.5)
789       \psline(1,1.5)(1,2)
790       \rput(1,1){\texttt{#1}}
791       \rput[b](1,0.2){{\footnotesize IP: #2}}
792     \end{pspicture}}}
793 \newcommand{\network}[1]{%
794   \rput[l](0,0){%
795     \begin{pspicture}(#1,0.6)
796       \psline(0,0)(0,0.6)
797       \psline(0,0.3)(#1,0.3)
798       \psline(#1,0)(#1,0.6)
799     \end{pspicture}}}
800 \newcommand{\routednet}{%
801 \rput[lb](0,0){%
802 \begin{pspicture}(10,5.5)
803 \rput(0,5){\network{7}}
804 \rput(2,5){\computer{WKS}{192.168.1.5}}
805 \rput(3,2){\network{7}}
806 \rput(8,2){\computer{SERVER}{192.168.2.8}}
807 \rput(5.5,3.75){\psframe(-1,-0.25)(1,0.25)}
808 \rput(5.5,3.75){{\footnotesize 192.168.1.1}}
809 \rput(5.5,3.25){\psframe(-1,-0.25)(1,0.25)}
810 \rput(5.5,3.25){{\footnotesize 192.168.2.1}}
811 \psline(5.5,4)(5.5,5)
812 \psline(5.5,2)(5.5,3)
813 \end{pspicture}}}
814
815 Wird die Namensreservierung und -aufl"osung ausschlie"slich per
816 Broadcast durchgef"uhrt, kann man Rechner, die hinter Routern liegen,
817 nicht erreichen. Broadcasts verbleiben in den Subnetzen, in denen sie
818 ausgesendet wurden.
819
820 \begin{figure}[ht]\[
821 \begin{pspicture}(10,6)
822 \rput(0,0){\routednet}
823 \psline{<-}(0,5.5)(2.7,5.5)
824 \psline{->}(4.3,5.5)(7,5.5)
825 \rput(3.5,5.5){\texttt{SERVER?}}
826 \end{pspicture}\]
827 \caption{Namensanfrage per Broadcast}
828 \label{broadcastanfrage}
829 \end{figure}
830
831 In der dargestellten Situation sind zwei Netze "uber einen Router
832 verbunden. Jeder der beiden Rechner reserviert seinen Namen in dem ihm
833 zugeordneten Subnetz. Die Workstation \nbname{WKS} schickt ihre
834 Reservierungen per Broadcast an 192.168.1.255, und der Server
835 \nbname{SERVER} wird seinen Namen auf 192.168.2.255 reservieren. Der
836 Router zwischen beiden bekommt diese Reservierungen zwar mit, wird sie
837 aber nicht in das jeweils andere Subnetz weiterleiten. Wenn nun
838 \nbname{WKS} ihren Server \nbname{SERVER} sucht, geschieht dies
839 ebenfalls per Broadcast an 192.168.1.255. Diese Anfrage bleibt wie
840 dargestellt im oberen Subnetz und erreicht \nbname{SERVER} gar nicht,
841 so da"s dieser auch nicht antworten kann.
842
843 Der einfachste Weg, die Namensaufl"osung "uber Subnetzgrenzen hinweg
844 zu realisieren, geht "uber eine statische Tabelle. Unter Windows
845 liegt diese in der Datei \datei{LMHOSTS}. Sie liegt abh"angig von der
846 Windowsversion in unterschiedlichen Verzeichnissen und l"a"st sich am
847 einfachsten mit der Suchfunktion des Desktops finden. Diese Datei ist
848 "ahnlich aufgebaut wie die Datei \datei{/etc/hosts} unter Unix. Ein
849 Beispieleintrag ist der folgende:
850
851 \verb|192.168.1.5 samba|
852
853 Die Eintr"age in der \datei{LMHOSTS} k"onnen durch den Zusatz
854 \texttt{\#PRE} erg"anzt werden. Dieser Zusatz legt fest, in welcher
855 Reihenfolge die Namensaufl"osung vorgenommen wird. Ist kein
856 \texttt{\#PRE} vorhanden, so wird zun"achst eine konventionelle
857 Namensaufl"osung per Broadcast versucht. Erst, wenn diese
858 fehlschl"agt, wird in der \datei{LMHOSTS} nachgeschaut. Ist der Zusatz
859 vorhanden, so wird ohne Namensaufl"osung direkt der Wert in der
860 \datei{LMHOSTS} verwendet.
861
862 Die zweite M"oglichkeit, das Problem zu l"osen, ist eine zentrale
863 Datei \datei{LMHOSTS}. Dazu gibt es den WINS-Server. Ein solcher Server
864 ist ein Rechner, bei dem sich jede Applikation im Netz mit ihren Namen
865 anmeldet. Die IP-Adresse dieses Servers mu"s jedem Rechner mitgeteilt
866 werden. Bei Windows geschieht dies in den Eigenschaften des TCP/IP
867 Protokolls im Reiter WINS-Adresse. Setzt man DHCP-Server ein, kann man
868 ebenfalls den WINS-Server festlegen. Samba bekommt die Adresse mit dem
869 Parameter \param{wins server = <ip-adresse>} im Abschnitt
870 \param{[global]} der \datei{smb.conf} mitgeteilt. Sobald ein Client
871 die IP-Adresse des WINS Servers kennt, ist es v"ollig gleichg"ultig,
872 ob sich dieser im gleichen Subnetz befindet oder nicht.
873
874 Die Namensreservierung erfolgt nicht mehr per Broadcast, sondern mit
875 einem gerichteten UDP-Paket an den WINS-Server.  Gerichtete Pakete
876 leitet der Router wie jedes andere Paket an den WINS-Server weiter.
877 Dieser sieht in seiner Tabelle nach, ob der Name bereits reserviert
878 ist. Ist das nicht der Fall, so wird er spontan eine Best"atigung der
879 Reservierung zur"uckschicken. Diese Reservierung gilt nun f"ur eine
880 bestimmte Zeit und mu"s rechtzeitig erneuert werden.
881
882 Ist der Name bereits reserviert, wird der WINS-Server den bisherigen
883 Besitzer befragen, ob er den Namen noch ben"otigt. Bekommt er keine
884 Antwort, wird er dem neuen Besitzer ebenfalls eine Best"atigung
885 schicken. M"ochte der alte Besitzer den Namen noch verwenden, so wird
886 der Anfragende eine Ablehnung der Reservierung erhalten. Diese
887 Nachfrage ist notwendig, um einem abgest"urzten Rechner das spontane
888 Booten zu erm"oglichen, da bei einem Absturz keine Freigabe der
889 Namensreservierung erfolgen kann.
890
891 Die Namensanfrage, die in Abbildung \ref{broadcastanfrage} den Server
892 nicht erreichte, weil der Router keine Broadcasts weitergibt, wird nun
893 direkt an den WINS-Server gerichtet, der in seiner Tabelle nachsehen
894 kann.
895
896 \begin{figure}[ht]\[
897 \begin{pspicture}(10,6)
898 \rput(0,0){\routednet}
899 \rput(4,2){\computer{WINS}{192.168.2.5}}
900 \psline[linestyle=dashed,linearc=0.25]
901       {->}(2.5,4.5)(3.2,4.9)(5.3,4.9)(5.3,2)(4.5,1.5)
902 \rput(3.5,5.8){\texttt{SERVER?}}
903 \end{pspicture}\]
904 \caption{WINS-Anfrage}
905 \end{figure}
906
907 Samba kann ganz normal als WINS-Server konfiguriert werden, indem der
908 Parameter \param{wins support = yes} gesetzt wird. Ist diese Parameter
909 gesetzt, kann Samba nach einem Neustart bei allen Clients und allen
910 sonstigen Servern als WINS-Server eingetragen werden. Werden diese
911 dann neu gestartet, melden sie sich beim WINS Server an.
912
913 Wenn nun ein Rechner mit Samba als WINS Server konfiguriert ist, und
914 sich die anderen Rechner dort anmelden, werden diese in der Datei
915 \datei{/var/lock/samba/wins.dat} abgelegt. Der \prog{nmbd} pflegt
916 diese Datei dynamisch, je nach Reservierungen und Abmeldungen. Die
917 Datei \datei{wins.dat} wird in regelm"a"sigen Abst"anden geschrieben.
918 Wenn es notwendig sein sollte, den wirklich aktuellen Stand
919 unabh"angig von diesem Zeitintervall zu erhalten, so kann man dem
920 \prog{nmbd} das \prog{HANGUP}-Signal durch den Befehl \prog{killall
921 -HUP nmbd} senden. Au"serdem wird die \datei{wins.dat} beim Beenden
922 des \prog{nmbd} geschrieben.
923
924 Diese Datenbank wird auf Festplatte gehalten, damit die Daten einen
925 Neustart von Samba "uberleben. Jeder Rechner, der einen Namen f"ur
926 sich reserviert hat, hat diese Reservierung f"ur einen bestimmten
927 Zeitraum ausgesprochen. Wenn Samba jetzt neu gestartet werden sollte,
928 und dadurch die Datenbank verloren ginge, w"are der gesamte
929 NetBIOS-Namensraum nicht mehr verf"ugbar. Au"serdem kann ein WINS
930 Server die angeschlossenen Clients weder von sich aus finden, noch sie
931 darum bitten, sich erneut zu registrieren. Daher ist die WINS
932 Datenbank "uber Neustarts von Samba hinaus zu erhalten.
933
934 Die Anfrage, die die Workstation \nbname{WKS} absetzt, wird nun nicht
935 mehr per Broadcast gestellt, sondern mit einem gerichteten Paket an
936 den WINS-Server, bei dem sich alle Rechner angemeldet haben.
937
938 %\[\setlength{\unitlength}{1mm}
939 %\begin{picture}(100,60)(0,20)
940 %\put(0,0){\routednet}
941 %\put(30,75){\makebox(0,0)[l]{{\ttfamily\bfseries SERVER?}}}
942 %\curve(17,65, 20,72, 29,75)
943 %\tagcurve(40,75, 50,75, 57,65, 57,45, 45,38, 40,30, 30,20)
944 %\put(50,45){\circle*{1}}
945 %\put(40,40){\computer{WINS}{192.168.2.5}}
946 %\end{picture}\]
947
948 WINS hat gegen"uber der broadcastbasierten Namensreservierung einige
949 Vorteile. Namensreservierung per Broadcast erfolgt durch Wartezeiten.
950 Es wird die Reservierung angek"undigt, es wird gewartet, die
951 Reservierung wird erneut angek"undigt, und es wird wieder gewartet.
952 Dieses Spiel wiederholt sich mehrfach, bis der Rechner sicher sein
953 kann, da"s ein eventueller Vorbesitzer des Namens genug Zeit hatte,
954 sich zu beklagen. Beim Einsatz von WINS entfallen diese Wartezeiten,
955 da hier ein einziger Rechner s"amtliche reservierte Namen registriert
956 und in seiner Tabelle nachschauen kann. Daher ist die Reservierung per
957 NetBIOS deutlich schneller, und auch weniger netzbelastend. Selbst
958 wenn man also nur ein einziges Subnetz hat, sollte man zur Reduzierung
959 der Netzlast den Einsatz eines WINS-Servers in Erw"agung ziehen.
960
961 Zus"atzlich sei hier angemerkt, da"s es netzwerkweit nur einen
962 einzigen WINS-Server geben darf. Selbst wenn es unterschiedliche
963 Arbeitsgruppen oder Dom"anen gibt, darf es nicht mehr als einen
964 WINS-Server geben. Setzt man mehrere WINS-Server ein, hat man getrennte
965 Namensr"aume.  Rechner im einen Namensraum k"onnen mit Rechnern, die
966 an einem anderen WINS-Server angeschlossen sind, nicht kommunizieren.
967 Es kann trotzdem zu Kollisionen kommen, da Windowsrechner bestimmte
968 Namen unabh"angig von WINS-Einstellungen ausschlie"slich per Broadcast
969 reservieren. Unter Windows NT kann man mehrere WINS-Server einsetzen,
970 die sich gegenseitig abstimmen. Diese WINS-Server treten gegen"uber
971 den Clients als ein einziger Server auf, unabh"angig von ihrer Anzahl.
972
973 Die Abfrage eines WINS Servers durch \prog{nmblookup} erfolgt
974 beispielhaft folgenderma"sen:
975
976 \begin{verbatim}
977 nmblookup -R -U 192.168.1.5 samba
978 \end{verbatim}
979
980 Hiermit wird der WINS Server, der auf dem Rechner 192.168.1.5 liegt,
981 nach dem Namen \nbname{samba} befragt.
982
983 Samba kennt zwei zus"atzliche Funktionen, die es im Zusammenhang mit
984 WINS interessant machen. Einerseits kann Samba als WINS Proxy
985 eingerichtet werden, indem \param{wins proxy = yes} gesetzt wird. Ist
986 diese Einstellung aktiv, dann wird Samba s"amtliche Reservierungen und
987 Anfragen, die es aus dem lokalen Netz per Broadcast erh"alt, an den
988 mit \prog{wins server =} konfigurierten WINS Server weiterleiten.
989 Damit kann man einen Samba-Server in ein Subnetz stellen. S"amtliche
990 Rechner in diesem Netz werden nun beim WINS angemeldet, und nutzen
991 diesen auch. Dies ist auch dann der Fall, wenn sie entweder selbst
992 keinen WINS Server ansprechen k"onnen oder nicht daf"ur konfiguriert
993 sind. Man sollte jedoch in jedem Fall eine echte Konfiguration des
994 WINS Servers auf dem Client vorziehen. Ein WINS Proxy kann nur eine
995 Behelfsl"osung sein, da man sich damit auf einen weiteren
996 Rechner verl"a"st.
997
998 Unter Windows kann man statische Eintr"age im WINS vornehmen. Dies
999 geht so direkt unter Samba nicht. Man mu"s hierzu den Parameter
1000 \param{dns proxy = yes} auf dem WINS Server setzen. Empf"angt der WINS
1001 Server nun eine Anfrage, die er nicht aus seiner Datenbank beantworten
1002 kann, wird er eine ganz normale Unix-Hostnamenanfrage machen.
1003 Typischerweise wird er in der \datei{/etc/hosts} nachschauen und
1004 danach dann das DNS anhand der Konfiguration in der Datei
1005 \datei{/etc/resolv.conf} befragen. Damit ist es durch einen Eintrag
1006 auf dem WINS Server m"oglich, den gesamten DNS-Namensraum auch in der
1007 NetBIOS-Namenswelt zur Verf"ugung zu stellen.
1008
1009 \section{Netzwerkumgebung "uber Subnetzgrenzen}
1010
1011 So, wie die Netzwerkumgebung in Abschnitt \ref{netzwerkumgebung}
1012 betrachtet wurde, funktioniert sie nur in einem einzigen lokalen
1013 Netz. Die Wahl zum lokalen Master Browser funktioniert per Datagramm,
1014 das an den Namen \nbname{arbeitsgruppe<1e>} gesendet
1015 wird. \nbname{arbeitsgruppe<1e>} ist ein Gruppenname, der von mehreren
1016 Rechnern reserviert sein kann. Das hei"st, da"s ein Datagramm an
1017 diesen Namen mehrere Rechner erreichen mu"s. Dies geschieht bei
1018 NetBIOS "uber TCP/IP mit einem UDP-Paket an die Broadcastadresse im
1019 lokalen Netz. Allein hieraus ergibt sich, da"s es pro Arbeitsgruppe in
1020 jedem Subnetz einen eigenen LMB geben mu"s. Jeder LMB bekommt aus
1021 seinem Subnetz die Informationen "uber vorhandene Server.
1022
1023 Um diese Einschr"ankung zu umgehen, gibt es den Domain Master Browser
1024 (DMB). Der DMB ist ein Rechner, der die Serverlisten von allen LMBs
1025 einsammelt und auf Anforderung wieder herausgibt. Dabei sitzt der DMB
1026 nur passiv da und wartet darauf, da"s sich ein LMB mit ihm
1027 synchronisieren will. Es ist Aufgabe der LMBs, sich regelm"a"sig
1028 danach zu erkundigen, wo der DMB sitzt, und mit diesem dann die
1029 Serverlisten abzugleichen.
1030
1031 Die Vorg"ange werden am deutlichsten, wenn man ein Beispiel
1032 betrachtet. Dieses Beispiel ist im wesentlichen der
1033 Originaldokumentation von Samba aus der Datei \datei{BROWSING.txt}
1034 entnommen.
1035
1036 \newcommand{\minicomputer}[1]{%
1037 \begin{picture}(10,9)(5,9)
1038 \put(0,0){\framebox(10,5){{\ttfamily #1}}}
1039 \put(5,5){\line(0,1){4}}
1040 \end{picture}}
1041 \newcommand{\mininetz}[1]{%
1042 \begin{picture}(62,12)
1043 \put(10,10){\minicomputer{N#1A}}
1044 \put(25,10){\minicomputer{N#1B}}
1045 \put(40,10){\minicomputer{N#1C}}
1046 \put(55,10){\minicomputer{N#1D}}
1047 \put(3,10){\line(1,0){59}}
1048 \put(3,8){\line(0,1){4}}
1049 \put(62,8){\line(0,1){4}}
1050 \end{picture}}
1051
1052 \begin{figure}[ht]
1053 \[\setlength{\unitlength}{1.1mm}
1054 \begin{picture}(120,60)(0,5)
1055 \put(0,20){\mininetz{1}}
1056 \put(25,19){\makebox(0,0){\textit{{\small DMB,LMB}}}}
1057 \put(30,50){\mininetz{2}}
1058 \put(85,49){\makebox(0,0){\textit{{\small WINS}}}}
1059 \put(55,49){\makebox(0,0){\textit{{\small LMB}}}}
1060 \put(50,5){\mininetz{3}}
1061 \put(105,4){\makebox(0,0){\textit{{\small LMB}}}}
1062 \put(48,48){\minicomputer{R1}}
1063 \put(48,48){\line(0,1){12}}
1064 \put(48,39){\line(0,-1){9}}
1065 \put(77,48){\minicomputer{R2}}
1066 \put(77,48){\line(0,1){12}}
1067 \put(77,39){\line(0,-1){24}}
1068 \end{picture}\]
1069 \caption{Domain Master Browser}
1070 \end{figure}
1071
1072 Dieses Netz besteht aus 3 Subnetzen (1,2,3), die durch 2 Router (R1
1073 und R2) verbunden sind. Die Router lassen keine Broadcasts durch. Alle
1074 Subnetze bestehen aus jeweils 4 Maschinen.  Nehmen wir der Einfachheit
1075 halber an, da"s alle Maschinen in der gleichen Arbeitsgruppe
1076 konfiguriert sind. Rechner \nbname{N1B} im Subnetz 1 ist als Domain
1077 Master Browser konfiguriert. Das hei"st, da"s er die Browseliste f"ur
1078 die ganze Arbeitsgruppe aufsammelt. Rechner \nbname{N2D} ist als WINS
1079 Server konfiguriert und alle anderen Maschinen registrieren ihre
1080 NetBIOS Namen dort.
1081
1082 Wenn alle diese Maschinen gebootet werden, werden in jedem der drei
1083 Subnetze Wahlen um einen Local Master Browser abgehalten. Nehmen wir
1084 an, im Subnetz 1 gewinnt \nbname{N1C}, im Subnetz 2 gewinnt
1085 \nbname{N2B} und im Subnetz 3 gewinnt \nbname{N3D}. Diese Maschinen
1086 sind als Local Master Browser in ihrem Subnetz bekannt.  Im Subnetz 1
1087 liegen der LMB und der DMB auf der gleichen Maschine, was nicht der
1088 Fall sein mu"s. Diese beiden Rollen sind vollst"andig unabh"angig
1089 voneinander.
1090
1091 Alle Maschinen, die Serverdienste anzubieten haben, k"undigen dies per
1092 Broadcast auf ihrem Subnetz an. Der Local Master Browser in jedem
1093 Subnetz empf"angt diese Broadcasts und tr"agt alle Server in einer
1094 Liste ein. Diese Liste von Eintr"agen ist die Basis f"ur die
1095 Browseliste. In unserem Fall nehmen wir an, da"s alle Maschinen
1096 Serverdienste anbieten, das hei"st, da"s alle Maschinen in der Liste
1097 erscheinen.
1098
1099 F"ur jedes Subnetz wird der Local Master Browser als
1100 \emph{ma"sgeblich} angesehen, und zwar f"ur alle Namen, die er per
1101 lokalem Broadcast empf"angt. Broadcasts verlassen das Subnetz nicht,
1102 und die Broadcasts im lokalen Subnetz werden als ma"sgeblich
1103 angesehen. Daher wird dem Local Master Browser bei diesen Servern
1104 geglaubt. Rechner, die sich in anderen Subnetzen befinden, und "uber
1105 die der Local Master Browser von anderen Local Master Browsern
1106 informiert wurde, werden als nicht ma"sgeblich angesehen.
1107
1108 An diesem Punkt sieht die Browse Liste folgenderma"sen aus: (dies sind
1109 die Maschinen, die Sie in Ihrer Netzwerkumgebung sehen w"urden, wenn
1110 Sie sie in einem bestimmten Subnetz ansehen)
1111
1112 \vspace{\baselineskip}
1113 \[\begin{tabular}{|c|c|l|}
1114 \hline
1115 Netz & LMB &  Liste \\ \hline \hline
1116 1 & \nbname{N1C} & \nbname{N1A}, \nbname{N1B}, \nbname{N1C}, \nbname{N1D}\\
1117 \hline
1118 2 & \nbname{N2B} & \nbname{N2A}, \nbname{N2B}, \nbname{N2C}, \nbname{N2D}\\
1119 \hline
1120 3 & \nbname{N3D} & \nbname{N3A}, \nbname{N3B}, \nbname{N3C}, \nbname{N3D}\\
1121 \hline
1122 \end{tabular}\]
1123 \vspace{\baselineskip}
1124
1125 An diesem Punkt sind alle Subnetze vollst"andig separat, keine
1126 Maschine wird in anderen Subnetzen gesehen. Die
1127 Microsoft-Dokumentation spricht davon, da"s die Arbeitsgruppen in den
1128 Subnetzen getrennt sind.
1129
1130 Sehen wir uns nun Subnetz 2 an. Sobald \nbname{N2B} der Local Master
1131 Browser geworden ist, sucht er den Domain Master Browser, um mit ihm
1132 die Browse Listen zu synchronisieren. Dies tut er, indem er den WINS
1133 Server (\nbname{N2D}) nach der IP-Adresse fragt, die zum NetBIOS-Namen
1134 \nbname{arbeitsgruppe<1B>} geh"ort. Diesen Namen hat der Domain Master
1135 Browser (\nbname{N1C}) beim WINS Server f"ur sich beim booten
1136 registriert.
1137
1138 \nbname{N2B} kennt nun den Domain Master Browser. Er k"undigt sich als
1139 Local Master Browser f"ur Subnetz 2 bei ihm an. Dann synchronisiert
1140 \nbname{N2B} sich mit \nbname{N2D}, indem er einen
1141 NetServerEnum2-Aufruf abschickt. Der Domain Master Browser schickt
1142 alle Server, die er kennt, zur"uck. Sobald der Domain Master Browser
1143 die Ank"undigung von \nbname{N2B} als Lokaler Master Browser erhalten
1144 hat, wird auch er sich mit dem Local Master Browser
1145 synchronisieren. Nachdem beide Synchronisationen stattgefunden haben,
1146 sehen die Browse Listen so aus:
1147
1148 \vspace{\baselineskip}
1149 \[\begin{tabular}{|c|c|l|}
1150 \hline
1151 Netz & LMB &  Liste \\ \hline \hline
1152 1 & \nbname{N1C} & \nbname{N1A}, \nbname{N1B}, \nbname{N1C}, \nbname{N1D}\\
1153   & & \nbname{N2A*}, \nbname{N2B*}, \nbname{N2C*}, \nbname{N2D*}\\
1154 \hline
1155 2 & \nbname{N2B} & \nbname{N2A}, \nbname{N2B}, \nbname{N2C}, \nbname{N2D}\\
1156 & & \nbname{N1A*}, \nbname{N1B*}, \nbname{N1C*}, \nbname{N1D*}\\
1157 \hline
1158 3 & \nbname{N3D} & \nbname{N3A}, \nbname{N3B}, \nbname{N3C}, \nbname{N3D}\\
1159 \hline
1160 \end{tabular}\]
1161 \vspace{\baselineskip}
1162
1163 Die mit * bezeichneten Eintr"age werden als nicht ma"sgeblich
1164 angesehen, da sie von anderen Master Browsern erhalten wurden. F"ur
1165 den Client macht dies jedoch keinen Unterschied. Nur der LMB darf
1166 diese Eintr"age selbstverst"andlich beim n"achsten Abgleich nicht an
1167 den DMB als seine eigenen zur"uckmelden.
1168
1169 Zu diesem Zeitpunkt werden Benutzer in den Subnetzen 1 und 2, die die
1170 Netzwerkumgebung ansehen, die Server in beiden Subnetzen sehen,
1171 Benutzer im Subnetz 3 sehen immer noch nur die Server in ihrem eigenen
1172 Subnetz.
1173
1174 Der lokale Master Browser im Subnetz 3 (\nbname{N3D}) macht nun exakt
1175 das gleiche wie \nbname{N2B}. Wenn er die Browse Listen mit dem Domain
1176 Master Browser (\nbname{N1B}) abgeglichen hat, bekommt er sowohl die
1177 Server in Subnetz 1, als auch die im Subnetz 2. Nachdem sich
1178 \nbname{N3D} mit \nbname{N1C} synchronisiert hat und umgekehrt, sehen
1179 die Browse Listen folgenderma"sen aus:
1180
1181 \vspace{\baselineskip}
1182 \[\begin{tabular}{|c|c|l|}
1183 \hline
1184 Netz & LMB &  Liste \\ \hline \hline
1185 1 & \nbname{N1C} & \nbname{N1A}, \nbname{N1B}, \nbname{N1C}, \nbname{N1D}\\
1186   & & \nbname{N2A*}, \nbname{N2B*}, \nbname{N2C*}, \nbname{N2D*}\\
1187   & & \nbname{N3A*}, \nbname{N3B*}, \nbname{N3C*}, \nbname{N3D*}\\
1188 \hline
1189 2 & \nbname{N2B} & \nbname{N2A}, \nbname{N2B}, \nbname{N2C}, \nbname{N2D}\\
1190   & & \nbname{N1A*}, \nbname{N1B*}, \nbname{N1C*}, \nbname{N1D*}\\
1191 \hline
1192 3 & \nbname{N3D} & \nbname{N3A}, \nbname{N3B}, \nbname{N3C}, \nbname{N3D}\\
1193   & & \nbname{N1A*}, \nbname{N1B*}, \nbname{N1C*}, \nbname{N1D*}\\
1194   & & \nbname{N2A*}, \nbname{N2B*}, \nbname{N2C*}, \nbname{N2D*}\\
1195 \hline
1196 \end{tabular}\]
1197 \vspace{\baselineskip}
1198
1199 Jetzt sehen Benutzer in den Subnetzen 1 und 3 alle Server in allen
1200 Subnetzen, Benutzer im Subnetz 2 sehen jedoch immer noch nur die
1201 Server von Subnetz 1 und 2, nicht jedoch die im Subnetz 3.
1202
1203 Zum guten Schlu"s wird sich der lokale Master Browser im Subnetz 2
1204 (\nbname{N2B}) erneut mit dem Domain Master Browser abstimmen, und die
1205 fehlenden Servereintr"age bekommen. Endlich sehen die Browse Listen
1206 als stabiler Zustand so aus:
1207
1208 \vspace{\baselineskip}
1209 \[\begin{tabular}{|c|c|l|}
1210 \hline
1211 Netz & LMB &  Liste \\ \hline \hline
1212 1 & \nbname{N1C} & \nbname{N1A}, \nbname{N1B}, \nbname{N1C}, \nbname{N1D}\\
1213   & & \nbname{N2A*}, \nbname{N2B*}, \nbname{N2C*}, \nbname{N2D*}\\
1214   & & \nbname{N3A*}, \nbname{N3B*}, \nbname{N3C*}, \nbname{N3D*}\\
1215 \hline
1216 2 & \nbname{N2B} & \nbname{N2A}, \nbname{N2B}, \nbname{N2C}, \nbname{N2D}\\
1217   & & \nbname{N1A*}, \nbname{N1B*}, \nbname{N1C*}, \nbname{N1D*}\\
1218   & & \nbname{N3A*}, \nbname{N3B*}, \nbname{N3C*}, \nbname{N3D*}\\
1219 \hline
1220 3 & \nbname{N3D} & \nbname{N3A}, \nbname{N3B}, \nbname{N3C}, \nbname{N3D}\\
1221   & & \nbname{N1A*}, \nbname{N1B*}, \nbname{N1C*}, \nbname{N1D*}\\
1222   & & \nbname{N2A*}, \nbname{N2B*}, \nbname{N2C*}, \nbname{N2D*}\\
1223 \hline
1224 \end{tabular}\]
1225 \vspace{\baselineskip}
1226
1227 Synchronisationen zwischen dem Domain Master Browser und den Lokalen
1228 Master Browsern wird weiterhin auftreten, aber dies sollte den
1229 stabilen Zustand nur best"atigen.
1230
1231 Wenn Router R1 oder R2 ausfallen, wird das folgende passieren:
1232
1233 \begin{enumerate}
1234 \item Namen der Computer auf beiden Seiten der nicht mehr erreichbaren
1235 Subnetze werden f"ur 36 Minuten weiter in den Browse Listen gehalten,
1236 so da"s sie in der Netzwerkumgebung weiterhin erscheinen.
1237
1238 \item Versuche, Verbindungen zu diesen Rechnern aufzubauen, werden
1239 scheitern, aber die Namen werden nicht von den Browse Listen entfernt
1240 werden.
1241
1242 \item Wenn ein Subnetz vom WINS Server getrennt wird, wird es nur noch
1243 auf die lokalen Server zugreifen k"onnen, deren Namen mit lokaler
1244 Broadcast NetBIOS-Namensaufl"osung aufgel"ost werden k"onnen. Das ist
1245 vergleichbar mit der Situation, keinen Zugriff auf einen DNS Server
1246 mehr zu haben.
1247 \end{enumerate}
1248
1249 \section{Einfache Freigaben}
1250
1251 Der grunds"atzliche Aufbau der Datei \datei{smb.conf} wurde bereits
1252 auf Seite (\pageref{aufbau-smb.conf}) erw"ahnt. Bis zu diesem Punkt
1253 hat sich s"amtliche Konfiguration im Abschnitt \texttt{[global]}
1254 abgespielt, der globale Servereinstellungen beinhaltet. Wenn der
1255 Sambarechner nicht nur im Netz gesehen werden soll, sondern auch
1256 sinnvolle Dinge tun soll, mu"s man Freigaben zur Verf"ugung stellen.
1257 Dies tut man, indem man einfach einen neuen Abschnitt beginnt, dessen
1258 Name gerade nicht \texttt{[global]} ist. Um eine Freigabe vollst"andig
1259 zu machen, mu"s man mit dem Parameter \texttt{path} angeben, welches
1260 Verzeichnis man freigeben m"ochte. Eine f"ur alle Zugriffe offene
1261 Freigabe des Verzeichnisses \datei{/cdrom} erreicht man mit folgender
1262 \datei{smb.conf}:
1263
1264 \begin{verbatim}
1265 [global]
1266 workgroup = arbeitsgruppe
1267 interfaces = <IP-Adresse>/<Netzmaske>
1268 security = share
1269 encrypt passwords = yes
1270
1271 [cd]
1272 path = /cdrom
1273 guest ok = yes
1274 \end{verbatim}
1275
1276 \noindent
1277 Damit entsteht auf dem Server eine Freigabe namens \texttt{CD}, die
1278 das Verzeichnis \datei{/cdrom} im Netz f"ur alle zum Lesen zur
1279 Verf"ugung stellt.
1280
1281 \textbf{Achtung:} 
1282 Es findet hier \emph{keine} "Uberpr"ufung der Zugriffsrechte statt. Um
1283 diese "Uberpr"ufung zu erm"oglichen, sollte zun"achst einmal der
1284 Aufbau einer Verbindung zu einer Freigabe genauer beleuchtet werden.
1285
1286 \section{SMB-Sitzungen}
1287
1288 Wird am Client eine Verbindung zu einer Freigabe auf einem SMB-Server
1289 aufgebaut, so m"ussen mehrere Schritte durchlaufen werden.
1290
1291 \subsection*{NetBIOS-Namensaufl"osung}
1292
1293 Zu einem Rechnernamen mu"s eine IP-Adresse herausgefunden werden. Dies
1294 wurde in den letzten Abschnitten eingehend behandelt.
1295
1296 \subsection*{TCP-Verbindung}
1297
1298 Wenn die IP-Adresse klar ist, wird eine TCP-Verbindung zu Port 139 des
1299 Servers aufgebaut. Um vorhandene TCP-Verbindungen anzuzeigen, gibt es
1300 sowohl auf Unix- als auch auf Windowsrechnern das Werkzeug
1301 \prog{netstat}.
1302
1303 \subsection*{NetBIOS-Sitzung}
1304
1305 Auf einem Serverrechner arbeiten unter Umst"anden mehrere
1306 Applikationen, die Namen f"ur sich reserviert haben. Diese sind alle
1307 unter der IP-Adresse des Rechners und dem TCP-Protokoll auf Port 139
1308 erreichbar. Anhand des TCP-Verbindungsaufbaus ist nicht klar, welche
1309 Serverapplikation angesprochen werden soll. Die Unterscheidung wird
1310 durch den Servernamen getroffen, der in der TCP-Verbindung als erstes
1311 "ubertragen wird.
1312
1313 Da"s der Servername "ubertragen wird, kann man ganz einfach mit Hilfe
1314 des Programms \prog{smbclient} sehen. Man versucht, sich die Liste der
1315 Freigaben eines realen Windowsrechners geben zu lassen, indem man
1316 folgendes aufruft:
1317
1318 \verb|smbclient -L smallwin|
1319
1320 Damit wird zun"achst eine NetBIOS-Namensanfrage ausgel"ost, und dann
1321 eine Verbindung zum entsprechenden Server ausgel"ost. \prog{smbclient}
1322 hat jedoch die M"oglichkeit, einen Server unter einem anderen Namen
1323 anzusprechen, indem man
1324
1325 \verb|smbclient -L test -I ip-adresse|
1326
1327 \noindent
1328 eingibt. \prog{smbclient} wird zun"achst versuchen, eine Verbindung
1329 zum NetBIOS-Namen \texttt{test} aufzubauen, und zwar ohne da"s eine
1330 NetBIOS-Namensanfrage ausgel"ost wird. Stattdessen wird die angegebene
1331 IP-Adresse auf Port 139 direkt angesprochen, und der Name
1332 \texttt{test} als Servername angegeben. Windows merkt, da"s das nicht
1333 stimmen kann und verweigert den Verbindungsaufbau mit einer
1334 Fehlermeldung. Erst im zweiten Versuch wird es \prog{smbclient}
1335 gelingen, eine Verbindung aufzubauen, da diese Verbindung zum
1336 allgemeinen Namen \texttt{*smbserver}\footnote{Das Protokoll wurde als
1337 Antwort auf das WebNFS von SUN in Common Internet File System umbenannt.
1338 Im Gegensatz zur Firma SUN, die tats"achlich das NFS-Protokoll verbessert
1339 hat, hat sich Microsoft die Arbeit einfacher gemacht. Der Name
1340 \texttt{*SMBSERVER} ist der einzige echte Unterschied, den CIFS von
1341 seinem Urvater SMB unterscheidet. Mit Windows 2000 werden diese
1342 NetBIOS-Namen beim Verbindungsaufbau gar komplett unterschlagen.
1343 Daf"ur ist es aber notwendig, einen weiteren Port zu reservieren, und
1344 zwar Port 445.} aufgebaut wird.
1345
1346 Auch der Clientname wird in der Verbindung "ubergeben. Dies testet man
1347 am besten mit
1348
1349 \verb|smbclient //win/c\$ -n blafasel| 
1350
1351 \noindent und schaut sich
1352 die Verbindungstabelle auf der Windowsmaschine mit \verb|nbtstat -s|
1353 an.
1354
1355 Mit dem "ubergebenen Servernamen kann man sehr nette Tricks anstellen.
1356 Man stelle sich vor, da"s einige Freigaben nur f"ur bestimmte
1357 Clientrechner sichtbar sein sollen. Dies ist mit Bordmitteln von Samba
1358 so nicht m"oglich. Man kann zwar mit dem Parameter \param{browseable}
1359 festlegen, ob bestimmte Freigaben in der Netzwerkumgebung erscheinen.
1360 Dieser Parameter hat aber zwei Nachteile.  Erstens sind die Freigaben nur
1361 unsichtbar geworden, darauf zugreifen kann man immer noch. Zweitens kann man
1362 Freigaben nur f"ur alle Rechner verstecken oder freigeben.
1363
1364 Samba bietet die Option, unter zwei oder mehreren verschiedenen Namen
1365 in der Netzwerkumgebung zu erscheinen. Mit dem Parameter
1366 \param{netbios name} gibt man einen Namen f"ur den Server an.
1367 Zus"atzliche Namen kann man mit \param{netbios aliases} vergeben. Mit
1368
1369 \begin{verbatim}
1370 netbios name = fichte
1371 netbios aliases = birke eiche kiefer buche
1372 \end{verbatim}
1373
1374 \noindent
1375 handelt man sich einen ganzen Wald in der Netzwerkumgebung ein. Klickt
1376 man auf die einzelnen Server, sieht man "uberall die gleichen
1377 Freigaben und Zugriffsrechte. Nun kann man f"ur jeden dieser
1378 virtuellen Rechner eine eigene Konfigurationsdatei anlegen.
1379 Beispielsweise kann man sie \datei{/etc/smb.conf.birke},
1380 \datei{/etc/smb.conf.eiche} und so weiter nennen. Die Datei
1381 \datei{/etc/smb.conf} ist f"ur den Rechner \nbname{fichte} zust"andig
1382 und enth"alt neben den Einstellungen f"ur \nbname{fichte} den
1383 Parameter 
1384
1385 \param{config file = /etc/smb.conf.\%L}
1386
1387 \noindent Dabei steht
1388 \param{\%L} f"ur den Servernamen, unter dem Samba angesprochen wird.
1389 Wenn es eine passende Datei gibt, dann bewirkt der Parameter
1390 \param{config file}, da"s die komplette Konfiguration neu eingelesen
1391 wird. Existiert keine passende Datei, so wird der Parameter einfach
1392 ignoriert. Um nun den Zugriff nur f"ur einzelne Clients zu erlauben,
1393 kann bei den einzelnen virtuellen Servern mit den Parametern
1394 \param{hosts allow} und \param{hosts deny} der Zugriff geregelt
1395 werden.
1396
1397 \subsection*{Negotiate Protocol}
1398
1399 Die NetBIOS-Sitzung ist nun aufgebaut, und es k"onnen Daten
1400 "ubermittelt werden. Innerhalb dieser NetBIOS-Sitzung wird eine
1401 SMB-Sitzung schrittweise aufgebaut. SMB ist ein Protokoll, bei dem im
1402 Prinzip der Client jede Aktion durch eine Anfrage anst"o"st, und der
1403 Server diese beantwortet\footnote{Im Prinzip deshalb, da mit Oplocks
1404   auch der Server von sich aus aktiv werden kann.}.
1405
1406 SMB (Server Message Block) ist ein gewachsenes Protokoll. Es ist mit
1407 den F"ahigkeiten der Betriebssysteme gewachsen, die damit arbeiten.
1408 Zun"achst ist es entstanden, um die Dateisystemaufrufe der MS-DOS
1409 Systemschnittstelle INT 0x21 auf das Netz zu verlagern. Mit einer
1410 gewissen Weitsicht hat man jedoch vorausgesehen, da"s die Entwicklung
1411 nicht bei MS-DOS stehen bleiben w"urde, sondern sich die
1412 Dateisystemaufrufe "andern w"urden. Man hat im Protokoll also eine
1413 M"oglichkeit vorgesehen, mit der unterschiedliche Protokollvarianten
1414 ausgehandelt werden k"onnen. Die unterschiedlichen Protokolle
1415 orientieren sich immer an den F"ahigkeiten der jeweiligen
1416 Betriebssysteme. Beispielsweise wurde mit dem LAN Manager, der eine
1417 Benutzerverwaltung besitzt, das Konzept des Benutzers im Protokoll
1418 aufgenommen. OS/2 hat ein recht weitgehendes Konzept der
1419 Druckerverwaltung, das entsprechend mit Protokollerweiterungen bedacht
1420 wurde. Sogar f"ur XENIX gibt es einen eigenen Protokolldialekt, der
1421 das Unix-Zugriffsrechtekonzept im SMB-Protokoll abbildet. Diese
1422 Protokollvariante beherrscht nur leider kein moderner Client. Mit
1423 Ausnahme des ausgestorbenen XENIX-Dialektes lassen sich die Protokolle
1424 gut in eine Hierarchie einordnen. Sp"atere Protokolle beherrschen alle
1425 Aspekte der vorherigen Varianten.
1426
1427 Die erste Anfrage, die der Client an den Server schickt, ist ein
1428 \defin{Negotiate Protocol Request}. In dieser Anfrage schickt der
1429 Client an den Server eine Liste der Protokollvarianten, die er
1430 beherrscht. Der Server w"ahlt nun aus dieser Liste der Protokolle eins
1431 aus, und schickt eine entsprechende Antwort zur"uck. Die verschiedenen
1432 Protokolle bauen aufeinander auf. Daher kann man mit dem Parameter
1433 \param{protocol} das h"ochste Protokoll festlegen, mit dem Samba
1434 arbeiten soll.
1435
1436 In der Antwort auf diese erste Anfrage werden zwei weitere
1437 Einstellungen verschickt, die Teile des weiteren Ablaufs festlegen.
1438
1439 Der Server entscheidet, ob er die Zugriffssteuerung auf Benutzer- oder
1440 auf Freigabeebene regeln m"ochte. Damit wird festgelegt, zu welchem
1441 Zeitpunkt der Benutzer ein Pa"swort liefern mu"s. Entweder kann es
1442 beim direkt folgenden \defin{Session Setup} erfolgen, oder erst beim
1443 \defin{Tree Connect} danach.
1444
1445 Der Parameter \param{security} legt fest, welche Art der
1446 Zugriffssteuerung gew"ahlt wurde.  Mit \param{security = share} wird
1447 die Freigabeebene eingestellt, \param{security = user} legt die
1448 Clients auf die Benutzerebene fest.
1449
1450 Sichtbar wird diese Unterscheidung in der Windowswelt nur bei Windows
1451 95 und Windows 98. Diese Betriebssysteme beherrschen zun"achst einmal
1452 nur die Zugriffssteuerung auf Freigabeebene, da sie nicht "uber eine
1453 Benutzerdatenbank verf"ugen.  Es ist nicht m"oglich, einzelnen
1454 Benutzern den Zugriff auf Freigaben zu gew"ahren oder zu
1455 verweigern. Um trotzdem benutzerbasiert Zugriffssteuerung zu
1456 erm"oglichen, mu"s ein Server angegeben werden, der f"ur Windows die
1457 Benutzerdatenbank pflegt. Damit k"onnen Pa"sw"orter benutzerbasiert
1458 "uberpr"uft werden.
1459
1460 Weiterhin gibt der Server dem Client vor, ob Klartextpa"sw"orter
1461 verwendet werden sollen, oder ob die Pa"sw"orter verschl"usselt
1462 werden. Wenn der Server festlegt, da"s verschl"usselte Pa"sw"orter
1463 verwendet werden, wird zus"atzlich die Herausforderung f"ur das
1464 \defin{Challenge Response} Verfahren mitgeschickt.
1465
1466 Die Entscheidung "uber Klartextpa"sw"orter mu"s also getroffen werden,
1467 ohne da"s der Server den Benutzernamen, der sich anmelden will,
1468 kennt. Es ist also nicht m"oglich, f"ur einige Benutzer
1469 Klartextpa"sw"orter und f"ur andere Benutzer verschl"usselte
1470 Pa"sw"orter zu verwenden.
1471
1472 \subsection*{Session Setup}
1473
1474 Nachdem die Protokollversion ausgehandelt ist, wird vom Client ein
1475 \defin{Session Setup} verschickt. In diesem Session Setup schickt der
1476 Client seinen Benutzernamen an den Server. Sofern dieser
1477 \param{security = user} verlangt hat, wird an dieser Stelle das
1478 Pa"swort mitgeschickt. Damit ist der Server in der Lage, die
1479 Identit"at des Benutzers festzustellen. Wenn \param{security = share}
1480 vereinbart wurde, dann ignoriert der Server ein hier eventuell
1481 mitgeschicktes Pa"swort.
1482
1483 \subsection*{Tree Connect}
1484
1485 Als letztes legt der Client fest, welche Freigabe er ansprechen will.
1486 Der entsprechende Aufruf hei"st \defin{Tree Connect}. Sofern
1487 \param{security = share} vereinbart wurde, wird an dieser Stelle das
1488 Pa"swort "uberpr"uft. Der Benutzername kann in diesem Fall nicht zur
1489 Zugriffsregelung verwendet werden. Dieser wurde unter Umst"anden gar
1490 nicht "ubermittelt, da der Client den Session Setup komplett auslassen
1491 darf. Andererseits hat er bei einem durchgef"uhrten Session Setup kein
1492 Pa"swort angeben m"ussen, anhand dessen die Identit"at des Benutzers
1493 zweifelsfrei h"atte festgestellt werden k"onnen.
1494
1495 \section{Zugriffsrechte}
1496
1497 Bei Windows NT kann man mit zwei unterschiedlichen Mechanismen Rechte
1498 vergeben. An einer Freigabe kann man "uber Schreib- und Lesezugriff
1499 entscheiden. Innerhalb des Dateisystems kann man detailiert Rechte
1500 vergeben.
1501
1502 Ist bei Samba \param{security = user} gesetzt, so hat der Server die
1503 M"oglichkeit, anhand des angemeldeten Benutzers Zugriffsrechte zu
1504 vergeben oder zu verweigern. Wenn bez"uglich der Zugriffsrechte bei
1505 einer Freigabe nichts gesagt wird, hat jeder korrekt angemeldete
1506 Benutzer Leserecht. Man kann auch Gastbenutzern Leserecht geben, indem
1507 man \param{guest ok = yes} setzt.
1508
1509 Mit den Optionen zur Rechtevergabe an Freigaben hat man die
1510 M"oglichkeit, einzelnen Benutzern und ganzen Unixgruppen Rechte zu
1511 geben oder zu nehmen. Die M"oglichkeiten sind hier deutlich weitergehend 
1512 als die Semantik, die Unix mit den Rechtemasken f"ur den
1513 Dateibesitzer, die besitzende Gruppe und den Rest der Welt bereit
1514 stellt. Von den m"oglichen Anwendungen sollen hier drei h"aufig
1515 ben"otigte F"alle dargestellt werden.
1516
1517 \begin{itemize}
1518 \item {\bf \emph{Alle} Benutzer haben gleichen Zugriff}
1519
1520 \begin{verbatim}
1521 [projekt]
1522 path = /data/projekt
1523 \end{verbatim}
1524
1525 Bei dieser Freigabe bekommen alle Benutzer, die sich mit Namen und
1526 Pa"swort am Server angemeldet haben, \emph{Leserecht} auf die
1527 Freigabe. Schreibrecht vergibt man, indem man den Parameter
1528 \param{writeable = yes} setzt:
1529
1530 \begin{verbatim}
1531 [projekt]
1532 path = /data/projekt
1533 writeable = yes
1534 \end{verbatim}
1535
1536 \item {\bf \emph{Einige} Benutzer haben gleichen Zugriff}
1537
1538 Will man den Zugriff auf einige Benutzer einschr"anken, erstellt man
1539 eine Liste \param{valid users} auf:
1540
1541 \begin{verbatim}
1542 [projekt]
1543 path = /data/projekt
1544 valid users = mueller, meier
1545 \end{verbatim}
1546
1547 Zu dieser Freigabe haben die Benutzer mueller und meier
1548 Lesezugriff. Sollen diese Benutzer Schreibzugriff bekommen, so ist wie
1549 im vorangegangenen Beispiel der Parameter \param{writeable = yes} zu
1550 setzen:
1551
1552 \begin{verbatim}
1553 [projekt]
1554 path = /data/projekt
1555 valid users = mueller, meier
1556 writeable = yes
1557 \end{verbatim}
1558
1559 F"ur den Parameter \param{valid users} spielt der Benutzer root keine
1560 besondere Rolle. Das hei"st, da"s er auf die Freigabe \param{projekt}
1561 keinen Zugriff hat. Soll er Zugriff bekommen, mu"s man ihn wie jeden
1562 anderen Benutzer in die Liste \param{valid users} mit aufnehmen.
1563
1564 Der Parameter \param{valid users} gibt die M"oglichkeit, ganze
1565 Unixgruppen in den Zugriff mit aufzunehmen. Um dies zu erreichen, mu"s
1566 man das at-Zeichen voranstellen:
1567
1568 \begin{verbatim}
1569 [projekt]
1570 path = /data/projekt
1571 valid users = root, @users
1572 writeable = yes
1573 \end{verbatim}
1574
1575 Mit dieser Einstellung haben alle Benutzer, die in der Unixgruppe
1576 users sind, Schreibzugriff auf die Freigabe. Zus"atzlich kann der
1577 Benutzer root schreiben.
1578
1579 \item {\bf Einige Benutzer haben Leserecht, andere Schreibrecht}
1580
1581 Will man differenziert Rechte vergeben, so mu"s man s"amtliche
1582 Benutzer, die "uberhaupt Zugriff auf die Freigabe bekommen sollen, in
1583 die Liste \param{valid users} aufnehmen, und mit \param{writeable =
1584 no} nur Leserechte vergeben. Die Benutzer, die "uber diese
1585 Standardeinstellung hinaus Schreibrecht bekommen sollen, m"ussen in
1586 die \param{write list} aufgenommen werden.
1587
1588 \begin{verbatim}
1589 [projekt]
1590 path = /data/projekt
1591 valid users = @users, @admins
1592 writeable = no
1593 write list = @admins
1594 \end{verbatim}
1595
1596 Mit diesen Einstellungen haben die Benutzer der Gruppe users
1597 Leserecht, und die Benutzer der Gruppe admins haben Schreibrecht.
1598
1599 \end{itemize}
1600
1601 \section{Unix-Zugriffsrechte}
1602
1603 Unter Windows NT gibt es zwei M"oglichkeiten, Zugriff auf Dateien zu
1604 gew"ahren. "Uber eine Freigabe kann ein Lese- oder ein Schreibrecht
1605 vergeben werden. Im zweiten Schritt k"onnen dann "uber eine
1606 Rechtevergabe im Dateisystem weitere Rechte vergeben werden. Samba
1607 regelt die Zugriffskontrolle ebenfalls in zwei Schritten. Die
1608 freigabebezogenen Rechte werden "uber Parameter wie \param{valid
1609 users} und \param{write ok} geregelt. Die Zugriffsrechte innerhalb des
1610 Dateisystems regelt Samba nicht selbst, sondern verl"a"st sich
1611 hierf"ur auf das darunterliegende Betriebssystem Unix.
1612
1613 Zwischen Unix und DOS bestehen gro"se Unterschiede. DOS und alle seine
1614 Nachfolger sind Einzelbenutzersysteme, Unix ist von Anfang an als
1615 Multiusersystem entworfen worden. Diese Unterschiede werden besonders
1616 deutlich, wenn man die Attribute betrachtet, die auf Dateien vergeben
1617 werden. DOS kennt vier Attribute:
1618
1619 \begin{description}
1620 \item[Read-Only] Der Inhalt dieser Datei kann nur gelesen, aber nicht
1621 geschrieben werden. Die Datei kann nicht gel"oscht werden.
1622 \item[System] Diese Datei ist f"ur spezielle Betriebssystemzwecke
1623 vorgesehen.
1624 \item[Hidden] Diese Datei wird mit dem Kommando 'DIR' nicht angezeigt.
1625 \item[Archiv] Das Archivbit wird bei jedem Schreibzugriff gesetzt.
1626 Backupprogrammen ist es freigestellt, dieses Bit zur"uckzusetzen.
1627 Damit kann eine inkrementelle Sicherung erm"oglicht werden.
1628 \end{description}
1629
1630 Diese Bits k"onnen vom Benutzer frei gesetzt und wieder zur"uckgesetzt
1631 werden. Sie bieten also keinen echten Zugriffsschutz, sondern nur eine
1632 gewisse Sicherung gegen Fehlbedienung.
1633
1634 Unix f"uhrt mit jeder Datei einen Satz von Zugriffsrechten mit. Diese
1635 sind aufgeteilt in 3 Gruppen von Benutzern: Der Dateibesitzer, die
1636 besitzende Gruppe und alle anderen. Jeder Gruppe k"onnen 3
1637 Rechte zugeteilt werden: Lesen, Schreiben und ausf"uhren.
1638
1639 Unter DOS werden Ausf"uhrungsrechte nicht verwendet. Sie stehen f"ur
1640 Samba zur Verf"ugung, um die DOS-Attribute im Unix-Dateisystem
1641 abzubilden. Das Schreibschutzbit unter DOS hat mit dem Schreibrecht
1642 des Dateibesitzers unter Unix eine Entsprechung. Bis auf die Umsetzung
1643 des Schreibschutzbits kann die Umsetzung der Attribute unter Samba mit
1644 den entsprechenden Parametern \param{map <xxx>} gesteuert werden,
1645 wobei das Archivbit ohne Zusatzangabe umgesetzt wird, die anderen
1646 beiden Attribute nicht. Die Attributumsetzung erfolgt anhand der
1647 folgenden Tabelle:
1648
1649 \[ \begin{tabular}{|l|l|c|l|l|}
1650 \hline
1651 DOS-Attribut & Unix-Recht & Maske & Parameter & Standard \\
1652 \hline\hline
1653 Schreibschutz & Schreibrecht Besitzer & 200 & - & immer \\
1654 \hline
1655 Archiv & Ausf"uhrung Besitzer & 100 & \param{map archive} & \param{yes} \\
1656 \hline
1657 System & Ausf"uhrung Gruppe & 010 & \param{map system} & \param{no} \\
1658 \hline
1659 Versteckt & Ausf"uhrung Andere & 001 & \param{map hidden} & \param{no} \\
1660 \hline
1661 \end{tabular} \]
1662
1663 Samba mu"s nun diese beiden Dateiattribute ineinander "uberf"uhren.
1664 Samba mu"s neu erstellten Dateien Unixrechte zuordnen.  Wird eine
1665 Datei neu erstellt, dann gibt der Client dem Server die DOS-Attribute
1666 mit, mit der er die Datei erstellt haben m"ochte. Daraus formt Samba
1667 einen Satz von Unix-Zugriffsrechten. Diese Rechte werden vom Parameter
1668 \param{create mask} eingeschr"ankt. Die Standardvorgabe f"ur die
1669 \param{create mask} ist gleich \param{744}, was der Rechtemaske
1670 \param{rwxr--r--} entspricht. Der Dateieigent"umer hat Schreib- und
1671 Leserecht, alle anderen haben reines Leserecht. Samba schr"ankt die
1672 Rechte ein, indem der gew"unschte Satz an Rechten mit einer logischen
1673 UND-Operation mit der \param{create mask} verkn"upft wird. Nur die
1674 Rechte, die in der \param{create mask} gesetzt sind, k"onnen
1675 m"oglicherweise in der neu erzeugten Datei auftauchen. In einem
1676 weiteren Schritt setzt Samba explizit gew"unschte Zugriffsrechte
1677 anhand des Parameters \param{force create mode}, dessen Standardwert
1678 auf \param{000} steht. Dies geschieht durch eine ODER-Verkn"upfung mit
1679 diesem Wert.
1680
1681 Diese Zusammenh"ange werden an einem Beispiel deutlicher. Es kann
1682 gew"unscht sein, da"s auf neu erstellten Dateien nur der
1683 Dateibesitzer und die Gruppe Leserecht haben sollen. Der Rest der Welt
1684 soll diese Dateien nicht lesen k"onnen. Das wird dadurch erreicht,
1685 da"s man die \param{create mask = 740} setzt, also das Leserecht f"ur
1686 den Rest der Welt ausmaskiert. Es kann dar"uber hinaus gew"unscht
1687 sein, da"s die besitztende Gruppe ein Schreibrecht einger"aumt
1688 bekommt. Das kann man durch \param{force create mode = 020} erreichen.
1689 Tabellarisch dargestellt hei"st dies:
1690
1691 \[ \begin{tabular}{|l|l||c|l|}
1692 \hline
1693 Wunsch & & & \texttt{rw-r-{}-r-{}-} \\
1694 \hline
1695 create mask & 740 & UND & \texttt{rw-r-{}-{}-{}-{}-} \\
1696 \hline
1697 \hline
1698 & & & \texttt{rw-r-{}-{}-{}-{}-} \\
1699 \hline
1700 force create mode & 020 & ODER & \texttt{-{}-{}-{}-w-{}-{}-{}-} \\
1701 \hline
1702 \hline
1703 Ergebnis & & & \texttt{rw-rw-{}-{}-{}-} \\
1704 \hline
1705 \end{tabular} \]
1706
1707 Die Ausf"uhrungsrechte auf Dateien werden unter DOS nicht verwendet,
1708 sie k"onnen also verwendet werden, um DOS-Attribute im
1709 Unix-Dateisystem abzulegen. Ausf"uhrungsrechte auf Dateiverzeichnissen
1710 wirken sich jedoch auf das Verhalten von Samba aus, da durch sie der
1711 Zugriff zu den Verzeichnissen geregelt wird.  Daher kann es
1712 w"unschenswert sein, da"s die Rechtezuweisung auf Dateien und
1713 Verzeichnissen unterschiedlich geregelt wird. Die Parameter
1714 \param{create mask} und \param{force create mode} wirken daher nur auf
1715 neu angelegte Dateien.  F"ur Verzeichnisse sind die Parameter
1716 \param{directory mask} und \param{force directory mode}
1717 verantwortlich. Der Vorgabewert f"ur \param{directory mask} ist
1718 hierbei \param{755}, um den Zutritt f"ur die Gruppe und den Rest der
1719 Welt zu erm"oglichen, die Vorgabe f"ur \param{force directory mode}
1720 besetzt mit dem Wert \param{000} kein zus"atzliches Recht.
1721
1722 \section{Beispiel: Projektverzeichnisse}
1723
1724 Folgendes Problem stellt sich bei der Migration von Novell zu Samba
1725 recht h"aufig. Unter Novell kann man anhand von
1726 Gruppenzugeh"origkeiten den Zugriff auf Verzeichnisse regeln. Dies ist
1727 unter Samba anhand von Unixrechten ebenfalls m"oglich. Was Unix leider
1728 nicht zur Verf"ugung stellt, ist die M"oglichkeit, Verzeichnisse vor
1729 Benutzern zu verstecken. Ein Benutzer sieht grunds"atzlich alle
1730 Verzeichnisse, bekommt aber bei vielen dieser Verzeichnisse die
1731 Meldung, da"s der Zugriff verweigert wurde. Wenn es jetzt anhand der
1732 Gruppenzugeh"origkeit des Benutzers m"oglich w"are, nur die
1733 Verzeichnisse anzuzeigen, auf die er tats"achlich Zugriff hat,
1734 k"onnten die Verzeichnisse deutlich "ubersichtlicher werden.
1735
1736 Die Flexibilit"at von Samba erm"oglicht es, diese von Unix
1737 vorgegeben Beschr"ankung zu umgehen, und zwar unter Benutzung von
1738 Skripten, die vor dem Verbinden mit einer Freigabe ausgef"uhrt werden.
1739
1740 Folgendes Szenario wird vorausgesetzt: Jeder Benutzer ist in mehrere
1741 Gruppen eingeteilt, die jeweils Projekte, Arbeitsgruppen oder
1742 Abteilungen darstellen k"onnen. Jede dieser Gruppen hat unter
1743 \datei{/data/groups} ein eigenes Verzeichnis, auf das sie schreiben
1744 darf. Die einzelnen Verzeichnisse haben das Set Group ID Bit gesetzt,
1745 damit die neu angelegten Dateien den jeweiligen Gruppen angeh"oren.
1746
1747 Als Beispiel gebe es die drei Gruppen \param{edv}, \param{fibu} und
1748 \param{verkauf}. Das Gruppenverzeichnis \datei{/data/groups} sieht
1749 folgenderma"sen aus:
1750
1751 {\small\begin{verbatim}
1752 root@server:/data/groups> ls -l
1753 total 12
1754 drwxrws---   2 root     edv          4096 Jan 31 06:43 edv
1755 drwxrws---   2 root     fibu         4096 Jan 31 06:43 fibu
1756 drwxrws---   2 root     verkauf      4096 Jan 31 06:43 verkauf
1757 root@server:/data/groups>
1758 \end{verbatim}
1759 }
1760
1761 Die korrekten Rechte erreicht man unter Unix durch:
1762
1763 {\small\begin{verbatim}
1764 root@server:/root> mkdir /data/groups/edv
1765 root@server:/root> chgrp edv /data/groups/edv
1766 root@server:/root> chmod 2770 /data/groups/edv
1767 \end{verbatim}
1768 }
1769
1770 Eine Freigabe, die jedem Benutzer anhand seiner Rechte hierauf Zugriff
1771 gew"ahrt, kann folgenderma"sen aussehen:
1772
1773 {\small\begin{verbatim}
1774 [allgroups]
1775 path = /data/groups
1776 writeable = yes
1777 create mode = 740
1778 directory mode = 750
1779 force create mode = 020
1780 force directory mode = 020
1781 \end{verbatim}
1782 }
1783
1784 Zu beachten ist hier, da"s keine zus"atzlichen Einschr"ankungen anhand
1785 von \param{valid users} notwendig sind, da der Zugriff durch die
1786 Unixrechte beschr"ankt ist. Die Parameter \param{create mask} und
1787 \param{directory mask} sind nicht strikt notwendig, da bereits auf der
1788 Ebene \datei{/data/share} die Benutzer abgewiesen werden. Die
1789 Parameter \datei{force create mode} und \param{force directory mode}
1790 sind hingegen notwendig, da ohne sie neu angelegte Dateien nicht die
1791 notwendigen Gruppenschreibrechte erhalten w"urden, die zum gemeinsamen
1792 Zugriff notwendig sind.
1793
1794 Diese Freigabe erf"ullt funktional genau die Anforderungen, da"s
1795 jeder in die Verzeichnisse schreiben darf, f"ur die er die
1796 Gruppenmitgliedschaft hat. Der Nachteil an diesem Verfahren ist, da"s
1797 er alle anderen Verzeichnisse sieht, was bei gro"sen Servern mit
1798 vielen Gruppen recht un"ubersichtlich werden kann.
1799
1800 Die preexec-Skripte von Samba erm"oglichen die "ubersichtliche
1801 Darstellung der Gruppenstruktur. Ein preexec-Skript wird ausgef"uhrt,
1802 bevor der Benutzer tats"achlich mit der Freigabe verbunden wird.
1803
1804 {\small\begin{verbatim}
1805 [gruppen]
1806 path = /data/users/%U
1807 root preexec = /usr/local/bin/mklinks %U
1808 writeable = yes
1809 \end{verbatim}
1810 }
1811
1812 Die Datei \datei{mklinks} hat folgenden Inhalt:
1813
1814 {\small\begin{verbatim}
1815 #!/bin/sh
1816 umask 022
1817 cd /data/users
1818 rm -rf "$1"
1819 mkdir "$1"
1820 cd "$1"
1821 for i in `groups $1`
1822 do
1823         ln -s /data/groups/$i .
1824 done
1825 \end{verbatim}
1826 }
1827     
1828 Beim Verbinden an die Freigabe wird das Verzeichnis
1829 \datei{/data/users/username} frisch erstellt, das anhand der
1830 Gruppenzugeh"origkeit des Benutzers eine Liste von symbolischen
1831 Links erstellt, die auf die eigentlichen Gruppenverzeichnisse
1832 verweisen. Damit bekommt er nur die Verzeichnisse im Explorer
1833 angezeigt, auf die er tats"achlich Zugriff hat. Durch die Angabe
1834 \param{path = /data/users/\%U} ist zudem sichergestellt, da"s die
1835 Freigabe f"ur alle Benutzer gleich hei"st, aber f"ur jeden
1836 Benutzer auf ein eigenes Verzeichnis verweist. Das Skript wird in
1837 diesem Beispiel als \param{root preexec} ausgef"uhrt, um den
1838 Verwaltungsaufwand beim Anlegen neuer Benutzer zu minimieren. Mit
1839 einem reinen \param{preexec} ohne Rootrechte w"are es notwendig,
1840 f"ur jeden Benutzer unterhalb von \param{/data/users} ein eigenes
1841 Verzeichnis mit den notwendigen Rechten anzulegen. Alternativ
1842 k"onnte man das Verzeichnis mit der Gruppenliste im
1843 Heimatverzeichnis des Benutzers anlegen, wobei dabei Zweifel
1844 bez"uglich der "Ubersichtlichkeit angebracht sind. Ein weiteres
1845 Argument, das Skript unter Rootrechten auszuf"uhren, ist die
1846 Betriebssicherheit. Ohne dies w"are es dem Benutzer m"oglich, sich
1847 vollst"andig von einem Gruppenverzeichnis auszuschlie"sen indem er
1848 das gesamte Verzeichnis inklusive symbolischem Link l"oscht. Mit
1849 der dargestellten Version geh"ort das Verzeichnis mit den
1850 symbolischen Links dem Benutzer root, und Fehlbedienungen in
1851 dieser Ebene sind ausgschlossen.
1852
1853 Wenn man die Freigabe \param{[allgroups]} auf \param{[browseable =
1854   no]} setzt, so hat man maximale "Ubersichtlichkeit bei vollem
1855 Zugriff auf s"amtliche Gruppenverzeichnisse durch den Administrator
1856 gegeben.
1857
1858 "Andern sich die Gruppenzugeh"origkeiten eines Benutzers, so kann
1859 er einfach durch ein Neuverbinden an die Freigabe die neue Sicht auf
1860 die Verzeichnisstruktur bekommen. Dieses Neuverbinden kann erzwungen
1861 werden, indem der richtige Serverprozess get"otet wird. Dieser kann
1862 anhand des Programms \prog{smbstatus} leicht herausgefunden werden.
1863
1864 \section{Pa"sw"orter}
1865 \label{passwoerter}
1866
1867 Protokolle der IP-Welt wie telnet, ftp und pop3 "ubertragen die
1868 Pa"sw"orter zur Benutzerauthentifizierung im Klartext. Damit kann
1869 jeder, der den Netzverkehr abh"oren kann, s"amtliche Pa"sw"orter
1870 mitschreiben. Daf"ur existieren fertige Programme, die Benutzernamen
1871 und dazugeh"orige Pa"sw"orter ausgeben. In der Unixwelt wurde dies
1872 zun"achst nicht als problematisch angesehen, da zum Zugriff auf das
1873 Netz Administratorrechte oder physikalischer Zugriff zum Netz
1874 notwendig sind. Beides war historisch oft nicht gegeben, so da"s das
1875 Risiko als relativ gering eingesch"atzt wurde. Mit dem Aufkommen von
1876 DOS und Ethernet hat jeder Benutzer Administratorrechte, kann also den
1877 Netzverkehr mitschneiden.
1878
1879 Benutzerauthentifizierung mu"s vor allem eins leisten: Der Benutzer
1880 mu"s beweisen, da"s er sein Pa"swort kennt. Ein
1881 Authentifizierungsprotokoll kann es dabei erm"oglichen, da"s das
1882 Pa"swort nicht "ubertragen werden mu"s.
1883
1884 Im SMB-Protokoll wird zur Authentifizierung ein Challenge-Response
1885 Verfahren eingesetzt. Der Server verschickt an den Client eine
1886 Zufallszahl, die sogenannte Herausforderung. Der Client kennt das
1887 Benutzerpa"swort, und verschl"usselt die Herausforderung mit dem
1888 Pa"swort als Schl"ussel. Diesen verschl"usselten Wert verschickt der
1889 Client anstelle des Pa"sworts. Der Server kennt das Benutzerpa"swort
1890 ebenfalls, und kann den versch"usselten Wert entschl"usseln. Entsteht
1891 bei der Entschl"usselung wieder die Herausforderung, so hat der
1892 Benutzer die Herausforderung offensichtlich mit dem korrekten Pa"swort
1893 verschl"usselt. Kommt etwas anderes heraus, war das Pa"swort nicht
1894 richtig.
1895
1896 \begin{figure}\[
1897 \begin{pspicture}(11.5,6.5)
1898 %\psgrid[subgriddiv=1,griddots=10]
1899 \psframe(11.5,6.5)
1900 \psline(3,6.5)(3,0)
1901 \psline(7,6.5)(7,0)
1902 \psframe[fillstyle=solid,fillcolor=lightgray](3,0)(7,6.5)
1903 \rput(2,6){{\sffamily\bfseries Client}}
1904 \rput(5,6){{\sffamily\bfseries Zuh"orer}}
1905 \rput(8,6){{\sffamily\bfseries Server}}
1906 \psline(0,5.7)(11.5,5.7)
1907
1908 \psline{->}(2.5,5)(7.5,5)
1909 \rput(5,5.2){Negotiate Protocol}
1910
1911 \rput[lB](8,4.5){H: Herausforderung}
1912 \psline{->}(7.5,4.5)(2.5,4.5)
1913 \rput(5,4.3){{\bfseries H}}
1914
1915 \psline{->}(2.5,3)(7.5,3)
1916 \rput(5,3.2){Session Setup}
1917 \rput(5,2.8){{\bfseries Username, PW(H)}}
1918 \rput[lB](0.3,3.9){Herausforderung}
1919 \rput[lB](0.3,3.5){Username}
1920 \rput[lB](0.3,3.1){Pa"swort}
1921
1922 \rput[lB](8,2.9){Username}
1923 \rput[lB](8.2,2.5){$\Rightarrow$ Pa"swort}
1924 \rput[lB](8.2,2.1){entschl"ussle PW(H)}
1925
1926 \pscurve{->}(5.8,2.7)(8,1.8)(9.5,1.8)(10,2)
1927 \rput[tl](9.8,1.9){$\Rightarrow$ H}
1928
1929 \pscurve{<->}(10.5,1.6)(10.8,1.5)(11.3,2)(11,3)(8.3,4.4)
1930 \rput[t](10.8,1.4){=?}
1931
1932 \psline{->}(7.5,0.8)(2.5,0.8)
1933 \rput(5,0.6){{\bfseries Ok?}}
1934 \end{pspicture}\]
1935 \caption{Challenge-Response Verfahren}
1936 \end{figure}
1937
1938 Ein Zuh"orer verf"ugt
1939 "uber die Herausforderung und den verschl"usselten Wert. Mit
1940 diesen beiden Werten k"onnte er einen Known Plaintext Angriff gegen
1941 die Verschl"usselung starten. Das hei"st, es mu"s ein
1942 Verschl"uselungsalgorithmus gew"ahlt werden, der gegen einen solchen
1943 Angriff immun ist. Er kann keine Replay Attacke starten, da er bei
1944 jedem neuen Verbindungsaubau eine neue Herausforderung bekommt, die er
1945 verschl"ussen mu"s.
1946
1947 Windows NT verh"alt sich diesbez"uglich vern"unftig. Windows 95 denkt
1948 sich jedoch nur alle 15 Minuten eine neue Herausforderung aus. Das
1949 hei"st, da"s jemand nur einen Verbindungsaufbau mitschneiden mu"s, und
1950 sich sofort danach mit der gleichen Benutzerkennung bei der gleichen
1951 Maschine anmelden kann. Man kann sich
1952 fast sicher darauf verlassen, die gleiche Herausforderung zu
1953 bekommen, und mit der mitgeschnittenen Antwort Zugriff zu erhalten.
1954 Dies gilt selbstverst"andlich nur f"ur die Zugriffe, bei denen Windows
1955 95 als Server benutzt wird. Und wer tut das schon?
1956
1957 Dieses Verfahren setzt voraus, da"s der Server "uber das
1958 Benutzerpa"swort im Klartext verf"ugt. Unter Unix tut er das nicht,
1959 sondern der Server kennt nur eine zerhackte Version des Pa"swortes,
1960 den Wert aus der Datei \datei{/etc/shadow}.
1961
1962 Eine Hashfunktion, wie sie unter Unix eingesetzt wird, hat drei
1963 Eigenschaften.
1964
1965 \begin{enumerate}
1966
1967 \item Sie ist leicht zu berechnen. Dies ist notwendig, damit die
1968 Pa"swort"uberpr"ufung nicht zu lange dauert.
1969
1970 \item Sie ist nur sehr schwer umkehrbar. Das hei"st, aus dem zerhackten 
1971 Pa"swort
1972 ist das Klartextpa"swort nicht berechenbar. Als Beispiel f"ur eine
1973 solche Einwegfunktion soll hier die Multiplikation
1974 herhalten. 98453*34761=3422324733 ist relativ einfach zu
1975 berechnen. Da"s die Zahl 3422324733 aus den beiden Ursprungszahlen
1976 entstanden ist, ist schon sehr viel schwieriger herauszufinden. Es
1977 gibt Verfahren, mit denen der R"uckweg ausgeschlossen ist\footnote{Wie
1978 "uberall in der Kryptographie gilt dies auch nur so lange, bis jemand
1979 den R"uckweg gefunden hat.}.
1980
1981 Mit dieser Eigenschaft war es zu rechtfertigen, da"s in den fr"uhen
1982 Tagen von Unix die Hashwerte der Pa"sw"orter f"ur alle Benutzer lesbar
1983 waren, da niemand daraus etwas ableiten konnte. Mit dem "Uberflu"s an
1984 Rechenleistung kann man aber sogenannte crack-Programme verwenden, die
1985 die erste Eigenschaft der Hashfunktion ausnutzen: Sie probieren
1986 einfach tausende von Pa"sw"ortern pro Sekunde aus. Schlechte
1987 Pa"sw"orter k"onnen so sehr schnell gefunden werden. Daher hat man die
1988 Pa"sw"orter in die nicht allgemein lesbare Datei \datei{/etc/shadow}
1989 ausgelagert.
1990
1991 \item Zwei verschiedene Pa"sw"orter f"uhren zu zwei verschiedenen
1992 Hashwerten. Damit kann das Loginprogramm ausreichend sicher sein, da"s
1993 ein korrekter Hashwert aus dem korrekten Pa"swort entstanden ist.
1994
1995 \end{enumerate}
1996
1997 Authentifizierung unter Unix setzt voraus, da"s der Client dem Server
1998 das Klartextpa"swort pr"asentiert. Der Server kann daraus den Hashwert
1999 berechnen, und mit dem gespeicherten Wert vergleichen. Leider verf"ugt
2000 er nicht "uber das Klartextpa"swort des Benutzers, um das
2001 Challenge-Response Verfahren durchf"uhren zu k"onnen. Daher mu"s unter
2002 Samba f"ur die Pa"swortversch"usselung eine zweite Pa"swortdatenbank
2003 gepflegt werden, die Datei \datei{smbpasswd}.
2004
2005 Auch in der Datei \datei{smbpasswd} stehen keine
2006 Klartextpa"sw"orter. Bevor die Herausforderung mit dem Pa"swort
2007 verschl"usselt wird, wird das Pa"swort unter Windows ebenfalls durch
2008 eine Hashfunktion geschickt. Von dieser Hashfunktion gibt es zwei
2009 Varianten, die beide nicht mit den unter Unix verwendeten Funktionen
2010 "ubereinstimmen. Das hei"st, da"s man mit den dort enthaltenen Werten
2011 so direkt nicht mehr anfangen kann als mit den Werten aus der Datei
2012 \datei{/etc/shadow} unter Unix, denn wenn man sie als Pa"swort
2013 eingeben w"urde, w"urde Windows sofort wieder den Hash darauf anwenden,
2014 und einen anderen, also falschen Wert daraus errechnen. Das Programm
2015 \prog{smbclient} mu"s diese Operation ebenfalls durchf"uhren, nur hat
2016 man hierzu den Quellcode und kann die entsprechenden Stellen
2017 auskommentieren. So hat man die M"oglichkeit, sich anhand der Werte in
2018 der \datei{smbpasswd} ohne Einsatz von crack bei einem NT-Rechner
2019 anzumelden.
2020
2021 Alles nicht dramatisch, sagt Microsoft. Das "Aquivalent zur Datei
2022 \datei{smbpasswd} liegt unter NT verschl"usselt vor. Diese
2023 Verschl"usselung mu"s jedoch reversibel sein, um das
2024 Challenge-Response Verfahren durchf"uhren zu k"onnen. Ein Teil der
2025 Sicherheitsargumentation liegt darin, da"s dieses
2026 Verschl"usselungsverfahren nicht offengelegt wurde. Das Verfahren war
2027 solange geheim, bis Jeremy Allison das Programm \prog{pwdump}
2028 ver"offentlicht hat. Dieses Programm extrahiert aus der
2029 Benutzerdatenbank von NT eine Datei, die direkt als \datei{smbpasswd}
2030 verwendet werden kann\footnote{Allerdings nur f"ur Samba 1.9, zu 2.0
2031   hin wurde das Format ge"andert. Es gibt in Samba 2.0 aber ein
2032   Konvertierungsskript.}.
2033
2034 Das hei"st, der Administrator unter NT verf"ugt direkt "uber die
2035 Pa"sw"orter aller Benutzer oder zumindest "uber etwas Gleichwertiges.
2036 Damit hat er automatisch die M"oglichkeit, sich bei fremden Systemen
2037 anzumelden, sofern dort das Pa"swort gleich ist. Bei Unix kann sich
2038 der Administrator zwar in die Identit"at jedes Benutzers versetzen.
2039 Dies bleibt aber auf das lokale System beschr"ankt, da er das Pa"swort
2040 des Benutzers nicht kennt.
2041
2042 Sollte ein neugieriger Administrator einmal an den tats"achlichen
2043 Pa"sw"orten seiner Benutzer interessiert sein, dann macht NT es ihm
2044 deutlich einfacher als Unix dies tut. Unix verwendet sogenannte
2045 versalzene Pa"sw"orter. Wenn ein Pa"swort ge"andert wird, dann wird
2046 ein Zufallswert berechnet, dem Pa"swort hinzugef"ugt und dann die
2047 Hashfunktion durchgef"uhrt. Der Zufallswert wird der Datei
2048 \datei{/etc/shadow} im Klartext hinzugef"ugt, damit die "Uberpr"ufung
2049 die gleichen Operationen durchf"uhren kann. So kann man keine Tabelle
2050 von Pa"sw"ortern und den zugeh"origen Hashwerten anlegen. Man kann
2051 auch nicht erkennen, wenn zwei Benutzer das gleiche Pa"swort
2052 verwenden. Windows NT verwendet dieses Verfahren nicht.
2053
2054 Aus Kompatibilit"atsgr"unden mu"s NT auch noch zus"atzlich einen sehr
2055 schlechten Hashwert mitf"uhren. Bei alten Windowsversionen konnte das
2056 Pa"swort bis zu 14 Zeichen lang sein. War es k"urzer, wurde es mit
2057 Leerzeichen aufgef"ullt. Dann wurde mit den ersten 7 Zeichen ein
2058 Hashwert berechnet, und dann mit den zweiten 7 Zeichen. Das hei"st, es
2059 sind sofort alle Pa"sw"orter erkennbar, die weniger als 7 Zeichen
2060 haben, da die zweite H"alfte des Hashwertes immer gleich ist.
2061
2062 \section{Druckfreigaben}
2063
2064 Um Drucker unter Samba zur Verf"ugung zu stellen, m"ussen diese von
2065 Unix aus ansprechbar sein. Unter Linux mit einem BSD-kompatiblen
2066 Drucksystem geschieht dies durch Eintr"age in der Datei
2067 \datei{/etc/printcap}. Alle Drucker, die dort definiert sind, kann man
2068 als Netzwerkdrucker f"ur Windowsclients freigeben.
2069
2070 Unter Linux ist die Frage der Druckertreiber noch nicht
2071 zufriedenstellend gel"ost. Druckertreiber unter Windows w"urde man
2072 unter Linux nicht als solche bezeichnen. In der Linuxwelt sind Treiber
2073 Softwaremodule, die direkt Hardware wie Netzwerkkarten oder den
2074 parallelen Port ansprechen. Druckertreiber im Sinne von Windows sind
2075 unter Linux sogenannte Filter, die Druckdaten in ein f"ur den Drucker
2076 akzeptables Format aufbereiten. Das einheitliche Druckformat unter
2077 Linux ist Postscript, das mit dem Programm Ghostscript in viele
2078 druckereigene Formate umgewandelt werden kann. Druckertreiber unter
2079 Windows gehen vom Windows Metafile-Format aus, und wandeln dies
2080 entsprechend um. Das Windows Metafile-Format enth"alt Aufrufe an die
2081 Graphische Komponente von Windows, das GDI.
2082
2083 Wenn man einen Drucker, der "uber Unix angesprochen wird, von Windows
2084 aus nutzen m"ochte, mu"s man planen, wo die Aufbereitung in das
2085 druckereigene Format geschehen soll. Zwei Wege sind denkbar.
2086
2087 \begin{itemize}
2088 \item Auf den Arbeitspl"atzen wird ein generischer Postscripttreiber
2089   installiert. Die Clients m"ussen nicht wissen, welches Druckermodell
2090   sich hinter einer Freigabe verbirgt.  Die Umwandlung findet auf dem
2091   Druckerserver mittels \prog{ghostscript} statt.
2092 \item Der Druckertreiber reicht die Daten weiter, ohne sie weiter zu
2093   behandeln. Auf den Arbeitspl"atzen werden f"ur jeden Netzdrucker die
2094   korrekten Treiber installiert.
2095 \end{itemize}
2096
2097 Beide Wege haben Vor- und Nachteile. Im ersten Fall hat man weniger
2098 Aufwand mit der Administration auf Clientseite. Man mu"s den korrekten
2099 "`Druckertreiber"' nur einmal definieren, am Druckerserver.  Beim
2100 zweiten Weg kann man die bessere Unterst"utzung der Druckerhersteller
2101 f"ur die Windowsplattformen nutzen. Druckertreiber f"ur Windows bieten
2102 in der Regel die M"oglichkeit, Sonderfunktionen wie die Auswahl des
2103 Papierschachtes zu nutzen. Dieser erh"ohte Komfort zieht jedoch nach
2104 sich, da"s auf jedem Client der korrekte Druckertreiber installiert
2105 ist.
2106
2107 Nutzt eine Windows NT Workstation einen Drucker, der von einem Windows
2108 NT Server freigegeben wurde, so gibt es noch die M"oglichkeit, die
2109 Druckaufbereitung komplett vom NT Server vornehmen zu lassen, und
2110 trotzdem s"amtliche Komfortfunktionen auf der Workstation zu nutzen.
2111 Dazu mu"s auf der Workstation kein Druckertreiber installiert sein.
2112 Diese sogenannten EMF-Druckerwarteschlangen kann Samba zur Zeit nicht
2113 exportieren. Samba wird dies voraussichtlich auch nicht so schnell
2114 erm"oglichen, da hierf"ur gro"se Teile von Windows, n"amlich das GDI,
2115 auf Sambaseite implementiert werden m"u"ste.
2116
2117 Eine Druckfreigabe wird genau wie eine Dateifreigabe in einem eigenen
2118 Abschnitt erstellt, wobei f"ur die Druckfunktion drei Optionen
2119 notwendig sind:
2120
2121 \begin{verbatim}
2122 [deskjet]
2123 printable = yes
2124 printer = lp
2125 path = /tmp
2126 \end{verbatim}
2127
2128 Zu einer Druckfreigabe wird die Definition durch die Angabe
2129 \param{printable = yes}.
2130
2131 Mit der Option \param{printer =} wird festgelegt, welche
2132 Druckerwarteschlange unter Unix angesprochen werden soll. Dieser
2133 Drucker mu"s das Format verstehen, das vom Windowsdruckertreiber
2134 geliefert wird. Also sollte hier entweder Postscript angenommen
2135 werden, oder die Daten sollten per sogenannter Raw-Queue direkt ohne
2136 Umwandlung an den Drucker weitergeleitet werden.
2137
2138 Die Option \param{path =} legt einen Spoolbereich fest. Ein Druckjob,
2139 den ein Windowsrechner an Samba schickt, mu"s zun"achst in einer Datei
2140 abgespeichert werden. Wenn diese Datei geschlossen wird, teilt der
2141 Client dem Server mit, da"s diese nun zum Drucker geschickt werden
2142 soll. Samba realisiert dies, indem das Programm \prog{lpr} mit der
2143 Druckdatei als Argument aufgerufen wird. Samba mu"s also f"ur sich die
2144 M"oglichkeit haben, Druckjobs in Dateien zu speichern, bevor sie an
2145 den \prog{lpd} "ubergeben werden. Dies sollte nicht das
2146 Spoolverzeichnis sein, das der \prog{lpd} selbst f"ur den Drucker
2147 vorsieht.
2148
2149 \section{Samba als Logon-Server}
2150
2151 Wenn sich in einem Netz Windows 95/98 Clients befinden, kann es
2152 w"unschenswert sein, da"s sich die Benutzer dieser Arbeitspl"atze nur
2153 mit einem Pa"swort anmelden k"onnen, das zentral auf einem Server
2154 vorgehalten wird. Dazu mu"s der entsprechende Server spezielle Aufrufe
2155 von Clients entgegennehmen und korrekt beantworten. In der reinen
2156 Windowswelt ist dazu ein Windows NT Server notwendig, der als
2157 sogenannter Primary Domain Controller (PDC) installiert ist. Samba ist
2158 ebenfalls in der Lage, dies zu tun. Dazu ist im Abschnitt
2159 \param{[global]} der Parameter \param{domain logons = yes} zu setzen.
2160 Die Implementation, die Microsoft gew"ahlt hat, um Dom"anenanmeldungen
2161 zu erm"oglichen, erzwingt zus"atzlich, da"s der Domain Master Browser
2162 auf dem gleichen Rechner liegt wie der Logon Server. Das hei"st, man
2163 ben"otigt f"ur Dom"anenanmeldungen die folgenden Parameter:
2164
2165 \begin{verbatim}
2166 [global]
2167 workgroup = samba
2168 domain logons = yes
2169 domain master = yes
2170 \end{verbatim}
2171
2172 Hat man diese Parameter gesetzt, kann man in den Eigenschaften des
2173 Clients f"ur Microsoft-Netzwerke einstellen, da"s der Client sich an
2174 der Dom"ane \texttt{samba} anmelden soll. Hat man verschl"usselte
2175 Pa"sw"orter (Siehe Abschnitt \ref{passwoerter}) aktiviert, kann man
2176 vom Client aus sein SMB-Pa"swort "andern, indem man das entsprechende
2177 Kontrollfeld in der Systemsteuerung von Windows benutzt.
2178
2179 \section{Windows NT Dom"anen}
2180
2181 Die Dom"anenanmeldung unter Windows 95/98 ist eine relativ einfache
2182 Sache, da es sich dabei praktisch nur um eine "Uberpr"ufung der
2183 Benutzerpa"sw"orter handelt. So etwas wie Benutzer kennt Windows 95
2184 praktisch nicht, jeder Benutzer hat vollen Zugriff auf das gesamte
2185 System. Erst mit Windows NT hat Microsoft den Schritt hin zu einem
2186 Betriebssystem gemacht, das Benutzerkonten und Zugriffsrechte
2187 verwalten kann. Damit sind sie sehr viel weiter gegangen, als Unix
2188 dies getan hatte. Um das Konzept der Windows NT Dom"ane zu
2189 verdeutlichen, soll hier zun"achst auf das Konzept des Benutzers unter
2190 Windows und unter Unix eingegangen werden.
2191
2192 Unter Unix besteht ein Benutzer im wesentlichen aus einer numerischen
2193 Userid, und nicht mehr. Das Programm \prog{login} mu"s beim Anmelden
2194 des Benutzers anhand seines Namens herausfinden, welche numerische
2195 Userid er hat. Dazu sieht es in der Datei \datei{/etc/passwd} nach.
2196 Mit der Datei \datei{/etc/shadow} pr"uft \prog{login} das Pa"swort.
2197 Ist es korrekt, wird in die gefundene Userid umgeschaltet und die
2198 Loginshell des Benutzers gestartet.  Nach diesem Vorgang ist es Unix
2199 v"ollig egal, wie der Benutzer hei"st, das einzige, was interessiert,
2200 ist der numerische Wert. Damit h"angt an jedem Proze"s eine endeutige
2201 Identifikation der Rechte, die er hat.
2202
2203 Unter Unix ist es so, da"s Userids nur auf dem Rechner gelten, auf dem
2204 sie zugeordnet wurden. Es gibt keine M"oglichkeit, Rechte von einem
2205 Rechner auf den n"achsten zu "ubernehmen oder global Benutzer
2206 zuzuordnen. Die einzige M"oglichkeit, die man zu Vereinheitlichung
2207 hat, ist der Austausch der jeweils auf einem Rechner geltenden
2208 Tabellen "uber verschiedene Rechner hinweg. Genau das tut NIS oder
2209 Yellow Pages. Die Benutzerdatenbank wird verteilt, gilt aber auf jedem
2210 Rechner rein lokal.
2211
2212 Unter NT sieht das sehr "ahnlich aus, nur da"s hier der Benutzer nicht
2213 durch eine kleine Zahl, sondern durch einen Security Identifier SID
2214 repr"asentiert wird. Ein solcher SID ist mehrteilig. Der erste Teil
2215 dieses SID beinhaltet eine Kennung der Benutzerdatenbank, zu der
2216 dieser Benutzer geh"ort. Ein solcher SID ist 96 Bit lang und Microsoft
2217 behauptet, da"s dieser Wert zuf"allig genug gew"ahlt ist, da"s es
2218 keine zwei Benutzerdatenbanken geben kann, die die gleiche SID haben.
2219 Der zweite Teil besteht aus einem sogenannten Relative Identifier RID,
2220 der den Benutzer innerhalb der Dom"ane eindeutig identifiziert. Die
2221 Kennung f"ur die Dom"ane besteht aus 3 32-Bit Zahlen, die zusammen 96
2222 Bit ergeben.
2223
2224 Unter Windows NT hat nun jeder Rechner eine eigene Benutzerdatenbank,
2225 genau wie unter Unix. Da aber jede Benutzerdatenbank eindeutig
2226 identifiziert ist, kann es keine zwei Benutzer mit gleicher Userid
2227 geben. Der Relative Identifier mag gleich sein, der Identifier f"ur
2228 die Benutzerdatenbank unterscheidet sich aber auf jeden Fall.
2229
2230 Microsoft unterscheidet verschiedene Netzwerkmodelle. Das Peer-To-Peer
2231 Netz ist das Modell, das auch Unix zugrunde liegt. Hier hat jeder
2232 beteiligte Rechner eine eigene Benutzerdatenbank, eigene Pa"sw"orter
2233 und eigene Rechtezuordnungen. Das Dom"anenmodell ist das Modell, das
2234 sich signifikant von Unix unterscheidet. Mit dem Dom"anenmodell wird
2235 eine Workstation in die Lage versetzt, mehr als eine Benutzerdatenbank
2236 zu benutzen. Neben der eigenen Benutzerdatenbank, die jede Workstation
2237 hat, kann sie eine Benutzerdatenbank von einem anderen Rechner
2238 importieren. In einer Windows NT Dom"ane gibt es einen Rechner, der
2239 seine eigene Benutzerdatenbank anderen zur Verf"ugung stellt, den
2240 sogenannten Primary Domain Controller. Dieser reserviert f"ur sich
2241 spezielle NetBIOS-Namen, um sich den Workstations als Logonserver
2242 anzubieten.  Eine Workstation befragt den Primary Domain Controller
2243 nach allen relevanten Daten zu den Benutzern, die sich bei ihr
2244 anmelden wollen, und die Rechte auf der Workstation wahrnehmen
2245 k"onnen.
2246
2247 Die Kommunikation zwischen der Workstation und dem Primary Domain
2248 Controller l"auft verschl"usselt ab. Um eine solche Verschl"usselung
2249 zu erm"oglichen, mu"s ein gemeinsamer Schl"ussel vereinbart werden. Um
2250 sich "uber einen Schl"ussel einig zu werden, gibt es spezialisierte
2251 Protokolle, wie beispielsweise der Diffie-Hellmann
2252 Schl"usselaustausch. Um jeglichen Problemen mit Patenten oder
2253 Exportrestriktionen zu umgehen, ist Microsoft einen anderen Weg
2254 gegangen.  Beim Schl"usselaustausch geht es im wesentlichen darum,
2255 sich "uber ein gemeinsames Geheimnis einig zu werden. Um ein
2256 gemeinsames Geheimnis zu wahren und zu pr"ufen, kennt Microsoft
2257 bereits eine Gruppe von Protokollen: Die Protokolle zum Pr"ufen und
2258 Austauschen von Benutzerpa"sw"ortern. Genau diese Protokolle werden
2259 verwendet, um die Kommunikation zwischen PDC und Workstation zu
2260 sichern. Daher mu"s jede Workstation explizit in die Dom"ane
2261 aufgenommen werden.
2262
2263 Bei Samba ist es so, da"s es zu jedem Benutzer, der ein Pa"swort in
2264 der \datei{/etc/smb.conf} hat, einen Benutzer im System geben mu"s.
2265 Der zu einer Workstation geh"orende Benutzer mu"s den NetBIOS-Namen
2266 der Workstation, erg"anzt um ein \$-Zeichen, haben. Man ben"otigt also
2267 zwei Schritte, um eine Workstation in die Dom"ane aufzunehmen. Im
2268 ersten Schritt wird der Unixbenutzer angelegt. Dies geschieht in
2269 vielen Linuxsystemen mit dem Kommando \texttt{useradd -m $<$user$>$}.
2270 Der angelegte Benutzer ben"otigt im Unixsystem weder ein Pa"swort noch
2271 ein Heimatverzeichnis. Er ist notwendig, da die Workstation in der
2272 Dom"ane eine eigene SID bekommt, die aus der Unix userid berechnet
2273 wird. Dann mu"s die Workstation ein Pa"swort in der
2274 \datei{/etc/smbpasswd} bekommen, und zwar mit dem Befehl
2275 \texttt{smbpasswd -a -m name}. Ein Beispiel sieht folgenderma"sen aus:
2276
2277 \begin{verbatim}
2278 root@erde: useradd -m wks\$
2279 root@erde: smbpasswd -a -m wks
2280 \end{verbatim}
2281
2282 Man beachte, da"s beim Befehl \texttt{useradd} ein Dollarzeichen,
2283 maskiert durch den Backslash, hinzugef"ugt wurde. Der Befehl
2284 \prog{smbpasswd} f"ugt diesen bei Verwendung des Parameters \prog{-m}
2285 selbst hinzu.
2286
2287 \section{Samba als Dom"anenmitglied}
2288
2289 Mit dem Parameter \param{security} kann man den Zeitpunkt steuern, zu
2290 dem das Benutzerpa"swort gepr"uft wird. \param{security = share} legt
2291 fest, da"s die Pr"ufung beim Tree Connect stattfindet, das hei"st,
2292 wenn die Freigabe angesprochen wird. Ist \param{security = user}
2293 angegeben, wird das Pa"swort bereits einen Schritt vorher, also beim
2294 Session Setup gepr"uft. Bei \param{security = user} wird also die
2295 Kombination von Benutzer und Pa"swort gepr"uft bei \param{security =
2296   share} die Kombination Freigabe und Pa"swort.
2297
2298 Der Parameter \param{security} kann noch zwei weitere Werte annehmen:
2299 \param{server} und \param{domain}.  Bei beiden Einstellungen verh"alt
2300 sich Samba gegen"uber dem Client genau wie bei \param{security =
2301   user}, der Benutzer mu"s sich unter seinem Namen beim Server
2302 authentifizieren. Die Unterschiede liegen in der Art und Weise, wie
2303 das Pa"swort "uberpr"uft wird.
2304
2305 \begin{itemize}
2306 \item \param{security = user}: Die "Uberpr"ufung findet anhand einer
2307   lokalen Datenbank statt. Werden Klartextpa"sw"orter verwendet
2308   (\param{encrypt passwords = no}), so wird die lokale
2309   Unix-Pa"swortdatenbank in \datei{/etc/passwd}, \datei{/etc/shadow}
2310   oder die entsprechende NIS-Tabelle herangezogen. Bei
2311   verschl"usselten Pa"sw"ortern mit wird die Samba-eigene
2312   Pa"swortdatenbank in der Datei \datei{smbpasswd} zur "Uberpr"ufung
2313   herangezogen.
2314 \item \param{security = server}: Bei dieser Einstellung bekommt der
2315   Sambaserver vom Client einen Benutzernamen und ein Pa"swort
2316   pr"asentiert. Er versucht daraufhin, sich mit diesem Pa"swort bei
2317   einem weiteren Server anzumelden. Funktioniert dies, hat der
2318   Benutzer sein Pa"swort offensichtlich richtig eingegeben.  Schl"agt
2319   dies fehl, wird auch dem Client des Sambaservers der Fehler
2320   mitgeteilt und der Zugriff verweigert. Der Pa"swortserver, der zur
2321   "Uberpr"ufung herangezogen wird, mu"s mit seinem NetBIOS-Namen im
2322   Parameter \param{password server} angegeben werden.
2323 \item \param{security = domain}: Auch hierbei wird die "Uberpr"ufung
2324   einem Pa"swortserver "uberlassen. Dieser mu"s jedoch ein Primary
2325   Domain Controller sein, der den Sambaserver in die Dom"ane
2326   aufgenommen hat. Der Hauptvorteil gegen"uber \param{security =
2327     server} besteht in einer deutlich reduzierten Last auf dem
2328   Pa"swortserver und einer verschl"usselten Kommunikation zwischen
2329   Samba und Pa"swortserver.
2330 \end{itemize}
2331
2332 Um einen Windowsrechner dazu zu bringen, f"ur einen Sambaserver die
2333 Pa"swort"uberpr"ufung zu "ubernehmen, mu"s man nur \param{security =
2334   server} und den \param{password server} passend setzen. Dabei
2335 "ubernimmt der Server ausschlie"slich die "Uberpr"ufung der
2336 Pa"s\-w"orter.  Bei verschl"usselten Pa"sw"ortern k"onnen Benutzer nur
2337 dann in die \datei{smbpasswd} aufgenommen werden, wenn sie in der
2338 Unix-Benutzerdatenbank existieren. Genau so verh"alt es sich bei
2339 \param{security = server}. Benutzer k"onnen auf Samba nur dann
2340 zugreifen, wenn sie als normale Unixbenutzer existieren.
2341
2342 \param{security = server} ist nicht die optimale L"osung f"ur die
2343 "Uberpr"ufung von Pa"sw"ortern durch einen weiteren Rechner.
2344
2345 Um die Vorteile der Dom"anenmitgliedschaft zu nutzen, ist etwas mehr
2346 Aufwand notwendig. Mitglied einer Dom"ane zu sein hei"st, mit dem
2347 Primary Domain Controller "uber einen verschl"usselten Kanal
2348 kommunizieren zu k"onnen. Diese Verschl"usselung wird verwendet, um
2349 Benutzerinformationen verdeckt austauschen zu k"onnen. Als
2350 Verschl"usselungsverfahren kommt ein symmetrisches oder auch secret
2351 key Verfahren zum Einsatz. Um ein symmetrisches Verfahren anwenden zu
2352 k"onnen, m"ussen sich beide Partner "uber ein gemeinsames Geheimnis,
2353 den \emph{secret key} einig sein.  Ein solches gemeinsames Geheimnis
2354 mu"s regelm"a"sig ge"andert werden, um einer gro"sen Klasse von
2355 kryptographischen Angriffen auszuweichen. Eine solche "Anderung darf
2356 selbstverst"andlich nicht abgeh"ort werden k"onnen, da ein Zuh"orer
2357 damit die gesamte Kommunikation abh"oren kann. F"ur die "Anderung
2358 eines Geheimnisses gab es bereits vor der Implementation des
2359 Dom"anenprotokolls ein fertiges Protokoll, das man direkt verwenden
2360 konnte: Die M"oglichkeit, Benutzerpa"sw"orter "uber das Netz zu
2361 "andern, war mir einem gesicherten Protokoll implementiert. Um dieses
2362 Protokoll zur verschl"usselten Kommunikation zwischen einer
2363 Workstation oder einem Mitgliedsserver und dem Dom"anencontroller
2364 nutzen zu k"onnen, mu"s es f"ur jedes Dom"anenmitglied ein
2365 Benutzerkonto geben.  Genau dies wird auf dem Dom"anencontroller
2366 erstellt, wenn man eine Workstation oder einen Server mit dem
2367 Servermanager in die Dom"ane aufnimmt. Betritt man danach mit der
2368 Workstation die Dom"ane, wird als erstes das Pa"swort des
2369 Computerkontos ge"andert.
2370
2371 Um einen Sambaserver in eine Dom"ane aufzunehmen, sind zwei Schritte
2372 notwendig.
2373
2374 \begin{itemize}
2375 \item Auf dem Server mu"s der Sambaserver mit seinem NetBIOS-Namen in
2376   die Dom"ane aufgenommen werden.
2377 \item Der Sambaserver selbst mu"s dar"uber informiert werden, da"s er
2378   sich in der Dom"ane befindet, und er mu"s sein Pa"swort "andern.
2379   Dies geschieht mit dem Befehl
2380
2381 \verb|smbpasswd -j DOM -r PDC|
2382
2383 Dabei steht \texttt{DOM} f"ur die Dom"ane, die betreten wird.  Mit
2384 \texttt{PDC} wird der NetBIOS-Name des Dom"anencontrollers der Dom"ane
2385 benannt.
2386 \end{itemize}
2387
2388 Mit diesem Kommando wird das Maschinenpa"swort auf dem PDC auf einen
2389 neuen, zuf"alligen Wert ge"andert. Dieses neue Maschinenpa"swort f"ur
2390 den Samba Server wird in einer Datei im gleichen Verzeichnis wie die
2391 Datei \texttt{smbpasswd} abgespeichert und hat folgenden Namen:
2392
2393 \verb|<NT DOMAENENNAME>.<Samba Servername>.mac|
2394
2395 Die Endung .mac steht f"ur \emph{Machine ACcount} Pa"swortdatei. Im obigen
2396 Beispiel w"urde die Datei also \texttt{DOM.SERV1.mac} hei"sen.
2397
2398 Diese Datei wird von root erstellt und ist f"ur keinen anderen
2399 Benutzer lesbar. Sie ist der Schl"ussel zu Ihrer Dom"anensicherheit
2400 und sollte genau so vorsichtig behandelt werden wie die Datei
2401 \texttt{/etc/shadow}.
2402
2403 Nach diesen beiden Schritten kann man mit \param{security = domain},
2404 \param{password server = PDC BDC1 BDC2} und \param{encrypt passwords =
2405   yes} die Pa"swort"uberpr"ufung an einen der Dom"anencontroller
2406 delegieren. Dies sind die Prim"aren und Backup Dom"anencontroller, die
2407 Samba der Reihe nach kontaktieren wird, um Benutzer zu
2408 authentifizieren. Samba wird sie in der aufgef"uhrten Reihenfolge
2409 ansprechen. Sie k"onnen also die Reihenfolge ver"andern, um eine
2410 g"unstigere Lastverteilung zu erreichen. Eine weitere Option ist die
2411 Angabe \param{password server = *}. Damit sucht Samba mit den
2412 Standardmethoden\footnote{Windows NT findet einen Dom"anencontroller,
2413   indem der NetBIOS-Name \nbname{DOMAIN<1C>} gesucht wird.} von
2414 Windows NT nach einem Dom"anencontroller und befragt die Server, die
2415 es bei dieser Anfrage herausbekommen hat.
2416
2417 Warum ist \param{security = domain} besser als \param{security =
2418   server}?
2419
2420 Der Vorteil der Dom"anensicherheit ist, da"s Samba die
2421 Authentifizierung "uber einen gesicherten RPC Kanal schickt, genau wie
2422 ein Windows NT Server es tun w"urde. Das hei"st, da"s Samba nun genau
2423 wie ein Windows NT Server an einer Vertrauensstellung teilnehmen kann.
2424 Das hei"st, Sie k"onnen einen Samba Server in eine Resourcendom"ane
2425 aufnehmen, und Sie k"onnen die Authentifizierung via Resourcen PDC vom
2426 PDC der Benutzerdom"ane vornehmen lassen.
2427
2428 Zus"atzlich mu"s in der Einstellung \texttt{security = server} der
2429 Samba D"amon eine Verbindung zum Authentifizierungsserver w"ahrend
2430 seiner gesamten Laufzeit offenhalten. Dies kann die Anzahl der offenen
2431 Verbindungen auf einem Windows NT Server in die H"ohe treiben, so da"s
2432 dieser keine Verbindungen mehr annimmt. Mit \texttt{security = domain}
2433 verbinden sich die Samba D"amonen nur so lange mit dem PDC, wie es
2434 f"ur die Benutzerauthentifizierung notwendig ist. Danach wird die
2435 Verbindung wieder abgebaut, so da"s die Verbindungen wieder
2436 anderweitig verwendbar sind.
2437
2438 Und nicht zuletzt bekommt der Samba Server als Teil der Antwort auf
2439 die Authentifizierungsanforderung Informationen "uber den Security
2440 Identifier, die Gruppenzuordnungen und andere Informationen "uber den
2441 Benutzer. All diese Informationen werden Samba zuk"unftig erlauben, in
2442 einem sogenannten Appliance Modus zu laufen. In diesem Modus wird
2443 kein manuell angelegter Unixbenutzer mehr notwendig sein. Samba wird Unix
2444 Benutzer und Gruppen aus der Authentifizierungsantwort des PDC
2445 erzeugen. Damit wird Samba wirklich ein Plug and Play Mitglied einer
2446 Dom"ane.
2447
2448 Dieser Appliance Modus kann heute schon ann"ahernd erreicht werden,
2449 indem bei Samba der Parameter \param{add user script} angegeben wird.
2450 In diesem Parameter wird ein Unixprogramm angegeben, das dynamisch
2451 einen Unixbenutzer erzeugen mu"s, nachdem ein Pa"swortserver die
2452 Korrektheit eines Pa"sworts best"atigt hat. Ein Beispiel kann sein:
2453
2454 \verb|add user script = /usr/bin/useradd -m %U|
2455
2456 Damit wird einfach ein Benutzer hinzugef"ugt, wenn er noch nicht
2457 existiert, aber der PDC das Pa"swort best"atigt hat.
2458
2459 \end{document}
2460