Using Samba

Using Samba

Robert Eckstein, David Collier-Brown, Peter Kelly
1st Edition November 1999
1-56592-449-5, Order Number: 4495
416 pages, $34.95

Buy the hardcopy

Inhaltsverzeichnis


Previous: 6.5 Windows Domains Kapitel 6
User, Security, und Domains
Next: 7. Drucken und Namensauflösung
 

6.6 Logon Scripts

Samba unterstützt die Ausführung von Windows Logon Scripts. Das sind .BAT oder .CMD-Dateien, die auf dem Client ausgeführt werden, wenn ein User bei einer Windows-Domäne einloggt. Beachte, dass diese Scripts auf der Unix-Seite gespeichert sind, aber über das Netzwerk auf die Clientseite transportiert und ausgeführt werden, sobald ein User einloggt. Diese Scripts sind unschätzbar für das dynamische Einrichten von Netzwerk-Konfigurationen für User, wenn sie einloggen. Der Nachteil ist, dass sie die Windows Netzwerk-Konfigurationsbefehle verwenden müssen, weil sie unter Windows laufen.

Wenn du gerne mehr über NETZ-Kommandos wissen willst, empfehlen wir die folgenden O'Reilly-Handbücher: Windows NT in a Nutshell, Windows 95 in a Nutshell und Windows 98 in a Nutshell.

Du kannst Samba mit der Option logon script anweisen, ein Logon Script zu benutzen, wie folgt:

[global]
	domain logons = yes
	security = user
	workgroup = SIMPLE

	os level = 34
	local master = yes
	preferred master = yes
	domain master = yes
	logon script = %U.bat

[netlogon]
	comment = The domain logon service
	path = /export/samba/logon
	public = no
	writeable = no
	browsable = no

Beachte dass dieses Beispiel die Variable %U verwendet, die das Script bezüglich des Users individualisiert, der gerade einloggt. Es ist üblich, Logon-Scripts basierend auf dem User oder dem Maschinennamen anzufertigen, der auf der Domäne einloggt. Diese Scripts können dann verwendet werden, um individuelle Einstellungen für User oder Clients einzurichten.

Jedes Logon Script sollte auf Basis der Share [netlogon] gespeichert werden. Wenn z.B. die Basis der [netlogon]-Share /export/samba/logon ist und das Logon Script jeff.bat heißt, sollte die Datei auf /export/samba/logon/jeff.bat liegen. Wenn ein User auf einer Domäne einloggt, die ein Startup-Script enthält, wird er oder sie einen kleinen Dialog bemerken, der sie informiert, dass das Script sowie irgendeine vom Script generierte Ausgabe in einer MS-DOS-ähnlichen Box ausgeführt wird.

Eine Warnung: Weil diese Scripts von Windows geladen und auf der Windows-Seite ausgeführt werden, müssen sie DOS-formatierte Wagenrücklauf-/Zeilenvorschub-Zeichen enthalten anstatt Unix Wagenrücklauf-Zeichen. Es ist am besten, einen DOS- oder Windows-Editor zu verwenden, um sie zu schreiben.

Hier ist ein Beispiel eines Logon Scripts, das die gegenwärtige Zeit setzt, um sie mit der des Sambaservers abzustimmen, und zwei Netzlaufwerke, h und i, auf individuelle Shares auf dem Server abbildet:

#  Reset the current time to that shown by the server.
#  We must have the "time server = yes" option in the
#  smb.conf for this to work.

echo Setting Current Time...
net time \\hydra /set /yes

#  Here we map network drives to shares on the Samba
#  server
echo Mapping Network Drives to Samba Server Hydra...
net use h: \\hydra\data
net use i: \\hydra\network

6.6.1 Roaming profiles

