vorherige SeiteInhaltsverzeichnisStichwortverzeichnisnächste Seite

Anhang B: Tipps und Tricks

von Jerry Carter und Richard Sharpe

Eines der spaßigen Dinge im Leben ist, etwas in einer Art und Weise zum Funktionieren zu bringen, wie Sie es nie zuvor getan haben. Ein guter Freund von mir kam in den Besitz einer Festplatte, die fast zerstört war. Er musste einige Daten, die darauf waren, wiederherstellen, aber der Motor, der die Festplatte drehte, war sehr schwach. Da die Festplatte bereits fehlerhaft war, dachte er, er hätte nichts zu verlieren, entfernte das Gehäuse, drehte die Platten so lange mit einem Schraubenzieher, bis sie schnell genug waren und der Motor wieder übernehmen konnte. Das war wirklich toll! Das ist die Art von Geschichten, die Sie immer wieder an einem Konferenztisch erzählen können.

Dieser Anhang ist eine Zusammenfassung verschiedener Tricks und Tipps, die mein Leben verbessert haben (zumindest was die Verwaltung von Samba-Servern betrifft). Ich bezwecke damit, Ihnen einige Ideen zu geben, die Ihnen helfen können und Ihre eigene Kreativität anspornen. Zwar mag es sich widersprüchlich anhören, aber der Hauptgrund, aus dem ich im Computerbereich landete, waren die kreativen Aussichten. Nun, das und der Film Tron, den ich immer noch auf Video habe.

Performance-Tuning

Nur selten muss ich die Performance-Parameter meiner Samba-Server an meinem Arbeitsplatz bearbeiten. Vielleicht ist das ein Vorteil der Hardware, auf der unsere Samba-Server laufen oder der zugrunde liegenden Netzwerkarchitektur. Manchmal aber taucht doch ein Problem auf.

Bevor ich fortfahre, lassen Sie mich sagen, dass jeder Abschnitt über Performance Tuning in einem Buch nur ein einfacher Ratschlag ist und auch so behandelt werden sollte. Es gibt einige gute generelle Vorschläge, aber hauptsächlich sollten Sie experimentieren. Jedes Netzwerk ist anders, und es gibt einfach zu viele Variablen in dem Problem, um alle Schwierigkeiten in jeder Situation lösen zu können.

Wenn Sie Übertragungsraten über Samba oder einen anderen Mechanismus vergleichen wollen, ist eine gute Beurteilung der rohen Übertragungsgeschwindigkeit möglich, wenn sie die Leistung mit der des FTP-Protokolls vergleichen. Alle TCP/IP-Protokolle, die von Microsoft für seine Betriebssysteme verteilt werden, enthalten einen FTP-Client. Messen Sie einfach die Übertragungsrate einer größeren Datei, etwa 8 Mbyte oder so, über FTP und den Standard-DOS-Befehl copy. Sie sollten feststellen, dass die Lese- und Schreibraten für eine bestimmte Methode ähnlich sind.

In dem kleinen Netzwerk, das ich zu Hause habe, konnte ich eine Datei über FTP mit etwa 990 Kbps herunterladen. Über den Windows-NT-Befehl copy konnte ich die Datei vom gleichen Server mit Samba mit etwa 890 Kbps herunterladen. Die Übertragungsrate war für das Lesen und Schreiben ähnlich. Der Windows-Client war ein Dell Pentium 400 MHz mit Windows NT 4.0 Server. Er hatte 128 Mbyte RAM und eine EIDE-Festplatte. Der Linux-Server war ein Pentium 133 mit 64 Mbyte RAM und ebenfalls einer EIDE-Festplatte. Die Linux-Distribution war Slackware 3.5 mit der Version 2.0.34 des Linux-Kernels.

Netzwerkbandbreite

Wenn Sie Performance betrachten, gibt es mehrere Blickwinkel, aus denen Sie schauen sollten. Der offensichtlichste, auch wenn er oft übersehen wird, ist die Netzwerkbandbreite selbst. Wenn Sie das Netzwerkkabel übersättigen, gibt es nicht viel, was Sie tun können, außer entweder den Netzwerkdatenverkehr zu vermindern oder die Bandbreite zu erhöhen.

