Samba – login skripty

Home / Uncategorized / Samba – login skripty

Modelová situace: máme sambu nastavenou jako PDC + login skripty pro každého uživatele. Proč to nezkusit jednodušeji. Přeci jenom starat se o řekněme 50 login skriptů a více je nesystémové a hlavně časově náročné…. Ukažeme si jak použít jeden skript pro všechny uživatele, kteří jsou rozdělení do skupin a dále login skript složený s více skriptů také podle skupin, pro složitejší úlohy.

 

Co potřebujeme:

  1. nakonfigurovanou sambu jako PDC, rozdělení uživatelé do skupin, stanice s Win2000 a vyšší
  2. ze stránek M$ si stáhneme program ifmember http://www.microsoft.com/downloads/details.aspx?FamilyID=07c2f6d7-815e-4fa0-9043-4e4635ccd417&displaylang=en
  3. nakopírovat ifmember.exe do netlogon adresáře samby, nakonfigurovat sambu a upravit login skript

Předtím ještě než začneme něco dále podnikat, zkontrolujeme si mapovaní windowsovských a unixových skupin: 

net groupmap list | sort

Nám vypíše mapování win/lin skupin. Pokud máme všude něco jako "skupina -> -1" znamená to že není namapovaná žádna skupina a je nutné namapovat unixové skupiny na windowsové, které budeme používat v login skriptu, takto:

net groupmap add ntgrout="win_skupina" unixgroup=lin_skupina

Konkretné např.: 

net groupmap add ntgrout="Domain Users" unixgroup=users

net groupmap add ntgrout="Domain Admins" unixgroup=dmadmins

První nám namapuje unixovou skupinu users na win skupinu Domain Users, druhý případ je více než jasný.

 

Úprava samby: 

Zeditujeme "smb.conf" a nahradíme "login script = %U.bat" tímto: "login script = netlogon.bat".

 

Ukázka jednoduchého login skriptu (netlogon.bat):

———-

@echo off 

REM ** Synchronizace casu s PDC **

echo Setting Current Time
net time \\sambapdc /set /yes

REM ** Mapovani disku podle skupin **

\\athena\netlogon\ifmember "skupina_1"
if not errorlevel 1 goto A
net use G: \\sambapdc\skupina_1
goto QUIT 

:A
\\athena\netlogon\ifmember "skupina_2"
if not errorlevel 1 goto B
net use G: \\sambapdc\skupina_2
goto QUIT

:B
\\athena\netlogon\ifmember "skupina_3"
if not errorlevel 1 goto C
net use G: \\sambapdc\skupina_3
goto QUIT

:C
\\athena\netlogon\ifmember "skupina_4"
if not errorlevel 1 goto D
net use G: \\sambapdc\skupina_4
goto QUIT

😀
\\athena\netlogon\ifmember "skupina_5"
if not errorlevel 1 goto QUIT
net use G: \\sambapdc\skupina_5

:QUIT

———-

 

Jednoduchý příklad jak jednotlivým skupinám uživatelů se namapují jejich sdílené disky. Login skript lze využít nejen na mapovaní disků, ale třeba i menším upravám na ploše uživatelů (kopírovaní zástupců na plochu sdílených programů), dále pak k instalací programů (silent mode), zde ale vzniká problém s právy aktuálně přihlášeného uživatele. Při vetším počtu příkazů ale začíná být login skript nepřehledný, ale to lze také vyřešit voláním dalších skriptů v hlavním skriptu což si ukážeme hned dále.

Skript můžeme otestovat prostým spuštěním na stanici v cmd než ho nakopírujeme na PDC a koukáme jestli je vše v pořádku.

 

Ukázka složitějšího login skriptu složeného s více skriptů (netlogon.bat):

———-

@echo off 

call %0\..\main.bat

\\athena\netlogon\ifmember "skupina_1"
if not errorlevel 1 goto A
call %0\..\skupina_1.bat
goto QUIT

A:
\\athena\netlogon\ifmember "skupina_2"
if not errorlevel 1 goto B
call %0\..\skupina_2.bat
goto QUIT

:B
\\athena\netlogon\ifmember "skupina_3"
if not errorlevel 1 goto C
call %0\..\skupina_3.bat
goto QUIT

:C
\\athena\netlogon\ifmember "skupina_4"
if not errorlevel 1 goto D
call %0\..\skupina_4.bat
goto QUIT

😀
\\athena\netlogon\ifmember "skupina_5"
if not errorlevel 1 goto QUIT
call %0\..\skupina_5.bat

:QUIT

———-

Ukázka složitějšího login skriptu pokračování (main.bat):

———-

REM ** Synchronizace casu s PDC **

echo Setting Current Time
net time \\sambapdc /set /yes

REM ** Mapovani disku spolecneho pro vsechny uzivatele **

net use X: \\sambapdc\spolecne 

———-

Ukázka složitějšího login skriptu pokračování (skupina_1.bat):

———-

REM ** Skript pro skupinu skupina_1 **

net use G: \\sambapdc\skupina_1

REM ** nakopirujeme vsem uzivatelum ve skupine zastupce ** 

REM ** na plochu na sdileny program **

cd C:\Documents and Settings\%USERNAME%\Plocha\
C:

dir | find "program.lnk" /i
if not errorlevel 1 goto END
copy \\sambapdc\zastupci\program.lnk C:\DOCUME~1\%USERNAME%\Plocha\
:END
 

———-

  

A tak dále si vytvoříme pro každou skupinu baťák, kde bude zapsáno vše potřebné pro tuto skupinu a umístíme je všechny do složky netlogon na PDC. Samozřejmě pokud používáme login skript jen na mapovaní disků na stanicích stačí nám to první řešení, tzn. "vše v jednom souboru", pokud děláme více než jen mapujeme disky šáhneme po druhém řešení s vícero skripty.

Odkazy:

http://www.samba.org

http://www.oreilly.com/catalog/samba/chapter/book/ch06_06.html 

http://www.windowsnetworking.com/kbase/WindowsTips/WindowsNT/AdminTips/Logon/WindowsNTLoginScriptTricksandTips.html 

 

 

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *