Samba und Windows NT 4.0 (PDC)
Versionen:
Autor: Thomas King (king@t-king.de)
V1.0
V1.1
V1.2
V1.3
V1.4
V1.5
V1.6 
V1.62
V1.7
V1.71
V1.8
V1.81 09.05.2000 (Erweitert)

Copyright:
Dieses Dokument darf gemäß der GPL Lizenz verbreitet werden. Das Copyright liegt bei Thomas King.

Danksagung:
-	Roland Ribi (roland.ribi@gmx.net)
-	Cordula Hörter (c.hoerter@t-online.de)
-	Alle die mich mit Informationen versorgt haben

Aktuelle Version:
Die aktuellste Version dieses Dokuments bekommt man unter: http://www.t-king.de/linux/samba.html.

Weiterentwicklung:
Ich möchte diese Anleitung auch für Windows 2000 weiterentwickeln und suche deshalb Informationen über Windows 2000 und Samba. Ich würde mich über Informationen per Mail sehr freuen!

Vorab:
Samba ist eine kostenlos erhältliche Software für Linux, die Linux über das SMB-Protokoll zu einem File- und Printserver macht. Wie viele andere Software in der Linux-Welt wird Samba auch weiterentwichelt. Die hier beschriebenen Funktionen (PDC) des Samba können leider noch nicht ganz das leisten, was die PDC-Funktionen eines Windows-NT-Server zu leisten vermögen (aber dafür kann Samba einiges was Windows-NT-Server nicht können). Die Entwicklung geht weiter und die Bestrebungen gehen in die Richtung das Samba irgendwann einen kompletten Windows-NT-Server ersetzen kann.
Ich habe die meisten Informationen für die Anleitung aus der englischen „FAQ for Samba NTDOM PDC support“ und aus diversen Newsgroups.

Mit welchen Samba-Versionen funktioniert PDC:
Mit folgenden Versionen wurde PDC erfolgreich getestet:
-	Version 2.0.0
-	Version 2.0.1
-	Version 2.0.2
-	Version 2.0.4
-	Version 2.0.5
-	Version 2.0.6
-	Version 2.0.7 (Windows 2k „kompatibel“)

Mit folgenden Versionen wurde PDC nicht erfolgreich getestet:
-	Version 2.0.3

Erfahrungsberichte über andere Samba-Versionen bitte an king@t-king.de.

Download:
Da der PDC von Samba noch in der Entwicklung ist, sollte man immer die neuste Version von Samba verwenden. Es gibt mehrere Möglichkeiten Samba zu bekommen:
CVS-Entwicklerversion (aktuellster Code, „buggy“):
Diese CVS-Entwicklerversion eignet sich nicht um in produktiven Umgebungen eingesetzt zu werden da sie noch „buggy“ ist. Dafür enthält diese Version immer noch ein paar Features mehr. Diese Version eignet sich sehr gut für Entwickler und Beta-Tester.
Um die CVS-Entwicklerversion downzuloaden muß man sich als root einloggen und in ein neues Verzeichnis wechseln (z.B. samba) und folgende Befehle ausführen (es wird vorausgesetzt, das cvs installiert ist):
cvs –d :pserver:cvs@samba.anu.edu.au:/cvsroot login
Bei der Frage nach dem Passwort cvs eingeben. Nachdem dieser Befehl beendet wurde folgendes eingeben:
cvs –d :pserver:cvs@samba.anu.edu.au:/cvsroot co samba
Nach Beendigung dieser Befehle hat man den Quellcode von Samba vorliegen.
Falls gewünscht, kann man ein Update mit cvs update –d –P durchführen.
Eine Anleitung zu cvs findet man auf der Manpage von cvs (man cvs).
Offizielle freigegebener Code:
Den offiziell freigegebenen Samba-Quellcode kann man über FTP von ftp://samba.anu.edu.au/pub/samba/ herunterladen.
Einige Linux-Distributionen geben angepaßte und kompilierte Versionen von Samba heraus (meistens im RPM-Format). Sie sind besonders für Einsteiger einfacher einzuspielen  (rpm -Uvh <paketname.rpm>). Auf der Homepage des Linux-Distributors und auf der Samba Homepage kann man nach solchen Informationen suchen. Falls man eine solche Samba-Version verwendet kann man den nächsten Schritt in der Anleitung überspringen.