In Windows 95 und NT kann jeder User sein oder ihr eigenes Profil haben. Ein Profil bündelt Information folgendermaßen: das Erscheinungsbild des Desktops eines Users, die in den Startmenüs erscheinenden Applikationen, der Hintergrund und verschiedene andere Dinge. Wenn das Profil auf einer lokalen Platte gespeichert ist, wird es local profile genannt, da es beschreibt, wie eine User-Umgebung auf einer Maschine ausschaut. Wenn das Profil andererseits auf einem Server gespeichert ist, kann der User das gleiche Profil auf jede Client-Maschine herunterladen, die mit dem Server verbunden ist. Das Letztere wird Roaming Profile genannt, weil der User von Maschine zu Maschine umherwandern und dennoch das gleiche Profil benützen kann. Das macht es besonders praktisch, wenn jemand eines Tages von seinem oder ihrem Tisch und als Nächstes von einem Laptop im Außendienst einloggen könnte. Figur 6.6 illustriert lokale und Roaming Profile.

Figur 6.6: Lokale Profile gegenüber Roaming Profilen

Figur 6.6

Samba bietet Roaming Profile, wenn es für Domain-Logons konfiguriert wird und du logon path zum Home-Verzeichnis des Users und logon home zu einem Unterverzeichnis des Home-Verzeichnisses des Users für das Speichern von Profilen einrichtest. Diese Optionen werden typischerweise mit einer der User-Variablen verwendet, wie man in diesem Beipiel sieht:

[global]
        domain logons = yes
        security = user
	workgroup = SIMPLE
	os level = 34
	local master = yes
	preferred master = yes
	domain master = yes

	logon home = \\%N\%U
	logon path = \\%N\%U\profile 

Samba-Versionen vor 2.0.6 erlaubten Win9X-Maschinen, Profile in separaten Shares zu speichern, aber das hinderte die Clients, ihren logon path zu setzen, also konnten sie ihre Home-Verzeichnisse gemountet bekommen, indem sie "net use /home" eingaben. Das wurde in 2.0.6 korrigiert.

Sobald ein User anfänglich einloggt, erzeugt der Windows-Client eine Datei user.dat oder ntuser.dat  - abhängig davon, auf welchem Betriebssystem der Client läuft. Dann lädt der Client die Inhalte des Desktops, das Startmenü, die Netzwerkumgebung und die Programmordner in einzelnen Ordnern im Verzeichnis. Wenn der User später einloggt, werden diese Inhalte vom Server heruntergeladen und auf der Client-Maschine aktiviert, mit welcher der User einloggt. Wenn er oder sie ausloggt, werden diese Inhalte auf den Server zurückgesandt, bis sich der User das nächste Mal verbindet. Wenn du dir den Verzeichnisinhalt eines Profilordners anschaust, wirst du Folgendes sehen:

# ls -al 

total 321
drwxrwxr-x   9 root  simple    Jul 21 20:44 .
drwxrwxr-x   4 root  simple    Jul 22 14:32 ..
drwxrwx---   3 fred  develope  Jul 12 07:15 Application Data
drwxrwx---   3 fred  develope  Jul 12 07:15 Start Menu
drwxrwx---   2 fred  develope  Jul 12 07:15 cookies
drwxrwx---   2 fred  develope  Jul 12 07:15 desktop
drwxrwx---   7 fred  develope  Jul 12 07:15 history
drwxrwx---   2 fred  develope  Jul 12 07:15 nethood
drwxrwx---   2 fred  develope  Jul 19 21:05 recent
-rw-------   1 fred  develope  Jul 21 21:59 user.dat

Die user.dat-Dateien sind binäre Konfigurationsdateien und werden automatisch von Windows erzeugt. Sie können mit dem Profil-Editor auf einem Windows-Client editiert werden, aber sie können ein bisschen schwierig zu verstehen sein. Samba unterstützt sie korrekt für alle Clients aufwärts bis NT 5.0 Beta, aber sie sind noch relativ neu.

Hinweise und HOWTOs für die Behandlung von Logon-Scripts stehen im Samba-Dokumentationsbaum zur Verfügung, und zwar in docs/textdocs/DOMAIN.txt und docs/textdocs/PROFILES.txt.

6.6.2 Mandatory profiles