Eine einfache Methode, einen Unix-Rechner zu überprüfen, besteht darin, die Befehle ifconfig oder netstat -i zu verwenden. Sie sollten die Statistiken über einen gewissen Zeitraum beobachten, um eine Vorstellung von der generellen Anwendung zu bekommen. Beide geben Ihnen einen Überblick über die gesamten übertragenen und empfangenen Fehler zusätzlich zu der Anzahl der Kollisionen. Nachfolgend finden Sie eine Ausgabe des Linux-Befehls ifconfig von meinem Rechner zu Hause.

Um die Kollisionen (durch die coll:-Statistiken angezeigt) zu produzieren, habe ich einen Host von meinem Linux-Rechner mit echo-Anfragen überflutet und eine große Datei (etwa 15 Mbyte) vom Host an meinen Samba-Server übertragen, damit der Datenverkehr in beide Richtungen fließt:

eth0 Link encap:Ethernet Hwaddr 00:00:F4:D8:6C:0D
     inet addr:192.168.1.72 Bcast:192.168.1.255 Mask:255.255.255.0
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
     RX packets:161777 errors:0 dropped:0 overruns:0 frame:0
     TX packets:159703 errors:0 dropped:0 overruns:0 carrier:0 coll:21734
     Interrupt:10 Base address:0xff40 DMA chan:4

Wenn die Statistiken zu Ihrem Netzwerkdatenverkehr nicht normal erscheinen, ist eine mögliche Erklärung eine fehlerhafte Netzwerkkarte im Netzwerk. Ich habe Fälle gesehen, in denen eine Netzwerkkarte in einem PC kaputt gegangen ist und anfing, zufällig Pakete in das Netzwerk zu übertragen.

Server-Tuning

Wenn Sie sicher sind, dass das Problem nicht in der Bandbreite des Netzwerks liegt, ist ein anderer Blickwinkel notwendig, aus dem die Dinge angesehen werden können, die Seite des Servers. Generell fällt das Tuning auf Server-Seite in zwei Bereiche:

Seit der Freigabe 1.9.18 unterstützt Samba korrekt die SMB-Mechanismen für opportunistisches Locking, kurz oplocks. Diese ermöglichen Clients, Dateioperationen auf aggressive Art und Weise zwischenzuspeichern. Je nach Client-Einstellungen kann dies zu einer großen Performance-Steigerung führen; es ist standardmäßig aktiviert. Es wird empfohlen, dass Sie für Samba-Versionen höher als 1.9.18 die oplock-Unterstützung nicht deaktivieren. Aktuelle Bewertungen ergaben eine Leistungssteigerung von bis zu 30 Prozent, wenn oplocks aktiviert sind.

Samba bietet auch die Option, strict locking zu aktivieren. In diesem Fall überprüft Samba bei jedem Zugriff auf eine Datei den Datei-Lock, statt dies nur dann zu tun, wenn ein Client eine Datei-Lock-Überprüfung verlangt. Wenn Sie strict locking aktivieren, werden Sie auf manchen Systemen eine Performance-Verschlechterung feststellen. Standardmäßig ist strict locking nicht aktiviert.

Nicht unbedingt relevant für das Locking, aber für Festplatten-E/A im allgemeinen ist der boolesche Parameter strict sync. Dieser Parameter, der standardmäßig nicht aktiviert ist, kontrolliert, ob der smbd Anfragen von PC-Clients für ein sync der Daten auf die Festplatte entspricht. Oft will die Applikation den Speicher einfach entleeren statt für die Daten ein sync durchzuführen. Dies ist ein subtiler Unterschied, aber unter Unix blockiert ein sync()-Aufruf, bis alle ausstehenden Daten in den Kernel-Puffern auf die Festplatte geschrieben wurden. Dies stellt eine Belastung für die CPU dar und verlangsamt Ihren Dateizugriff. Das Problem wurde erstmals mit der Freigabe von Windows 98 erkannt. Der Windows Explorer schrieb während der Kopie einer Datei die Daten in kleinen Brocken und verlangte nach jedem ein sync.

