Using SambaRobert Eckstein, David Collier-Brown, Peter Kelly1st Edition November 1999 1-56592-449-5, Order Number: 4495 416 pages, $34.95 |
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 = noBeachte 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
undi
, 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\network6.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
Samba bietet Roaming Profile, wenn es für Domain-Logons konfiguriert wird und du
logon path
zum Home-Verzeichnis des Users undlogon 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\profileSamba-Versionen vor 2.0.6 erlaubten Win9X-Maschinen, Profile in separaten Shares zu speichern, aber das hinderte die Clients, ihren
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: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.# 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.datDie 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:
Erstellen des Schreib/Lese-Verzeichnisses auf dem Sambaserver.
Setzen der Option
logon
path
in der Datei smb.conf, um auf dieses Verzeichnis zu zeigen.Einloggen als User von Windows 95/98, damit der Client das Verzeichnis bevölkert.
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.batführt ein auf den Usernamen gestütztes Script aus, das seine Basis in der
[netlogin]
Share hat. Wenn der einloggende Userfred
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\%UFü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\%UBeachte, 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: /HOMEAuß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 Optionroot
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/cdrom2Merk 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 nurexec
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 Optionpreexec
. 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 Befehlroot
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
undhomedir
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 Optionhomedir
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 Optionnis
homedir
ist aufyes
gesetzt, schaut Samba in die vonhomedir
map
festgelegte Datei nach einem Home-Verzeichnis fürjoe
. 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
© 1999, O'Reilly & Associates, Inc.