Logonskripte mit kix
Autor: stka Hier eine Anleitung zur Verwendung von kix. Mit kix lassen sich Logonscripte für die Benutzeranmeldung unter Samba erstellen. Die Logonscripte können dann in Bereiche unterteilt werden, so dass nur noch ein Logonscript für das ganze Unternehmen benötigt wird. Die Zuordnung der Laufwerke wird dann über Gruppenzugehörigkeiten gelöst. So kann beim Anlegen von neuen Benutzern immer das selbe Logonscript verwendet werden. Leider hat die Sache einen kleinen Haken, das kix-Skript schaut normaler Weise im SAM nach zu welcher Gruppe ein Benutzer gehört und ordnet dann die einzelnen Bereich zu. Da man aber mit Kix auch eigene Funktionen erstellen kann, gibt es eine Lösung für diese Problem. Hier nun ein Lösungsansatz: Als erstes müsst ihr euch eine aktuelle Version von kix besorgen. Die findet ihr hier: http://home.wanadoo.nl/scripting/index-kix-scripts.htm Ihr erstellt eine Freigabe mit dem Freigabenamen "NETLOGON" für die Logonskripte und die kix Dateien. Skripte werden von Windowssystemen bei der Anmeldung immer relativ zu dieser Freigabe gesucht. In das Verzeichnis kopiert ihr die Dateien kix*.exe und alle DLL Dateien von kix. Dann braucht ihr noch zwei Batch-Dateine, eine die dann beim Samba als Logonscript eingetragen wird und die andere in der das eigentliche kix-Skript steht. Hier für beide ein Beispiel:
1. Logonskript: ----------------------------------------------------- net use z: \\SERVER\NETLOGON z: start /WAIT wkix32.exe login.scr c: net use z: /delete -----------------------------------------------------
Die Laufwerksverbindung wird benötigt, da sich kix nicht direkt über ein Netzwerkverbindung starten lässt.
2. Kix-Skript ; ------------------ Löschen aller Verbindungen -------------- ; DEBUG ON use * /DELETE ; --------- Festlegung des Standorts ---------------------- IF ISINGROUP("sch") GOTO SCH ENDIF IF ISINGROUP("ols") GOTO OLS ENDIF ;----------------------- SCH ------------------------------ :SCH use h: "\\SCH01\" + %username% use i: "\\SCH01\doku" use r: "\\SCH01\sch" use t: "\\SCH01\abtsch" IF ISINGROUP("Asap") use j: "\\SCH01\asap" ENDIF IF ISINGROUP("Domainadmins") use u: "\\SCH01\system" use v: "\\OLS01\system" use w: "\\AY010\c $" use x: "\\AY010\d $" GOTO ENDE ENDIF IF ISINGROUP("Personal") use l: "\\SCH08\d01 $" ENDIF IF ISINGROUP("vertrieb") use z: "\\FSI\ds" use y: "\\FSI\bilder" use x: "\\FSI\austausch" ENDIF GOTO ENDE ;----------------------- Ols -------------------------------- :OLS use h: "\\OLS01\" + %username% use r: "\\OLS01\ols" use t: "\\OLS01\abtols" GOTO ENDE :ENDE ;---------------- Funktion zur Ermittelung der Gruppenzugehörigkeit--------------------- ; Test ob ein Benutzer in einer bestimmten Gruppe ist. Dazu muss im Verzeichnis /netlogon ; auf dem Anmeldeserver für jede Gruppe ein Verzeichnis erstellt werden. Das Verzeichnis muss ; genau so heißen wie die Gruppe und mit den folgenden Kommandos müssen die Rechte gesetzt werden: ; chmod 750 ; chown root ; chgrp <name der Gruppe> ; in dem Verzeichnis muss dann eine Datei mit dem Namen "dummy" erzeugt werden die mit folgenden Kommandos ; die richtigen Rechte erhält: ; chmod 644 ; chown root ; chgrp root ; ; Im Verzeichnis netlogon auf dem Anmeldeserver befindet sich ein shell-script "erz-gruppe" das für alle ; als Übergabeparemeter übergebenen Gruppennamen das Verzeichnis mit der Datei und den richtigen Rechten erzeugt. ; Nur der "root" kann dieses Programm ausführen. FUNCTION ISINGROUP( $strGroup) IF EXIST("\\SCH01\NETLOGON\" + $strGroup + "\dummy\") $ISINGROUP = 1 ELSE $ISINGROUP = 0 ENDIF ENDFUNCTION FUNCTION ISINGROUPOLS( $strGroup) IF EXIST("\\OLS01\NETLOGON\" + $strGroup + "\dummy\") $ISINGROUPOLS = 1 ELSE $ISINGROUPOLS = 0 ENDIF ENDFUNCTION -----------------------------------------
Beim anlegen einer Gruppe wird bei mir immer das Skript "erz-gruppe" gestart, diese Skript legt sofort das Verzeichnis und die Datei "dummy" an.
#! /bin/bash # Erzeugt ein Verzeichnis mit dem Namen einer Gruppe die # als Parameter übergeben wird. Dann werden die Rechte gesetzt # und die Datei dummy wird im Verzeichnis erzeugt. #Hier das Skript: # #----------------------------------------------------- if [ $# -eq 0 ] then echo " mindestens ein Gruppenname muss übergeben werden ! " exit 1 fi for i do mkdir /netlogon/$i chmod 750 /netlogon/$i chown root /netlogon/$i chgrp $i /netlogon/$i touch /netlogon/$i/dummy chmod 644 /netlogon/$i/dummy chown root /netlogon/$i/dummy chgrp root /netlogon/$i/dummy done -------------------------------------------------
Wenn sich jetzt ein Benutzer anmeldet, werden immer die Gruppen Bereiche abgearbeitet in denen er mitglied ist.
Viel Spaß damit
Stefan
Eingefügt von --Yehudi 11:50, 19. Aug 2006 (CEST)