Mit der Standardeinstellung ist es in Hinsicht auf Datenkorruption nur dann gefährlich, wenn das Betriebssystem, auf dem Samba ausgeführt wird, abstürzt. Daher ist die Gefahr sehr klein. Sie werden sicher feststellen, dass die Vorteile das kleine Risiko überwiegen.

Die wichtigste Methode für das Tuning der Sockets innerhalb von Samba wird über den Parameter socket options ausgeführt. Die möglichen Werte für den Parameter sind:

Die letzten vier Optionen akzeptieren als Wert eine ganze Zahl. Sie könnten z.B. SO_RCVBUF=16384 spezifizieren. Wenn Sie eine der ersten sechs Optionen aktivieren und das Default Receive Window definieren wollen, könnten Sie Folgendes hinzufügen:

socket options = TCP_NODELAY SO_RCVBUF=13384

Die Vorteile jeder Option hängen von Ihrer Netzwerktopologie und den Server-Besonderheiten ab. Um Samba zu tunen, brauchen Sie etwas Hintergrundwissen über TCP/IP, z.B. was ist das Receive Window und welche Auswirkungen hat es, wenn Sie es ändern. Aber Sie können natürlich auch die Einstellungen einfach blind ändern und sehen, was passiert. Da solche Themen über den Rahmen dieses Buches hinausgehen, empfehle ich Ihnen, die Manpages zur Funktion setsocketopt für Ihr System zu lesen und auch einen Blick in die smb.conf-Manpage zu werfen. Standardmäßig wird die Option TCP_NODELAY aktiviert und sonst nichts:

socket options = TCP_NODELAY

Client-Tuning

Es ist schwierig, dieses Thema vertieft darzustellen, weil so viele verschiedene Clients und PCs alle möglichen Arten von Netzwerk-Hardware installiert haben können. Microsoft hat eine Liste der konfigurierbaren TCP/IP-Einstellungen für Windows 95 im Knowledge-Base-Artikel mit dem Titel Windows TCP/IP Registry Entries (Q158474) veröffentlicht. Ich konnte keinen ähnlichen Artikel für Windows NT finden, aber Dr. Karanjit S. Siyan hat eine gute Referenz mit dem Titel Windows NT TCP/IP geschrieben, die von New Riders herausgegeben wird (ISBN 1-56205-887-8).

Um auf die MS Knowledge Base im Web zuzugreifen, gehen Sie zu http://support.microsoft.com/support.

Eine normalerweise verzwickte Einstellung ist die Größe des angezeigten TCP Default Receive Window. Der Standard für Windows 9x ist 8 Kbyte. Einige Leute haben jedoch über bessere Perfomance berichtet, wenn der Wert auf 16.384 Byte erhöht wird. Sie werden mit Ihren Clients experimentieren müssen, um sicher zu sein.

Verschiedene andere Einstellungen

Die Performance Ihres Servers kann auch durch andere Umstände beeinträchtigt werden, die nicht wirklich im Netzwerk begründet liegen. Einer ist der aktuelle Log-Level für smbd und nmbd. Samba kann sehr wortreich sein in Hinsicht auf Debug-Meldungen, die in die Logs geschrieben werden. Das ist gut, wenn Sie versuchen, ein Problem zu lösen, aber es kann Festplattenplatz belegen und die Samba-Daemons verlangsamen, da sie ständig Ausgaben in Logdateien ausschütten. Ziehen Sie in Betracht, die Daemons mit dem Standard-Log-Level 2 laufen zu lassen. Dies gibt Ihnen genügend Informationen für grundlegendes Troubleshooting, ohne Samba zu überlasten.

Ein anderer Grund für langsame Reaktionen während des Logins kann darin bestehen, dass die Einstellungen für Parameter wie username level und password level auf einen sehr hohen Wert wie z.B. 8 gesetzt sind. Denken Sie daran, dass dies dazu führt, dass Samba alle Kombinationen der Groß-/Kleinschreibung bis zum definierten Maximum ausprobiert. Je höher der Level, um so mehr Strings sind für die Authentifizierung zu vergleichen.

Mehrere Samba-Server auf einem Rechner

