-
Samba-Server
<h2>Samba Server</h2>
<a href=#intro>Einleitung</a>
<a href=#requirements>Voraussetzungen</a>
<a href=#smbconf>Die Konfigurationsdatei</a>
<a href=#sambapdc>Samba als PDC für Windows NT und 2000 Clients</a>
<hr>
<a name=Intro></a><h3>Einleitung</a></h3>
Windows- und OS/2-Rechner benutzen das SMB-Protokoll (Server Message Block) für die Kommunikation im Netz. SMB baut auf NetBIOS auf, das ebenfalls von Microsoft stammt. NetBIOS ist nur ein Netzwerkprotokoll, kein Transportprotokoll. Der Transport erfolgt über ein anderes Transportprotokoll, z.B. TCP/IP. Somit kann in einem heterogenen Netz ein einheitliches Transportprotokoll benutzt werden, was die Konfiguration der Clients sowie das Routing erheblich vereinfacht.
Für die Nutzung des SMB-Protokolls auf UNIX- und Linuxmaschinen benötigt man einen eigenen Serverdienst. Dieser wird durch das freie Softwarepaket Samba ermöglicht.
Diese FAQ soll kein mehere hunderte Seiten starkes Samba-Buch ersetzen und geht davon aus, dass die Software ordnungsgemäss installiert wurde und der Adminstrator weiss, wo der die Konfigurationsdateien -und Programme findet.
<a name=requirements></a><h3>Voraussetzungen</a></h3>
Im folgenden wird davon ausgegangen, dass...
<ol>
<li>alle benötigten Programme installiert sind:</li>
<ul>
<li>Samba 2.2.x</li>
<li>SWAT (Samba Web Administration Tool (Teil des Sambapakets)</li>
</ul>
<li>das Netzwerk grundsätzlich einsatzbereit ist (alle Rechner erreichen sich per ping)</li>
<li>die Arbeitsstationen laufen unter Windows 98 oder höher</li>
<li>auf allen Windows-Clients ist NetBIOS und TCP/IP installiert und an die Netzwerkkarten gebunden ist</li>
</ol>
<a name=smbconf></a><h3>Die Konfigurationsdatei</a></h3>
Die gesamte Serverkonfiguration wird in einer Datei vorgenommen, nämlich der <CODE>/etc/smbd.conf</CODE> (unter Umständen liegt die Datei auch an anderer Stelle). Diese Datei kann mit einem Editor oder über das Webinterface SWAT, das zum Lieferumfang von Samba gehört, bearbeitet werden. Das Aussehen
erinnert sehr an Windows ini-Dateien. Eine einfache Konfigurationsdatei
könnte wie folgt aussehen:</P>
<CODE>
[Global]
workgroup = WORKGROUP
guest account = nobody
keepalive = 30
socket options = TCP_NODELAY
hosts allow = 192.168.11.0/255.255.255.0
[Homes]
comment = Home
read only = No
browseable = Yes
public = No
create mode = 0750
[Programme]
comment = Programme
path = /export/samba/programme
read only = No
browseable = Yes
create mode = 0777
;Alle Drucker einbinden; Drucken ueber Windows auf raw
[printers]
path = /tmp
create mode = 0700
printable = Yes
browseable = No
</CODE>
Die Einträge haben folgende Bedeutung:<TABLE BORDER=1>
<TR VALIGN="top"><TD>[Global]</TD><TD>Sektion der globalen Einstellungen</TD></TR>
<TR VALIGN="top"><TD>workgroup</TD><TD>bezeichnet die Arbeitsgruppe oder Windows-Domäne, der der Server angehört</TD></TR>
<TR VALIGN="top"><TD>guest account</TD><TD>bezeichnet den UNIX-Benutzer, der als Gast ohne Passwort mit minimalen Rechten auf die Ressourcen zugreifen darf</TD></TR>
<TR VALIGN="top"><TD>keep alive</TD><TD>Zeit in Sekunden, in denen der Server nachschaut, ob der Client noch "lebt"</TD></TR>
<TR VALIGN="top"><TD>socket options = TCP_NODELAY</TD><TD>Daten werden nicht in kleinen Datenblöcken zusammengefasst</TD></TR>
<TR VALIGN="top"><TD>hosts allow</TD><TD>nur von diesem Netz darf auf den Server zugeriffen werden</TD></TR>
<TR VALIGN="top"><TD>[Homes], [Programme], [printers]</TD><TD>Defintionen der Freigabe</TD></TR>
<TR VALIGN="top"><TD>comment</TD><TD>Bezeichnung der Freigabe in der Netzwerkumgebung</TD></TR>
<TR VALIGN="top"><TD>read only</TD><TD>schaltet den Schreibzugriff ein oder aus (No=aus, YES=an)</TD></TR>
<TR VALIGN="top"><TD>browseable</TD><TD>die Freigabe wird in der Netzwerkumgebung des Clients angezeigt</TD></TR>
<TR VALIGN="top"><TD>public</TD><TD>der Gastzugang wird erlaubt (Yes) oder unterbunden (No)</TD></TR>
<TR VALIGN="top"><TD>create mode</TD><TD>Festlegung, mit welchen UNIX-Zugriffsrechten Dateien angelegt werden</TD></TR>
<TR VALIGN="top"><TD>printable</TD><TD>Hier darf Gedruckt werden</TD></TR>
</TABLE>
Nach dem Neustart des Sambaservers müsste der Server in der Netzwerkumgebung des Windows-Clients erscheinen. Ist dies nicht der Fall, kann das mehrere Gründe haben:
<UL>
<LI>die Netzwerkumgebung ist noch nicht aktualisiert worden (warten oder <F5> drücken)
<LI>überprüfen, ob der Server überhaupt erreichbar ist durch die Eingabe von "
<CODE>\\servername" in der Adresszeile oder über Start -> Suchen -> Computer
<LI>eine Firewall blockiert den Zugriff (einfach mal kurzzeitig stoppen und dann die Konfiguration ändern)
<LI>das "Dummydevice" ist installiert (deinstallieren!)
<LI>der Arbeitsgruppenname ist auf dem Windowsclient und Linuxserver unterschiedlich (ändern!)
</UL>
Ein Doppelklick auf den Server lässt dann die Freigabe erkennen: hier nur das Homeverzeichnis des Benutzers.</p>
Standardmässig liegt die Sicherheit bei der Freigabe; der Benutzer wird vor dem Öffnen nach seinem Benutzernamen und Passwort gefragt. Hier merkt man nun, dass zwei Welten aufeinander treffen: die angelegten Linuxbenutzer kommen nicht auf die Freigabe. Samba verwaltet seine Benutzer selbst und hat eine eigene Benutzerdatei:
die smbpasswd. Bevor ein Zugriff auf die Freigaben möglich ist, muss erst ein Sambabenutzer angelegt werden. Das geht als root mit folgendem Befehl:
<CODE>
smbpasswd -a user
</CODE>
Das <CODE>"-a"</CODE> steht für add (hinzufügen); "user" für den Namen eines bereits
angelegten Linuxbenutzers. smbpasswd fragt dann zweimal das Benutzerpasswort ab. Wie gesagt: es lassen sich nur Benutzer hinzufügen, die Linux schon bekannt sind.
Sollen alle schon angelegten Benutzer automatisch hinzugefügt werden, geht die über die Eingabe von
<CODE>
cat /etc/passwd | mksmbpasswd.sh > /etc/smbpasswd
</CODE>
als root von der Konsole. Ob dies sinnvoll ist, ist jeweils eine Einzelfallentscheidung. Es werden nämlich auch die für bestimmte Dienste angelegten Benutzer übertragen (z.B. wwwrun für den Apache, mysql für das gleichnamige Datenbanksystem etc.).
Nach eine Sambaneustart kann der soeben hinzugefügte Benutzer auf sein Linux-Homeverzeichnis auch von einem Windowsrechner zugreifen. Wird der Zugriff verweigert, obwohl das richtige Passwort eingetragen wurde, kann das daran liegen, dass
<OL>
<LI>der Client unverschlüsselte Passwörter sendet (Windows 95 oder niedriger)
<LI>durch den Eintrag <CODE>encrypt passwords = No</CODE> in der [Global]-Sektion.
</OL>
In Mischumgebungen (z.B. Windows 95 und Windows 2000) ist daher auf das schwächste Glied Rücksicht zu nehmen. In der smb.conf ist über den Eintrag <CODE>encrypt passwords = No</CODE> in der [Global]-Sektion die Verschlüsselung abzuschalten. Ab Windows 98 ist dann durch einen geeigneten Eintrag in der Registry ebenfalls die Verschlüsselung zu unterbinden. Die Registrierungsschlüssel findet man im Dokumentationsverzeichnis von Samba.
<a name=sambapdc></a><h3>Samba als PDC für Windows NT und 2000 Clients</a></h3>
Um den Samba-Server als Primären Domänen Controller einsetzen zu können, sind insbesondere für Windows 2000 Clients einige Erweiterungen an der smb.conf vorzunehmen:
<pre>
# Global parameters
[global]
workgroup = WORKGROUP ; Name der Domäne
netbios name = SERVER ; NetBIOS-Name des Servers
server string = Samba %v (PDC) ; Kommentar
interfaces = 192.168.11.1/24 ; IP der Netzwerkkarte
bind interfaces only = Yes ; nur diese Schnittstelle verwenden
encrypt passwords = Yes ; Passwortverschlüsselung
map to guest = Bad User ; Gastbenutzer
passwd program = /usr/bin/passwd %u ; Passwortprogramm
unix password sync = Yes ; UNIX- und Samba Passworte synchronisieren
log level = 3 ; Debug-Level
log file = /var/log/%U.smb ; Pfad zur Log-Datei
keepalive = 30 ; Warten auf Client (in sek.)
domain admin group = @root ; Gruppe des Domänenadministrators
domain admin users = root ; der Domänenadministrator
admin users = root ; Administrator mit allen Rechten auf allen Freigaben (Vorsicht!)
logon script = logon.cmd ; Name des Anmeldeskripts
logon path = \\%N\%u\profiles ; Pfad der servergespeicherten Profile
logon drive = H: ; Laufwerksbuchstabe des Homeverzeichnisses
logon home = %H ; Pfad zum Homeverzeichnis (/home/user)
domain logons = Yes ; Domänenanmeldung
os level = 65 ; der mit dem höchsten Level wird der Masterbrowser
preferred master = True ; bevorzugter Masterbrowser
domain master = True ; PDC
hosts allow = 192.168.11.0/255.255.255.0 ; Zugriff nur von diesem Netz(bereich)
</PRE>
Die Einträge <CODE>domain admin group = @root</CODE> und <CODE>domain admin users = root</CODE> sorgen dafür, dass über den Benutzer root neue Arbeitsstationen in der Domäne angemeldet werden können. Zur Zeit ist dies nur über einen root-Zugriff möglich. Man kann zwar andere Benutzer/Gruppen eintragen, diese können allerdings noch nicht verwendet werden.
Damit der Sambaserver als Primärer Domänen Controller von den Arbeitsstationen akzeptiert wird, sind die Einträge
<CODE>
os level = 65
preferred master = True
domain master = True
</CODE>
nötig.
Die Datei <CODE>logon.cmd</CODE> ist eine NT/2000-Batchdatei, die u.a. die Laufwerkszuordnungen vornehmen kann. Sie hat z.B. folgenden Inhalt:
<CODE>
@ECHO OFF
NET USE P:\ \\SERVER\Programme
</CODE>
Dadurch können Freigaben an Laufwerksbuchstaben gebunden werden (hier z.B. wird die freigegebene Ressource& quot;Programme" mit dem Laufwerk P: verbunden). DieseB atchdateien sind unbedingt im DOS-Format zu speichern (Zeilenende mit <CR><LF>). Im obigen Beispiel würde sich die logon.cmd im Homeverzeichnis des Benutzers befinden. Der Benutzer muss Leserechte an dieser Datei haben.
Um die Datei vor Manipulationen zu schützen, kann sie auch in einem Verzeichnis gespeichert werden, auf das die Windowsuser keinen Zugriff haben. Der Speicherplatz wird durch den Paramter <CODE>logon home = ...</CODE> festgelegt. Sollen für jeden Benutzer individuelle Logon-Skripte angelegt werden, so sind diese als "benutzername.cmd" zu speichern und in der smb.conf mit
<CODE>%h.cmd</CODE> einzutragen (<CODE>%h</CODE> ist der Platzhalter für den Benutzernamen nach der Anmeldung). Für gruppenspezifische Logonskripte ist sinngemäss zu verfahren
(Speicherung als <CODE>gruppenname.cmd</CODE>, Eintrag in der smb.conf als <CODE>%g.cmd</CODE>.)
Damit sich der Windowsrechner an der Domäne anmelden darf, ist auf dem Server ein Rechnerkonto (Machine Trust Account) einzurichten. Ohne "winbind" aus dem TNG-Zweig ist diese Einrichtung auf dem Linuxserver vorzunehmen. Als erstes ist ein Benutzer mit dem Rechnernamen anzulegen (der Rechnername ist der NetBIOS-Name mit angehängtem "$"):
<CODE>useradd rechner$ -b /dev/null -s /bin/false</CODE>
(hier würde ein Benutzer mit dem Namen "rechner", dem Homeverzeichnis "/dev/null" und der Shell "/bin/false" ohne Passwort angelegt, ein Einloggen unter dieser Benutzerkennung ist nicht möglich)
Mit <CODE>smbpasswd -a -m rechner$</CODE> ist dann das Rechnerkonto in der Domäne anzulegen. Damit die Änderungen wirksam werden, ist der Sambadienst neu zu starten.
Die weitere Einrichtung erfolgt dann vom Windows-Rechner selbst. Dazu muss man sich dort als Administrator anmelden. Über die Systemeinstellungen kommt man über die Registerkarte "Netzwerkidentifiktion" zu den Eigenschaften.
Durch Anklicken des Buttons "Eigenschaften" können Sie den Rechnernamen nochmals überprüfen und den Domännamen eintragen.
Anschliessend versucht der Rechner eine Verbindung zum Server aufzubauen. Danach werden Sie nach einem Konto gefragt, dass über die Privilegien verfügt, den Rechner in die Domäne
aufzunehmen. Tragen Sie hier die Daten für root ein. Hat soweit alles geklappt, werden Sie freundlich in der Domäne begrüsst:
Nach einem Neustart des Rechners können Sie sich nun mit den Anmeldedaten eines unter Samba angelegten Benutzers anmelden. Gegebenenfalls sind die Optionen des Anmeldebildschirms zu öffen
und die Domäne auzuwählen.
Nach der Anmeldung können die Benutzer jeweils nur ihre, der Administrator alle Profile von lokal gespeichert auf servergespeichert ändern.
<b>Troubleshooting</b>
Es kann passieren, dass der Windowsrechner nicht direkt in die Domäne aufgenommen wird. Dies kann vielfältige und nicht immer nachvollziehbare Ursachen haben. Folgende Liste ist mit Sicherheit nicht vollständig, hat aber bisher immer geholfen (über weitere Tips wäre ich dankbar):
<LI>Die smb.conf mit <CODE>testparm</CODE> prüfen
<LI>Genaue Schreibweisen der Rechner- und Domännamen überprüfen
<LI>Rechnerkonto angelegt mit angehängtem "$" sowohl unter Linux wie auch für Samba
<LI>Ggf. das Rechnerkonto aus der smpasswd löschen und den Machine Trust Account mit smpasswd -a -m ... neu anlegen
<LI>Nach allen Änderungen Samba neu starten
<LI>In einem Fall half nur, den Rechner umzubenennen und mit neu angelegtem Rechnerkonto wieder anzumelden (nur Bill weiss warum). Ein Umbenennen
eines Domänenmitglieds funktioniert allerdings hervorragend.
<LI>Keine Änderungen an den Sicherheitsrichtlinien vornehmen bzw. den Standard wiederherstellen
Und nun viel Spass mit mehr Sicherheit und Performance sowie beim Ausgeben der eingesparten Server- und Clientlizenzen.
<P style="font-size:small"><hr>
<a name=copyright></a>
© Copyright 2001 by Leander Kirstein-Heine, Computer & Network Consulting, Engelplatz 11, D-07743 Jena
Permission is granted to copy, distribute and/or modify this document under the terms of the <a href=http://www.gnu.org/licenses/fdl.txt>GNU Free Documentation License, Version 1.1</a> or any later version published by the Free Software Foundation. A copy of the license is included in the section entitled "GNU Free Documentation License".
-
Hallo,
beim Kommando:
smbpasswd -a $user
war bei mir noch ein -e notwendig.
Also smbpasswd -a -e $user
Viele Grüsse
Eicke