Kompilieren:
Seit einiger Zeit liegt Samba das Konfigurationsprogramm configure bei. Dieses Programm liegt im Verzeichnis /<eigenes Verzeichnis>/samba/source und kann mit configure gestartet werden. Configure checkt das vorhandene System und erzeugt die Datei Makefile. Eigentlich kann man jetzt gleich zum kompilieren übergehen, aber man sollte vorsichtshalber nochmals die Angaben in der Datei Makefile kontrollieren (vi Makefile), damit nachher auch alles stimmt. Wenn alles in Ordnung ist, kann man Samba mit dem Befehl make install kompilieren und installieren. Nach einiger Zeit (kann mehrere Minuten dauern) sollte dann Samba kompiliert und installiert vorliegen.

Konfiguration von Linux:
Für jede Workstation muß man auf dem Linux-Server einen eigenen Account einrichten (keine Passwörter vergeben). Als Benutzernamen verwendet man den Workstationnamen an den man noch ein „$“ anhängt (s. Anhang – passwd). Nun muß man die smbpasswd generieren. Dazu verwendet man am besten das Script mksmbpasswd.sh aus dem Samba-Source-Code (/<eigenes Verzeichnis>/samba/source/script/mksmbpasswd.sh). Damit man das Skript ausführen kann muß man es noch ausführbar machen (chmod +x mksmbpasswd). Als root folgendes aufrufen (Pfade ggf. ändern): cat /etc/passwd | mksmbpasswd.sh > /etc/smbpasswd, damit die smbpasswd erzeugt wird.
Jetzt muß man der Datei smbpasswd erklären, das die Einträge der Workstations auch Workstations sind. Dies wird (als root) so erledigt: smbpasswd –a –m <workstationnamen>.
Die Datei smb.conf im Verzeichnis /etc sollte so oder ähnlich aussehen wie sie im Anhang abgedruckt ist. Die kommentierten Einträge (; Kommentar) sind für den PDC notwendig. Die restlichen Einträge haben Beispielcharakter.
Wenn man nun einen Benutzer zur Domain hinzufügen will muß man ihm ganz normal einen Account auf dem Linux-Server geben (mit Passwörtern). Anschließend muß man den Eintrag in der smbpasswd noch erstellen: smbpasswd –a <benutzername> und die gewünschten Passwörter vergeben. Dann noch die Unterverzeichnisse <benutzername> in den gewünschten Verzeichnissen (z.B. /shares/Profile und shares/Homes) anlegen und die Besitzrechte an den Benutzer geben (chown <benutzername>.users <Verzeichnisname>)

Nach einem Neustart sollte dann alles funktionieren.

Weitere Konfigurationsmöglichkeiten:
Password ändern auf Linux und Windows gleichzeitig:
Folgendes muß noch in den [Global]-Abschnitt der smb.conf:
unix password sync = yes
passwd program = /usr/bin/passwd %u
passwd chat = *password* %n\n *password* %n\n *successfull*

Man muß darauf achten das der Pfad der mit dem Parameter passwd program definiert wird auch vorhanden ist. Die Werte des Parameters passwd chat können je nach verwendeter Distribution variieren. Die verwendeten Variablen haben bei diesem Parameter folgende Bedeutung:
Variable:	Bedeutung:	
%o	Altes Passwort	
%n	Neues Passwort	
/n	Zeilenvorschub	
/r	Return	
/t	Tab	
/s	Leerzeichen	
*	Beliebige Anzahl von beliebigen Zeichen	

Diagnosetools für Samba und Windows:
-	Das beste Diagnosetool ist Samba selber. Mit der Option –d bei smbd und nmbd kann man den Debugger einschalten. In der smb.conf kann man mit debug level = <Levelnummer> (im Bereich von 1-100) die Menge der Informationen regeln.
-	Ein Version von tcpdump die auch SMB versteht (ftp://samba.anu.edu.au/pub/samba/tcpdump-smb).
-	Bei Windows ist standardmäßig ein Netzwerkmonitor dabei. Gegebenenfalls muß dieser nachträglich installiert werden.

Drucken über Samba-Server mit Windows NT:
Die Print-Server Funktion für den PDC sind leider noch nicht 100%ig fertiggestellt und können deshalb nur über Umwege genutzt werden. Als Administrator einen lokalen Drucker installieren. Sich dann in Samba PDC einloggen und in der MS-DOS Eingabeaufforderung folgendes eingeben: net use <LPT-port> \\<server>\<printer-name>.

Groß- und Kleinschreibung von Datei- und Verzeichnisnamen:
Windows NT und 9x können leider nicht richtig mit der Groß- und Kleinschreibung von Datei- und Verzeichnisnamen umgehen. Möchte man beispielsweise eine Textdatei mit dem Namen „BEISPIEL.TXT“ anlegen, so macht Windows „Beispiel.txt“ daraus.
Damit die Dateien und Verzeichnisse, die man auf ein Samba-Share ablegt, die Groß- und Kleinschreibung beibehalten, muß folgender Eintrag in die smb.conf (unter [Global]):
   mangle case = yes
   case sensitive = no
   default case = lower
   preserve case = yes
   short preserve case = yes

Weitere Informationen:
Weitere Informationen zu Samba und PDC findet man unter der offiziellen Homepage des Samba-Projekt (http://samba.anu.edu.au) und auf der man-Page smb.conf.

Anhang:
smb.conf:
[global]
   workgroup = SAMBA
   ; Hier wird der Domainname vergeben
   
   debug level = 3
   guest account = nobody
   keep alive = 30
   os level = 2
   security = user
   printing = bsd
   printcap name = /etc/printcap
   load printers = yes
   log file = /var/log/samba.log.%m
   share modes = yes
   guest ok = yes
   allow hosts = 192.168.100.
   server string = %h Samba Server %v
   interfaces = 192.168.100.1/24
   bind interfaces only = True
   encrypt passwords = yes
   ; Hier werden verschlüsselte Passwörter eingeschaltet
   ; (für WinNT 4.0 SP3, Win95b und Win98 notwendig)
   
   password level = 2
   netbios name = server
   domain logons = yes
   ; Hier wird Domainlogon aktiviert
   
   domain sid = S-1-5-21-1290937831-1921083428-2172654181 ;
   ; Hier wird die Domainsid (aus der Datei MACHINE.SID) gesetzt
   ; Dieser Eintrag ist nicht notwendig wenn die Datei MACHINE.SID im
   ; gleichen Verzeichnis liegt wie die Datei smb.conf

   logon path = \\Server\Profile\%U\profile
   ; Hier wird der Logonpfad gesetzt. An diesem Pfad werden die Profile
   ; abgelegt

   wins support = yes
   ; Hier schaltet man nmbd als WINS Server ein

[Homes]
   comment = Home Directories (read write)
   browseable = no
   public = yes
   read only = no
   writable = yes
   create mode = 0755
   path = /shares/Homes/%S

[Profile]
   comment = Profile
   browseable = yes
   public = yes
   read only = no
   writeable = yes
   create mode = 0755
   path = /shares/Profile

[printers]
   comment = HP-Deskjet 500c
   browseable = yes
   printable = yes
   public = yes
   writable = no
   create mode = 0700
   directory = /tmp
   print ok = yes
   available = yes

[All]
   comment = The whole Linux System
   path = /shares/All
   public = yes
   read only = no
   writable = yes
   create mode = 0660
   force group = nobody

passwd:
...
livid-boy$:x:501:100::/home/livid-boy:/bin/false
admin:x:502:100::/home/admin:/bin/bash
cordula:x:503:100::/home/cordula:/bin/bash