Eine Sache, die PC-Benutzer und die meisten Netzwerkadministratoren gemeinsam haben, ist, dass wir alle immer denken, wir bräuchten mehr Hardware. Die Spielzeuge sind größer, aber der Hintergedanke bleibt der gleiche. Aber natürlich gilt für uns, dass wir die Hardware auch wirklich brauchen!

Es ist möglich, mehrere Samba-Server auf einem einzigen Rechner mit mehreren Netzwerk-Interfaces zu konfigurieren. Wenn Sie aber das gleiche Ziel über die Einstellungen für die Parameter netbios aliases und include erreichen können, wie es in Kapitel 10, »Automatisierung auf Server-Seite«, beschrieben wurde, kann ich Ihnen nur empfehlen, dies zu tun. Sie sollten nur dann mehr als einen Samba-Server pro Rechner installieren, wenn Sie mehrere Versionen der smbd- und nmbd-Binaries laufen lassen müssen, wenn Sie z.B. Version 2 für Dateifreigaben laufen lassen, aber auch den aktuellsten HEAD-Branch-Code installieren wollen, um als PDC zu agieren.

Zunächst müssen auf dem Rechner beide Netzwerk-Interfaces korrekt konfiguriert sein. Ich habe für den zweiten Samba-Server ein virtuelles Netzwerk-Interface benutzt. Unter Solaris wird dieser fiktionale Netzwerkadapter z.B. als le0:1 bezeichnet.

Danach müssen Sie für jeden Server eine separate smb.conf-Datei einrichten. Natürlich können Sie für übliche Einstellungen die Direktive include verwenden.

In jeder smb.conf müssen Sie zwei Parameter setzen. Der erste ist das Interface, an das Samba sich anbinden sollte. Nehmen wir z.B. an, Sie haben zwei Netzwerkkarten mit den IP-Adressen 192.168.1.90 bzw. 192.168.1.91. Ich werde die Subnetzmaske 255.255.255.0 verwenden. Daher enthält jede smb.conf folgende Einstellung:

interfaces = 192.168.1.90/24

oder

interfaces = 192.168.1.91/24

Sie müssen außerdem die Adresse spezifizieren, an der ein bestimmter Samba-Server auf Verbindungen horchen sollte. Standardmäßig werden Verbindungen an jede Adresse akzeptiert. Die Adresse, die Sie über den Parameter socket address spezifizieren, muss der für den Parameter interfaces entsprechen. Hier ist ein Beispiel für das erste Netzwerk-Interface:

socket address = 192.168.1.90

Die Verwendung des Parameters socket address bricht höchstwahrscheinlich die Standard-Browsing-Regeln. Um dies zu umgehen, müssen Sie einen WINS-Server benutzen und den Samba-Rechner dort registrieren lassen.

Wenn Sie die zwei Server jetzt starten, sollte jeder nur mit einem Interface verbunden sein. Wenn Sie beim Start von smbd und nmbd auf Probleme treffen, überprüfen Sie die Debug-Logs auf Meldungen wie »not able to bind to address«. Sie können auch versuchen, einen Server zu starten und dann einige Minuten warten, bevor Sie den zweiten Server starten.

Diese Art von Umgebung kann sehr komplex und Fehler können nur schwer zu finden sein. In einem Fall hatte ich einen Samba-PDC auf einem virtuellen Netzwerk-Interface und Samba 1.9.18p7 auf dem realen Interface. Beide Server sollten sich bei einem anderen Samba-Rechner registrieren, der als ein WINS-Server agierte, aber der PDC konnte den Namen DOMÄNE<1b> nicht registrieren. Das Problem lag darin, dass Pakete am primären Interface verloren gingen und der PDC auf dem virtuellen Interface nie die Antwort des WINS-Servers zu sehen bekam. Ich konnte den Fehler beheben, indem ich den PDC startete, fünf Sekunden wartete und dann den 1.9.18p7-Server startete. Wenn Sie entscheiden, ein derartiges System laufen zu lassen, machen Sie sich darauf gefasst, ein wenig herumsuchen zu müssen, bis die Dinge funktionieren.

Die Festplatte eines Remote-PC sichern