User können auch mandatory profiles haben, das sind Roaming-Profile, die sie nicht verändern können. Wenn bei einem Mandatory-Profil z.B. ein User am Dienstag einen Befehl zum Startmenü hinzufügt, wird dieser nicht mehr da sein, wenn er oder sie am Mittwoch wieder einloggt. Das Mandatory-Profil ist einfach eine user.dat-Datei, die in user.man umbenannt wurde und auf dem Unix-Server read-only gemacht wurde. Es enthält normalerweise Einstellungen, bei denen der Administrator sicherstellen will, dass sie die User immer ausführen. Wenn z.B. ein Administrator eine fixe User-Konfiguration erstellen will, kann er oder sie Folgendes tun:

  1. Erstellen des Schreib/Lese-Verzeichnisses auf dem Sambaserver.

  2. Setzen der Option logon path in der Datei smb.conf, um auf dieses Verzeichnis zu zeigen.

  3. Einloggen als User von Windows 95/98, damit der Client das Verzeichnis bevölkert.

  4. Umbenennen der erhaltenen user.dat in user.man.

  5. Das Verzeichnis und seine Inhalte read only stellen.

Mandatory-Profile sind ziemlich unüblich. Roaming-Profile dagegen gehören zu den beliebteren Features von Windows, die Samba unterstützen kann.

6.6.3 Logon Script Optionen

Tabelle 6.10 fasst die gewöhnlich im Zusammenhang mit Windows-Domain Logon Scripts verwendeten Optionen zusammen.


Tabelle 6.10: Logon Script Optionen

Option

Parameter

Funktion

Vorgabe

Bereich

logon script

string (DOS-Pfad)

Name der DOS/NT-Batchdatei

Keine

Global

logon path

string (UNC-Server und Share-Name)

Standort des Roaming Profils für User

\\%N\%U\profile

Global

logon drive

string (Laufwerksbuchstabe)

Bezeichnet das Laufwerk zum Einloggen für ein Home-Verzeichnis (nur NT)

Z:

Global

logon home

string (UNC-Server und Share-Name)

Bezeichnet einen Standort für Home-Verzeichnisse für Clients, die auf der Domäne einloggen

\\%N\%U

Global

6.6.3.1 logon script

Diese Option bezeichnet eine Windows .BAT oder .CMD-Datei, bei der die Zeilen mit Wagenrücklauf/Zeilenvorschub enden und die auf dem Client ausgeführt wird, nachdem ein User auf der Domain eingeloggt hat. Jedes Logon Script sollte auf der Basis einer Share namens [netlogin] gespeichert werden (siehe den Abschnitt 6.5.1 für Details.) Diese Option verwendet häufig die Variablen %U oder %m (User- oder NetBIOS-Name), um auf ein individuelles Script zu zeigen. Zum Beispiel:

logon script = %U.bat

führt ein auf den Usernamen gestütztes Script aus, das seine Basis in der [netlogin] Share hat. Wenn der einloggende User fred heißt und der Pfad der Share [netlogin] auf das Verzeichnis /export/samba/netlogin zeigt, sollte das Script /export/samba/netlogin/fred.bat sein. Weil diese Scripts zu den Clients heruntergeladen und auf der Windows-Seite ausgeführt werden, müssen sie DOS-formatierte Wagenrücklauf/Zeilenvorschub-Zeichen anstatt der Unix-Wagenrücklauf-Markierungen enthalten.

6.6.3.2 logon path

Diese Option stellt einen Standort für Roaming Profile zur Verfügung. Wenn der User einloggt, wird ein Roaming Profil vom Server auf den Client heruntergeladen und für den einloggenden User aktiviert. Wenn der User ausloggt, werden diese Inhalte zurück auf den Server geladen, bis der User sich das nächste Mal anmeldet.

Es ist oft sicherer, eine separate Share ausschließlich zum Aufbewahren der User-Profile zu erstellen:

logon path = \\hydra\profile\%U

Für mehr Information über diese Option, siehe den Abschnitt 6.6, Logon Scripts, weiter oben in diesem Kapitel.

6.6.3.3 logon drive

Diese Option bezeichnet den Laufwerksbuchstaben auf einem NT-Client, auf den das mit der Option logon home bestimmte Home-Verzeichnis abgebildet wird. Beachte, dass diese Option nur mit Windows NT-Clients arbeitet. Ein Beispiel:

logon home = I:

Du solltest immer Laufwerksbuchstaben verwenden, die nicht mit fixen Laufwerken auf der Client-Maschine im Widerspruch stehen. Die Vorgabe ist Z:, eine gute Wahl, weil es so weit wie möglich von A:, C: und D: entfernt ist.

