Logonskripte mit kix

Aus Linupedia.org
Wechseln zu: Navigation, Suche

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)