Eines der größten Probleme mit PCs liegt im Backup ihrer Festplatten. Benutzer kümmern sich nicht darum, aber wenn sie etwas verlieren, rennen sie zu den Systemadministratoren und verlangen ihre Dateien zurück. In einigen Unternehmen ist es zur Richtlinie geworden, dass die Inhalte der Festplatte auf jedem PC nicht gespeichert werden und dass Dateien, die Benutzer sichern wollen, auf dem Samba-Server gespeichert werden müssen (vielleicht in ihrer homes-Freigabe).

In manchen Unternehmen ist dieser Ansatz aber nicht durchzuführen und deshalb werden andere Lösungen gebraucht. Hier ist eine Möglichkeit, das Problem zu lösen. Der Ansatz benutzt smbclient, um die Dateien zu sichern, Shell-Skripte und eventuell cron-Skripte.

smbclient wurde bereits in Kapitel 13, »Unix (smbclient, smbfs, smbwrapper und andene Utilities)«, dargestellt. Das Tool hat einen tar-Modus, mit dem Sie Dateien von einer entfernten CIFS/SMB-Freigabe kopieren und sie als eine TAR- (GNUtar-)Datei speichern können. Hier verwenden Sie diese Funktion, um PCs zu sichern. Sie müssen smbclient nicht von Ihrem primären Samba-Server laufen lassen. Tatsächlich müssen Sie es überhaupt nicht von einem Samba-Server laufen lassen. Installieren Sie einfach die Samba-Binaries auf dem System, von dem Sie Backups durchführen wollen.

Folgende Schritte müssen Sie für das Backup von PCs mit smbclient durchführen:

  1. Entscheiden Sie, welche PCs Sie sichern wollen. Dies ist der einfachste Schritt.
  2. Richten Sie für jeden PC, der gesichert werden soll, eine Freigabe ein, die Zugriff auf die Dateien und Verzeichnisse für das Backup bietet.
  3. Richten Sie die cron-Skripte und Shell-Skripte ein, die Sie für das Backup der Dateien auf jedem PC verwenden wollen.

Sie werden sich nachfolgend auf die Schritte 2 und 3 konzentrieren. smbclient kann für das Backup von Dateien von Windows für Workgroups, Windows 9x und Windows NT benutzt werden. Um eine Freigabe auf einem PC einzurichten, starten Sie Windows Explorer (oder verwenden Ihre bevorzugte Methode) und wählen das Verzeichnis aus, das alle Dateien enthält, die Sie sichern wollen. Ein Beispiel hierfür ist in Abbildung B.1 dargestellt. Sie sollten das Verzeichnis nur für den Lesezugriff freigeben. Der Vorgang ist für Windows für Workgroups etwas anders. Sie sollten der Freigabe den Namen backup oder einen anderen für alle PCs gleichen Namen geben.

Wenn Sie PCs derart einrichten, kann jeder die Dateien auf diesen PCs entfernt lesen. Sind Sie mit dem Internet verbunden, sollten Sie sicherstellen, dass CIFS/SMB-Zugriff vom Internet auf Ihre internen Systeme durch eine Firewall verhindert wird.

Abb. B.1: Freigabe eines Verzeichnisses unter Windows 9x und Windows NT

Wenn Sie Dateifreigaben auf den PCs, die Sie sichern wollen, eingerichtet haben, sollten Sie die cron- oder Shell-Skripte einrichten, die die Dateien in diesen Freigaben sichern.

Zwar sind die Skripte wahrscheinlich für jedes Unternehmen spezifisch, aber die Form des smbclient-Befehls ist der folgenden ähnlich:

smbclient //$client/backup -Tc Gerät oder Datei

$client ist hier eine Shell-Variable, die den aktuell zu bearbeitenden Client enthält, und Gerät oder Datei ist der Name des Geräts oder der Datei, auf das bzw. in die das Backup gespeichert wird. Dies kann Folgendes sein:

Wenn Sie Dateien ausschließen müssen, können Sie den oben stehenden Befehl wie folgt ändern:

smbclient //$client/backup -TcX Gerät oder Datei Exclude-Dateien

wobei Exclude-Dateien den in Kapitel 13 dargestellten Regeln folgt. Die Wildcard-Zeichen * und % funktionieren hier.