6.6.3.4 logon home

Diese Option bezeichnet den Standort des Home-Verzeichnisses eines Users für die Verwendung durch die DOS NET-Befehle. Um z.B. ein Home-Verzeichnis als eine Share auf einem Sambaserver festzulegen, verwende Folgendes:

logon home = \\hydra\%U

Beachte, dass dies gut mit dem Service [homes] arbeitet, obwohl du jedes Verzeichnis angeben kannst, das du willst. Home-Verzeichnisse können mit einem Logon Script abgebildet werden, bei dem folgendes Kommando benützt wird:

NET USE I: /HOME

Außerdem kannst du das User-Umgebungsprofil unter User-Eigenschaften im Windows NT-User-Manager verwenden, um zu bestätigen, dass das Home-Verzeichnis automatisch eingerichtet wurde.

6.6.4 Andere Verbindungs-Scripts

Nachdem ein User eine erfolgreiche Verbindung zu irgendeiner Share hergestellt hat, willst du vielleicht, dass der Server ein Programm bei sich ausführt, um die Share für die Benützung vorzubereiten. Samba erlaubt das Ausführen von Scripts, bevor und nachdem jemand sich mit einer Share verbindet. Du musst nicht die Windows-Domänen benützen, um die Vorteile der Optionen zu genießen. Tabelle 6.11 stellt einige der Konfigurations-Optionen vor, die für das Einrichten von Usern vorgesehen sind.


Tabelle 6.11: Verbindungs-Script-Optionen

Option

Parameter

Funktion

Vorgabe

Bereich

root preexec

string (Unix-Befehl)

Setzt einen Befehl, der mit root-Rechten ausgeführt werden soll, bevor die Verbindung zur Share hergestellt wird.

Keine

Share

preexec (exec)

string (Unix-Befehl)

Setzt einen Unix-Befehl, der mit User-Rechten ausgeführt werden soll, bevor die Verbindung zur Share hergestellt wird.

Keine

Share

postexec

string (Unix-Befehl)

Setzt einen Unix-Befehl, der mit User-Rechten ausgeführt werden soll, nachdem die Verbindung zur Share gelöst wurde.

Keine

Share

root postexec

string (Unix-Befehl)

Setzt einen Unix-Befehl, der mit root-Rechten ausgeführt werden soll, nachdem die Verbindung zur Share gelöst wurde.

Keine

Share

6.6.4.1 root preexec

Die erste Form des Logon-Befehls heißt root preexec. Diese Option bezeichnet einen Unix-Befehl wie seinen Wert, der wie vom User Root abläuft, bevor irgendeine Verbindung zu einer Share fertig ist. Du solltest diese Option besonders für die Durchführung von Aktionen verwenden, die Root-Rechte erfordern. Ein Beispiel: root preexec kann benützt werden, um CD-ROMs für eine Share zu mounten, die sie den Clients zur Verfügung stellt, oder notwendige Verzeichnisse zu erzeugen. Wenn keine Option root preexec angeführt wird, gibt es keine voreingestellte Aktion. Hier ist ein Beispiel, wie du den Befehl verwenden kannst, um eine CD-ROM zu mounten:

[homes]
	browseable = no
	writeable = yes
	root preexec = /etc/mount /dev/cdrom2

Merk dir, dass diese Befehle mit Root-Rechten ablaufen. Aus Sorge für die Sicherheit sollten darum User niemals das Ziel des Befehls root preexec modifizieren dürfen.

6.6.4.2 preexec

Die nächste Option, die vor dem Einloggen abläuft, ist die Option preexec, manchmal nur exec genannt. Das ist ein gewöhnlicher, unprivilegierter Befehl, der unter Samba von dem User ausgeführt wird, den die Variable %u bezeichnet. Ein üblicher Gebrauch dieser Option ist z.B. die Durchführung des Loggings wie folgt:

[homes]
preexec = echo "%u connected to %S from %m (%I)\" >>/tmp/.log 

Sei gewarnt, dass jede Information, die der Befehl zur Standard-Ausgabe sendet, vom User nicht gesehen wird, sondern stattdessen verworfen wird. Wenn du die Absicht hast, ein preexec-Script zu verwenden, solltest du dafür sorgen, dass es korrekt abläuft, bevor es Samba aufzurufen hat.

6.6.4.3 postexec

Sobald der User die Verbindung zur Share löst, läuft das Kommando mit postexec als dem User auf dem Sambaserver, um irgendetwas Notwendiges zu löschen. Diese Option is notwendigerweise dieselbe wie die Option preexec. Noch einmal: vergiss nicht, dass der Befehl unter dem User ausgeführt wird, den die Variable %u darstellt, und dass jede Information ignoriert wird, die an die Standard-Ausgabe gesendet wird.

6.6.4.4 root postexec

Der Option postexec folgend, wird der Befehl root postexec ausgeführt, wenn einer festgelegt wurde. Noch einmal: diese Option bezeichnet einen Unix-Befehl als seinen Wert, der unter dem User Root ausgeführt wird, bevor die Verbindung zur Share gelöst wird. Du solltest diese Option ausdrücklich zur Durchführung von Aktionen verwenden, die Root-Rechte erfordern.

6.6.5 Arbeiten mit NIS und NFS

Schließlich hat Samba die Fähigkeit, mit NIS und NIS+ zu arbeiten. Gibt es mehr als einen Server und auf jedem läuft Samba, kann es wünschenswert sein, den SMB-Client an den Server angeschlossen zu haben, dessen Festplatten gerade das Home-Verzeichnis des Users beherbergen. Es ist normalerweise keine gute Idee, Dateien über das Netzwerk zu befördern, einmal via NFS zu einem Sambaserver, nur damit sie über das Netzwerk befördert werden, noch einmal zum Client via SMB. (Einerseits ist es langsam - ungefähr 30 Prozent der nomalen Samba-Geschwindigkeit). Daher gibt es ein Optionen-Paar, um Samba zu sagen, dass NIS den Namen des richtigen Servers kennt, und zu zeigen, in welcher NIS-Map die Informationen zu Hause sind.

Tabelle 6.12 stellt einige der anderen Konfigurations-Optionen vor, die ausdrücklich zum Einrichten von Usern dienen.


Tabelle 6.12: NIS Optionen

Option

Parameter

Funktion

Vorgabe

Bereich

nis homedir

boolean

Wenn yes, verwende NIS anstatt /etc/passwd, um den Pfad des Home-Verzeichnisses eines Users nachzuschlagen

no

Global

homedir map

string (NIS Map-Name)

Setzt die NIS-Map, um sie zum Nachschlagen des Home-Verzeichnisses eines Users zu verwenden

Keine

Global

6.6.5.1 nis homedir und homedir map

Die Optionen nis homedir und homedir map gehören für Sambaserver auf Netzwerk-Schauplätzen, wo Unix Home-Verzeichnisse vorgesehen sind, NFS, den Automounter, und NIS (Gelbe Seiten) zu verwenden.

Die Option nis homedir zeigt, dass der Home-Verzeichnis-Server für die User in NIS gesucht werden muss. Die Option homedir map sagt Samba, in was für eine NIS-Map der Server schauen muss, der das Home-Verzeichnis des Users besitzt. Der Server muss ein Sambaserver sein, so kann der Client eine SMB-Verbindung zu ihm herstellen, und die anderen Sambaserver müssen NIS installiert haben, damit sie nachschauen können.

Wenn z.B. User joe eine Share namens [joe] verlangt und die Option nis homedir ist auf yes gesetzt, schaut Samba in die von homedir map festgelegte Datei nach einem Home-Verzeichnis für joe. Wenn es eines findet, meldet Samba dem Client den assoziierten Maschinennamen. Der Client versucht dann, sich bei dieser Maschine anzumelden und die Share von hier zu bekommen. Die Erlaubnis für die NIS-Suche schaut wie Folgendes aus:

[globals]
	nis homedir = yes
	homedir map = amd.map

Previous: 6.5 Windows Domains Next: 7. Drucken und Namensauflösung
6.5 Windows Domains Buch-Index (engl.) 7. Drucken und Namensauflösung

O'Reilly Home | O'Reilly Bookstores | How to Order | O'Reilly Contacts
International | About O'Reilly | Affiliated Companies

© 1999, O'Reilly & Associates, Inc.