[LinuxFocus-icon]
LinuxFocus article number 247
http://linuxfocus.org

[Photo of the Author]
von Sebastian Sasías
<sasias[at]linuxmail[dot]org>

Über den Autor:

Er benutzt Linux seit einigen Jahren als Support-Werkzeug, um technische Lösungen zu entwickeln.
Er arbeitet an Gerätesteuerung mit Linux, Signalverarbeitung, Kommunikation und Netzwerksicherheit.
Er ist Experte in Elektronik-Automatisierung und Informatik.
Er hat unter GNU/GPL Free Software entwickelt.



Übersetzt ins Deutsche von:
Hubert Kaißer (homepage)

Einen Windows NT/2000-Server mit Linux und Samba ersetzen

[Illustration]

Zusammenfassung:

Dieser Artikel ergänzt einige Aspekte, die in früheren LinuxFocus-Artikeln über Samba vorgestellt wurden und seine Verwendung, um Ressourcen in heterogenen Unix-Windows-Netzwerken gemeinsam zu nutzen. Er konzentriert sich vor allem auf ein Linux-System mit Samba, um einige Dienste laufen zu lassen, die typischerweise von Windows-Betriebssystemen zur Verfügung gestellt werden.
Dies ist nicht nur eine Demonstration der Stärke und Flexibilität von Linux, sondern es hat auch wichtige wirtschaftliche Konsequenzen:

  • Große Einsparungen bei Zahlungen für Lizenzen für Windows-Server.
  • Eine ähnliche oder bessere Leisung kann erreicht werden, wobei sogar weniger Hardwareanforderungen bestehen, als bei einem Windows-Server (was Prozessor und RAM angeht).

Ein Linux-Server mit richtig konfiguriertem Samba kann einen Windows NT/2000-Server ersetzen, üblicherweise gibt man damit Verzeichnisse frei, bietet einen Active Directory Service (ADS) an, aber es kann auch als PDC (Primary Domain Controller) fungieren, für die Authentifizierung bei Windows 2000/NT/98/95-Clients sorgen, Ressourcen gemeinsam nutzen (Verzeichnisse und Drucker) und die Benutzerprofile anpassen.
Dieser Artikel beschäftigt sich besonders mit diesen Aspekten.

Als Folge ersetzt der Linux-Server mit Samba alle Funktionen eines Servers auf der Grundlage eines Microsoft-Betriebssystems bei vielen Umgebungen, wo das die Hauptfunktion des Windows-Servers ist, ohne Änderungen bei den Clients.
Für die folgenden Schritte wird angenommen, daß Samba schon installiert ist und auf dem Server korrekt arbeitet und daß der Leser die Grundlagen von Linux- und Windows-Servern kennt.
_________________ _________________ _________________

 

Fallstudie

Betrachten Sie einen Linux/Samba-Server, der als PDC funktioniert, bei dem jeder authentifizierte Benutzer auch Zugang zu zwei gemeinsamen Verzeichnissen hat, einer für öffentliche Bereiche und ein weiterer für den privaten Bereich. In diesem Artikel werden wir es als häufigen Fall betrachten, einen privaten Bereich zu bearbeiten mit Zugang zu einem persönlichen Verzeichnis für jeden Benutzer.



Details, die zu beachten sind:

Linux/Samba NetBIOS Name:SMBServer
Windows Domain Name (Workgroup): THEDOMAIN
Private Partition für jeden Benutzer: H: (Windows) => /home/ (Linux-Server)
Öffentliche Partition: P: (Windows) => /home/public



Bild 1 zeigt ein einfaches Netzwerk-Schema mit Clients, die mit Windows-Systemen laufen und die Ressourcen und Dienste des Windows NT/2000-Servers nutzen. Dieser Server kann durch einen Linux/Samba-Server ersetzt werden.

Network-Schema
Bild 1 PDC und File-Server unter Windows
 

Konfiguration

Arbeiten Sie folgende Schritte ab:

1) Erzeugen Sie die Benutzer, die vom PDC-Server (Linux mit Samba) authentifiziert werden sollen.
Benutzen Sie adduser, useradd oder userconf, Sie können auch irgendein Tool für Benutzeradministration mit GUI verwenden (Webmin, Linuxconf, Yast, usw.).

Stellen Sie sicher, daß die Benutzer nur zu Linux/Samba-Diensten Zugang haben (wenn Sie es so wollen), das setzt voraus, daß sie keinen Zugang zur Linux-Shell haben, dafür müssen sie /dev/null als Home-Verzeichnis und /bin/false als Shell einstellen.

2) Ändern Sie die Unix-Benutzer zu Linux/Samba/Windows-Benutzern, indem Sie die Datei smbpasswd erzeugen.

cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

Eine andere Vorgehensweise ist, die folgenden Samba-Befehle für Benutzererzeugung und Passwörter auszuführen:

smbadduser
smbpasswd

Diese Befehle funktionieren ähnlich wie adduser und passwd.

3) Editieren Sie die Samba-Konfiguration (smb.conf), indem Sie darauf achten, daß Sie die Kommentarzeichen für die Optionen einfügen oder entfernen, die unten aufgeführt sind:

netbios name = SMBServer
workgroup = THEDOMAIN
server string = Linux Samba NT Server
log file = /var/log/samba/%m.log
max log file = 0
security = user
encrypt password = yes
smb password file = /etc/samba/smbpasswd
ssl CA certificate = /usr/share/ssl/.... (Kommentar entfernen)
socket options = (Kommentar entfernen)
local master = yes
preferred master = yes
domain master = yes
domain logons = yes
logon script = logon.bat
wins support = yes


Notiz:
Um für jeden Benutzer ein eigenes Login zu erzeugen, ersetzen Sie das Logon-Script durch "%U.bat", so daß jeder Benutzer ein "Logon Script" mit seinem Benutzernamen hat, man kann ebenso %u verwenden. Wenn Sie irgendwie die Gruppenzugehörigkeit berücksichtigen wollen, können Sie %g oder %G dazu benutzen. Die Bedeutung dieser Parameter und anderer können Sie im Manual (man smb.conf)
finden

4) Erzeugen Sie gemeinsame Ressourcen
Bearbeiten Sie die Datei smb.conf und kommentieren Sie alle "shares" Beispiele aus, und machen Sie die notwendigen Änderungen, um folgende Informationen hinzuzufügen:

[netlogon]
comment = Initialization Scripts
path = /home/netlogon
read only = yes
guest ok = yes
browseable = no

[home]
comment = User Directory
path = /home/%U
browseable = yes
writable = yes

[public]
comment = Public Directory
path = /home/public
browseable = yes
writable = yes
guest ok = yes
create mask = 0777
force create mask = 0777


Speichern Sie die Datei smb.conf ab.

5) Sie können die Korrektheit von smb.conf prüfen, indem Sie diesen Befehl ausführen:

testparm

Dieser Befehl analysiert die Datei smb.conf und zeigt Fehler an, wenn er sie findet.

6) Erzeugen Sie die Verzeichnisse /home/netlogon und /home/public mit den Rechten 0754 (netlogon) and 0777 (public).

7) Bearbeiten Sie das Logon-Script: logon.bat.
Wichtig: Benutzen Sie einen Editor für DOS/Windows (einen wie Notepad oder Edit), um die Datei logon.bat zu erzeugen (damit sie als Textdatei in einem MS-kompatiblen Format gespeichert wird), Sie erreichen dies auch, indem Sie einen Texteditor unter Linux verwenden und danach ins korrekte Dateiformat konvertieren. Sie können zum Beispiel Vims ":set textmode"-Befehl benutzen, um eine Datei mit MS-Zeilenendungen zu bekommen.

net time \\SMBServer /y (Sie können auch /yes anstatt /y schreiben )
net use H: \\SMBServer\home -y
(Sie können auch /yes or /y anstatt -y schreiben )
net use P: \\SMBServer\public -y

8) Fügen Sie die SMBServer-Information in die Datei lmhosts ein.
Editieren Sie die Datei /etc/samba/lmhosts (oder /etc/lmhosts) und fügen Sie eine Zeile mit Ihrer SMBServer-Information hinzu.

SMBServer, d.h: 192.168.0.10 SMBServer

9) Starten Sie den Samba-Daemon (smbd), bzw. starten Sie ihn neu

service smb restart

Wenn er bei Ihrer Linux-Distribution nicht richtig läuft, können Sie folgendes ausführen:
ps -auxgx | grep smb
kill -9 <Prozess-ID von smb>
smbd

10) Führen Sie smbclient aus, um zu prüfen, ob die vorher gemachte Konfiguration korrekt läuft.

smbclient -L //SMBServer

Wenn "Password:" angezeigt wird, drücken Sie "Enter" und die gemeinsamen Ressourcen auf dem Server werden angezeigt.

11) Melden Sie sich in der Domäne THEDOMAIN an, indem Sie irgendeinen Windows 95/98/NT-Client verwenden und benutzen Sie irgendeinen vorher erzeugten Benutzer (siehe Schritte 1 und 2).

Unter Windows 95/98/ME sollte es entsprechend folgender Kommandofolge konfiguriert werden:

Start => Setup => Control Panel=> Network =>Network Client for Microsoft Networks => Properties.

Auf sehr ähnlich Weise kann man Windows NT/2000-Clients (Workstation/Professional) konfigurieren, obwohl die Folge wahrscheinlich nicht die gleiche ist.

Klicken Sie die Option "Start session in Windows NT/2000 domain" und fügen Sie folgende Domäne ein: THEDOMAIN (WORKGROUP).

 

Eine Beispielkonfiguration

Es wird eine vollständige Samba-Konfiguration vorgestellt, diese Datei wurde mit mehreren Linux-Distributionen getestet. Der Leser kann sie abändern, um die nötigen Ergebnisse, die in diesem Artikel vorgestellt werden, zu erhalten. Jeder vorgeführte Befehl ist korrekt kommentiert.

Ein letzter Ratschlag für jene, die eine schnelle Samba-Konfiguration wollen: Sie können Webmin und/oder SWAT installieren, Werkzeuge, die es erlauben auf bequeme Weise zu konfigurieren.

#============================================================#
# /etc/smb.conf
#------------------------------------------------------------------------------------------------------------#
# SAMBA Hauptkonfigurationsdatei
# Dateiskelett für die Konfiguration, wählen Sie die
# Parameter entsprechend Ihren Anforderungen.
#------------------------------------------------------------------------------------------------------------#
# Getestet mit den Systemen: Solaris und Linuxdistributionen:
# RedHat 6.0, 7.0 und 7.1
# Solaris 7
# Slackware 7.x
# Mandrake 6.1, 7.0 und 8.1
# SuSe 7.2
#------------------------------------------------------------------------------------------------------------#
# Letzte Änderungen: 08/12/2001
# Sebastian Sasias - sasias(at)linuxmail(dot)org
#============================================================#
#
# Diese Datei wurde mit den Spezifikationen der Dokumentationen von
# SAMBA, von smb.conf(5) manual entwickelt
#
# OBS: Nachdem Sie diese Datei ändern, testen Sie sie mit dem # Befehl
# "testparm"
#======================== Globale Optionen =======================#
#
# Allgemeine Konfiguration
#
[global]
#......................................................................................................................................#
# workgroup = NT-Domänen-Name oder Workgroup-Name, d.h.: THEDOMAIN
# PDC Domain
workgroup = THEDOMAIN
#......................................................................................................................................#
# Der Name mit dem diese Maschine den anderen bekannt sein wird.
netbios name = SMBServer
#......................................................................................................................................#
# Dieser Kommentar wird im Fenster "Network Neighborhood" erscheinen
server string = Samba Server de este lugar
#......................................................................................................................................#
# Diese Zeile ist aus sicherheitstechnischen Gründen wichtig, um Verbindungen mit ein paar bezeichneten Computern in einem lokalen Netzwerk zu erlauben.
#
# In diesem Beispiel wird Zugang für Computer des Netzwerks 192.168.8.0 zugelassen
# (gewöhnlich C-Class) und vom "loopback"-Interface Wegen genaueren Details, lesen Sie die smb.conf
# Manpages
# D.h.: Gemeinsame Ressourcen können nur von Computern aus benutzt werden, bei denen die IP-Adresse
# mit 192.168.8 und mit 127 beginnt (Kommentierter Satz in der folgenden Zeile)
; hosts allow = 192.168.8. 127.
#......................................................................................................................................#
# Wenn Sie automatisch eine Druckerliste laden wollen, anstatt eine
# Schritt für Schritt zusammenzuschreiben, benutzen Sie dies:
; load printers = yes
#......................................................................................................................................#
# Überschreiben des Pfads zur printcap ist möglich
; printcap name = /etc/printcap
#......................................................................................................................................#
# Bei SystemV müssen die Namenseigenschaften von printcap für lpstat
# erlauben, automatisch eine Druckerliste vom Spoolsystem von SystemV zu erhalten
# (eine schöne Wortredundanz :-)
; printcap name = lpstat
#......................................................................................................................................#
# Es sollte nicht nötig sein, das Drucksystem anzugeben, solange die Art nicht unstandardmäßig ist.
# Gegenwärtig werden folgende Drucksysteme unterstützt:
# bsd, sysv, plp, lprng, aix, hpux, qnx
; printing = bsd
#......................................................................................................................................#
# Entkommentieren Sie dies, falls Sie ein Gastkonto wollen
# Sie müssen dies in die /etc/passwd hinzufügen, ansonsten wird der Benutzer "nobody" benutzt
; guest account = pcguest
#......................................................................................................................................#
# Das ist dazu da, um für jeden Computer, der mit dem Samba-Server eine Verbindung aufbaut, eine andere Logdatei zu verwenden,
#
log file = /var/log/samba/log.%m
#......................................................................................................................................#
# Eine Begrenzung für die Größe der Logdateien setzen (in Kb).
max log size = 50
#......................................................................................................................................#
# Lesen Sie security_level.txt wegen mehr Details
# Zeigt die Art, wie man Passwörter validieren soll
# Benutzerebenensicherheit = Jeder Benutzer mit diesem Passwort (smbpasswd)
security = user
#......................................................................................................................................#
# Wenn security = server ist, dann wird über einen anderen Server validiert
# Benutzen Sie den Wert "password server" nur bei security = server
# password server = [server authentication IP address].
; password server = <NT-Server-Name>
#......................................................................................................................................#
# Wenn Sie Passwortverschlüsselung verwenden wollen. Bitte lesen Sie ENCRYPTION.TXT,
# Win95.txt und WinNT.txt in der Samba-Dokumentation.
# Aktivieren Sie diese Option nicht, solange Sie nicht genug Informationen über diese Eigenschaft haben.
# Information: Win95, Win98 und WinNT senden verschlüsselte Paßwörter.
encrypt passwords = yes
#......................................................................................................................................#
# Wenn Sie folgende Zeile aktivieren, sind Sie in der Lage, Ihre Konfiguration für jede
# Maschine im Netzwerk anzupassen. %m wird durch den Netbiosnamen
# der verbundenen Maschine ersetzt.
; include = /usr/local/samba/lib/smb.conf.%m
#......................................................................................................................................#
# Die Dokumentation und einige beliebte "Tipgeber" meinen: möglicherweise finden Sie, daß
# diese Option eine bessere Leistung bringt. Versuchen Sie es!
# Lesen Sie speed.txt und die Manualpages wegen Details.
socket options = TCP_NODELAY
#......................................................................................................................................#
# Samba-Konfiguration, um mehrere Netzwerkschnittstellen zu benutzen.
# Wenn Sie mehrere Netzwerkschnittstellen haben, dann müssen Sie sie hier auflisten. Wie im Beispiel.
# Lesen Sie die Manpage wegen Details.
; interfaces = 192.168.8.2/24 192.168.12.2/24
#......................................................................................................................................#
# Browserkontrolloptionen:
# setzen Sie lokal "master = no", wenn Sie nicht wollen, daß Samba der Masterbrowser Ihres Netzwerks wird.
local master = yes
#......................................................................................................................................#
# OS Level legt die Reihenfolge dieses Servers bei der Masterbrowserwahl fest.
# Gewöhnlich sollte der vorgegebene Wert vernünftig sein.
; os level = 33
#......................................................................................................................................#
# Domain Master legt Samba als den Domain Master Browser fest.
# Dies erlaubt Samba Dienste als Domain Controller laufen zu lassen und kann Maschinen in unterschiedlichen
# TCP/IP-Subnetzen "betrachten"

# Benutzen Sie dies nicht, wenn Sie schon einen Windows NT/2000-Domain Controller haben, der das erledigt.
domain master = yes
#......................................................................................................................................#
# Preferred Master veranlaßt Samba eine lokale Browserwahl beim Start zu erzwingen
# und gibt ihm eine leicht höhere Chance, die Wahl zu gewinnen.
# Wenn wir mehr als einen Server haben, wird der bervorzugte Master der "Favorit" sein,
# wenn Clients in einer Liste nach einem Server suchen
preferred master = yes
#......................................................................................................................................#
# Benutzen Sie dies nur, wenn Sie einen NT/2000-Server in Ihrem Netzwerk haben, und er als
# ein PDC (Primary Domain Controller) fungiert.
; domain controller = <NT-Domain-Controller-SMBName>
#......................................................................................................................................#
# Aktivieren Sie dies, falls Sie Samba als "domain logon server" für
# Windows 9x/Me Workstations verwenden wollen.
domain logons = yes
#......................................................................................................................................#
# Wenn Sie "domain logons" aktivieren, dann müssen Sie ein Logon-Script
# für jede Maschine oder für jeden Benutzer im Windows-Netwerk anlegen.

# Für eine spezielle Logon-Batch für jeden Workstation computer
; logon script = %m.bat

# Für eine spezielle Logon-Batch für jeden Benutzer
; logon script = %U.bat
#......................................................................................................................................#
# Wo die Roving-Profile (nur für Win95 und WinNT) anzulegen sind.
# %L ersetzt den NetBIOS-Namen des Servers, %U ersetzt den Benutzernamen.

# Sie müssen unten das [Profiles]-Share entkommentieren
; logon path = \\%L\Profiles\%U
#......................................................................................................................................#
# Unterstützung für Windows Internet Name Service:
# WINS-Unterstützung - sagt dem NMBD seinen WINS-Server zu aktivieren.
# WINS-Protokoll, konvertiert Maschinennamen zu IP-Adressen,
# es funktioniert so wie DNS bei TCP/IP funktioniert.
; wins support = yes
#......................................................................................................................................#
# WINS Server - sagt den NMBD-Komponenten von Samba ein WINS-Client zu sein
# Samba-Server kann einer von diesen sein: WINS-Server oder WINS-Client,
# aber NICHT beide gleichzeitig .
# Hier muß der WINS IP Server angegeben werden
; wins server = 192.168.8.1
#......................................................................................................................................#
# WINS Proxy - sagt Samba Anfragen zu Namensauflösungen in Bezug auf einen WINS-
# fähigen Client, damit dies funktioniert muß mindestens ein WINS-Server im Netzwerk sein.
# Der Defaultwert ist NO.
; wins proxy = yes
#......................................................................................................................................#
# DNS Proxy - sagt Samba, ob oder ob er nicht versuchen soll, NetBIOS-Namen über DNS-Lookups aufzulösen.
# Das Default für Versionen bis 1.9.17 ist yes, das hat sich seit Version 1.9.18 zu no verändert.

# Hier können wir Samba sagen, daß die Namensauflösung mit DNS oder nicht damit gemacht wird.
# dns proxy = yes
# dns proxy = no (Namensauflösung wird über die Datei lmhosts gemacht )
#......................................................................................................................................#
# Wenn das Logon-Laufwerk nicht angegeben wird, wird Z: automatisch gemounted.
logon drive = P:
#......................................................................................................................................#
#Wenn ein Login passiert, wird dieses Script ausgeführt: /etc/samba/netlogon/SAMBA.BAT
# und mounten Sie Platteneinheiten indem Sie "net use" verwenden
logon script = SAMBA.BAT

#====================== Share-Definitionen ========================#

# Persönliches Verzeichnis für jeden Benutzer
# Unit P:

[homes]
comment = Home Directories
browseable = no
writable = yes
readonly = no
force create mode = 0700
create mode = 0700
force directory mode = 0700
directory mode = 700

#------------------------------------------------------------------------------------------------------------#
# Verzeichnis für vorläufige Dateien
# Unit T:

[tmp]
comment = Tempora Files
path = /tmp
readonly = no
public = yes
writable = yes
force create mode = 0777
create mode = 0777
force directory mode = 0777
directory mode = 0777

#------------------------------------------------------------------------------------------------------------#
# CD-ROM im Server
# Unit L:

[cdrom]
comment = CD-ROM
path = /mnt/cdrom
public = yes
writable = no

#------------------------------------------------------------------------------------------------------------#
# Gruppe, entsprechend zu /home/grp.name_group
# /home/user/group ist ein Link nach /home/grp.name_group
# grp.name_group hat die Rechte 770
# Unit G:

[group]
comment = Directory of Group
path = /home/%u/group
writable = yes
readonly = no
force create mode = 0770
create mode = 0770
force directory mode = 0770
directory mode = 0770

#------------------------------------------------------------------------------------------------------------#
# Diese Einheit ist dazu da, um Applikationen abzuspeichern, Installationssoftware,
# kommerzielle Software, usw.
# die Rechte von /net und /net/install sind 755, d.h.: hier ist root der Besitzer
# Unit N:

[net]
comment = Directory Net
path = /net
writable = yes
readonly = no
force create mode = 0750
create mode = 0750
force directory mode = 0750
directory mode = 0750

#------------------------------------------------------------------------------------------------------------#
[netlogon]
comment = Logon Services in the Network
path = /etc/samba/netlogon
guest ok = yes
writable = no
locking = no
public = no
browseable = yes
share modes = no

#------------------------------------------------------------------------------------------------------------#

#============================================================#

 

Letzte Betrachtungen

Das Samba-Paket und andere Werkzeuge für Linux sind in einer ständigen Entwicklung, daher ist es möglich, daß einige hier vorgestellte Details an Gültigkeit verlieren. Tatsächlich wurden während der Geschichte der Samba-Entwicklung einige Parameternamen in den Konfigurationsdateien leicht abgeändert, mit dem Ziel, eine bessere Struktur zu erhalten.

Wenn Sie während der Samba-Konfiguration einige Fehler über unbekannte Parameter erhalten, haben Sie zwei einfache Möglichkeiten, um das Problem zu lösen:

 

Quellenangaben: Bibliographie and Software-Werkzeuge

 

Copyright

Samba ist ein Produkt, das unter der GPL verbreitet wird.
Linux ist eine registrierte Marke von Linus Torvalds.
Solaris ist ein Betriebssystem und registrierte Marke von Sun Microsystems.
MS Windows ist ein Betriebssystem und registrierte Marke von Microsoft.
Die Nutzung von Samba beinhaltet grosse Einsparnisse an Lizenzzahlungen ans Microsoft.



Der LinuxFocus Redaktion schreiben
© Sebastian Sasías
"some rights reserved" see linuxfocus.org/license/
http://www.LinuxFocus.org
Autoren und Übersetzer:
es --> -- : Sebastian Sasías <sasias[at]linuxmail[dot]org>
es --> en: Sebastian Sasías <sasias[at]linuxmail[dot]org>
en --> de: Hubert Kaißer (homepage)

2005-01-14, generated by lfparser_pdf version 2.51