Sie sollten sich auch Amanda als Backup-Tool ansehen, da es smbclient für das Backup von PCs verwendet, mehrere Backups parallel ermöglicht und einfache Funktionen zur Handhabung von Bandlaufwerken bietet. Die Amanda-Homepage finden Sie unter http://www.cs.umd.edu/projects/amanda.

Faxen

Samba kann benutzt werden, um es Benutzern zu ermöglichen, Faxe direkt von Ihren PCs aus zu versenden. Die grundlegende Strategie ist:

  1. Installieren Sie HylaFax (www.vix.com/hylafax) oder mgetty+sendfax (ftp://sunsite.unc.edu/pub/linux/system/Serial/mgetty+sendfax) auf Ihrem Samba-System.
  2. Richten Sie unter Samba eine Druckerfreigabe ein, vielleicht mit dem Namen FAX, die Druckaufträge an die LPD-artige Warteschlange FAX weiterleitet. Aufträge an diese Warteschlange werden als PostScript weitergeleitet.
  3. Stellen Sie für die Warteschlange FAX einen Druckfilter zur Verfügung, der Folgendes tut:
  4. Durchsucht PostScript-Dateien nach einem String wie Fax-Nummer: d [d*][-d*]

    Leitet die PostScript-Datei entweder an HylaFax oder mgetty+sendfax weiter

  5. Auf Clients wird die Warteschlange als beliebiger PostScript-Drucker konfiguriert.
  6. Ein Benutzer bereitet das Fax einfach als Textverarbeitungsdokument vor und druckt es an die entfernte Warteschlange.

Eine detaillierte Darstellung darüber, wie Sie HylaFax oder mgetty+sendfax erhalten, installieren und konfigurieren, um ausgehende Faxe zu handhaben, würde den Rahmen dieses Buches sprengen.

Samba über eine PPP-Verbindung

Der Zugriff auf einen Samba-Server über eine PPP-Verbindung ist dem Zugriff auf einen Server in einem entfernten Netzwerk sehr ähnlich. Die meisten Probleme, auf die Leute treffen, hängen mit der Auflösung von Namen zusammen. Wenn Sie Namen erfolgreich auflösen können, verschwinden viele Probleme von allein.

Für meine Beispiele in diesem Abschnitt werde ich ein Notebook benutzen, auf dem Windows NT 4.0 Workstation läuft. Die präsentierten Ideen sind für die Konfiguration eines Windows-95-PPP-Clients im Wesentlichen gleich. Da Sie sich ansehen werden, wie Sie auf Samba über eine PPP-Verbindung zugreifen können, werde ich auch nicht erklären, wie Sie einen PPP-Server einrichten. Ich werde mich stattdessen von den Details der PPP-Server-Implementierung und der Kontrolleinstellungen auf den Clients distanzieren.

Die erste Sache, die Sie definieren müssen, ist die IP-Adresse Ihres WINS-Servers. Abbildung B.2 zeigt das Fenster für die TCP/IP-Eigenschaften unter Windows NT 4.0. Wie Sie sehen können, habe ich die IP-Adressen der DNS-Server und die einzige WINS-Adresse manuell eingegeben. Je nach Server können diese Adressen bei Aufnahme einer neuen Verbindung dynamisch vergeben werden.

Abb. B.2: Einstellungen für DNS- und WINS-Server für eine PPP-Verbindung unter Windows NT 4.0

Wenn Sie Windows 9x benutzen, sollten Sie außerdem sicherstellen, dass Sie die Option Am Netzwerk anmelden (siehe Abbildung B.3) bei den Verbindungseigenschaften markieren und den Client für Microsoft Netzwerke installiert haben, als würden Sie eine Verbindung zu einem LAN konfigurieren.

Abb. B.3: Verbindungseigenschaften unter Windows 9x. Auswahl der Option Am Netzwerk anmelden

Ich habe festgestellt, dass ein anderes wichtiges Detail ist, dass der anrufende Client ein Mitglied der gleichen NetBIOS-Arbeitsgruppe sein sollte wie der WINS-Server. In meinem Fall ist der WINS-Server auch der Domain-Master-Browser der Arbeitsgruppe. Daher kann ich alle Arbeitsgruppen sehen, die auch der WINS/DMB-Server sieht. Es ist nicht notwendig, dass der WINS-Server gleichzeitig auch der PPP-Server ist.

Das Browsing ist, wie immer, der komplizierteste Teil in der Konfiguration einer Anwählverbindung. Vorausgesetzt Sie haben die Option Am Netzwerk anmelden unter Windows 9x aktiviert (dies ist in Windows NT integriert), sollten Sie sich mit bestimmten Servern verbinden können, auch wenn das Browsing nicht funktioniert. Dafür müssen nur Ihre WINS-Server-Einträge korrekt sein.

Alle Standardoptionen für den Befehl net.exe funktionieren normal. Ich kann z.B. über folgenden Befehl auf mein Home-Verzeichnis zugreifen:

net use h: \\burrito\jerry

Es ist ebenfalls möglich, über eine PPP-Verbindung Domänen-Logins durchzuführen, indem Sie entweder einen WINS-Server oder einen statischen lmhosts-Eintrag benutzen, um den NetBIOS-Namen DOMÄNE<1b> aufzulösen. Aus Spaß habe ich mit diesem einfachen Setup einer von Samba kontrollierten Windows-NT-Domäne über eine Verbindung durch unseren Modem-Pool an meinem Arbeitsplatz einen Windows-NT-4.0-Server hinzugefügt. Ich konnte mich außerdem über die Anwählverbindung in die Domäne einloggen und mein wanderndes Profil herunterladen. Ich würde Ihnen wegen der Übertragungsgeschwindigkeiten nicht empfehlen, dies über eine Anwählverbindung zu tun, aber das Logon-Skript und die Laufwerksverbindungen funktionieren sehr gut.

Einfache Tricks für Domänen-Logon-Skripte

Im Gegensatz zu Windows NT bietet Windows 9x keine einfache Methode, um den Benutzernamen der aktuell eingeloggten Person zu bestimmen. Das ärgert mich. Deshalb zeige ich Ihnen nun, wie ich das umgehen kann.

Zunächst habe ich ein allgemeines Logon-Skript für alle Windows-9x-Clients, das durch folgende Einstellung gesetzt ist:

logon script = logon.bat

Die Batch-Datei selbst (die in Listing B.1 gezeigt wird) ist relativ einfach. Der Großteil des Skripts ist speziell für mein Unternehmen entwickelt. Aber die Entwicklung ist vielseitig.

Listing B.1: Logon-Skript für Windows-95-Clients

1.  @echo off
2.
3.  rem #
4.  rem # 971007 Jerry Carter  -  COE Network Services
5.  rem #
6.  rem # Login script for Windows 95 clients
7.  rem #
8.
9.  echo Executing Windows 95 login script....
10.
11. rem # Clean up old pcnfsPro 2.0 files if necessary...
12. if exist %winbootdir%\pcnfswin.ini call \\ivy\scripts\delpro.bat %winbootdir%
13.
14. rem ---------- Set the PC's system clock
15. net time \\kudzu /set /yes
16.
17. rem ---------- Mount the normal network drives
18. echo Mapping I: to \\kudzu\apps
19. net use i: \\kudzo\apps
20. echo Mapping H: to \\kudzu\homes
21. net use h: \\kudzu\homes
22.
23 rem ---------- Now the user specific stuff
24. if not exist h:\user.bat GOTO no_user
25. call h:\user.bat
26. :no_user
27.
28. :group
29. rem ---------- Mount the default group drive
30. %COMSPEC% /c \\kudzu\netlogon\group.bat %GROUP%
31.
32. rem ---------- Mount any office shares
33. if "%MACHINE_GROUP%" == "" goto no_machine_group
34. %COMSPEC% /c \\kudzu\netlogon\off-dirs.bat %MACHINE_GROUP%
35. GOTO end
36.
37. :no_machine_group
38. regedit /s /w \\kudzu\netlogon\update.reg
39. GOTO end
40.
41. :end
42. m ******* end of logon.bat

Zunächst sollten Sie bemerken, dass das Home-Verzeichnis des Benutzers immer als Laufwerk H: gemountet wird (Zeile 21). Dann sollten Sie sehen, dass das Logon-Skript h:\user.bat aufruft, wenn es existiert (Zeilen 24 und 25). Die Batch-Datei ist benutzerspezifisch und ich werde in ihr die Umgebungsvariable USERNAME setzen.

Wenn eine Verbindung zu einem Home-Verzeichnis eingegangen wird, habe ich ein preexec-Skript, das die ~\user.bat-Datei erzeugt, wenn sie noch nicht existiert. Hier sind die Einstellungen für die [homes]-Freigabe:

[homes]
   preexec = /usr/samba/lib/netlogon/user.pl %U
   comment = Unix Home Directories
   browseable = no
   path = %H
   writeable = yes
   wide links = no
   create mode = 0600
   directory mode = 0700
   invalid users = @ugrad

Listing B.2 enthält den Source-Code für das Perl-Skript, das als Wert für den Parameter preexec definiert ist.

Listing B.2: Perl-Skript zum Einrichten von ~/USER.BAT

#!/usr/local/bin/perl5

$user = $ARGV[0]

#get the user's home directory
( $name, $passwd, $uid, $gid, $quota, $comment, $gcos, $dir, $shell ) = getpwnam($user);
( $group, $passwd, $gid ) = getgrgid ( $gid );

if ( ! -f "$dir/user.bat" ) {

   open ( USERINFO, "> $dir/user.bat" ) || die "Couldn't open user.bat!!\n";
   print USERINFO "\\\ivy\\bin\\winset USERNAME=$user\015\n";
   print USERINFO "set USERNAME=$user\015\n";
   print USERINFO "set GROUP=$group\015\n";
   close ( USERINFO );
   chmod 0600, "$dir/user.bat"

}

exit 0

Der Befehl winset ist ein Tool, das auf der Windows-95-CD-ROM enthalten ist und über das Sie einen Wert im globalen Umgebungsbereich von einem DOS-Befehlsprompt setzen können. Nach dem Einloggen ist diese Information in der Variablen %USERNAME% verfügbar.

Die user.bat kann auch für die Person spezifische Befehle enthalten, z.B. eine Zuordnung zu einem LPT-Port oder das Kopieren einiger Dateien. Ich habe folgende Befehle eingefügt, um das Verzeichnis \\Server\netlogon zu mounten:

\\ivy\bin\winset USERNAME=jerry
set USERNAME=jerry
set GROUP=uucp

echo Mapping X: to //burrito/netlogon
net use x: \\burrito\netlogon

Die Einträge \\ivy\bin\winset USERNAME und set USERNAME sind beide notwendig. Der winset-Befehl lässt die Variable nicht in der aktuellen Befehls-Shell in Kraft treten. Daher wird der Standardbefehl set USERNAME verwendet, damit ich mich von innerhalb des Login-Skripts auf seinen Wert beziehen kann.

Zusammenfassung

Samba bietet viele Möglichkeiten, die Dinge zu tun, die Ihre Aufgabe vereinfachen. Im Fall von Performance Tuning über die smb.conf können Sie so viele Details bearbeiten, wie Sie wollen. Oft funktionieren die Standardeinstellungen von Samba gut genug, aber Sie sollten ein wenig experimentieren.

Samba ist ein Tool, das in jeder Art und Weise benutzt werden sollte, die Sie sich vorstellen können. Ich hoffe, dass die in diesem Anhang dargestellten Beispiele Ihre Kreativität geweckt haben und Sie Ihre eigenen Tipps und Tricks entwickeln werden.

Frage & Antwort

  1. Wo finde ich weitere Informationen über andere Tipps und Tricks?

  1. Die besten Informationsquellen sind die Usenet Newsgroup comp.protocols.smb und die Haupt-Samba-Mailing-Liste unter samba@samba.org. Sie können das Samba-Archiv für Mailing-Listen durchsuchen, indem Sie den Links auf der Samba-Homepage folgen.

  1. Ich habe gerade einen eigenen Tipp oder Trick entwickelt. Wie kann ich anderen Leuten davon berichten?

  1. Die besten Orte sind die Newsgroup comp.protocols.smb und die verschiedenen Samba-Mailing-Listen.

vorherige SeiteInhaltsverzeichnisStichwortverzeichnisnächste Seite