PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Suche Winbind-User Script



_ARulez_
17.05.05, 11:24
Hallo zusammen ,

ich suche im Moment ein Script das die Winbind-User nach ihrer Windows-Active-Direktory-Gruppen filtert.

Dieses Script benötige ich das ich diese User nach Gruppen filteren kann und sie dann per ">>" an die SquidGuard Userlisten anhänge.


Wärer echt Dankbar wenn mir jemand helfen könnte !! :D



greets _ARulez_ aka L-user :rolleyes:

emba
18.05.05, 07:46
welches idmap backend verwendest du?

wie genau willst du filtern?

etwa so:
wenn user in gruppeA dann hänge ihn an squidguard dran?

greez

_ARulez_
18.05.05, 12:02
Sers

Danke für die schnelle Antwort emba. ;)

Das ganze soll so ablaufen.

1.
Es soll ein Script existieren das die Windows-Domänen-User nach ihrer Gruppenzugehörichkeit anzeigt.
Oder kann man das mit den idmap machen ? (Was meinst du mit ID-Map ?)

2.
Die Gruppen-gefilterten-User müssen jetzt nach Gruppenangehörichkeit in die jeweiligen SquidGuard Userlisten "gesteckt" werden. (>>)

3.
So muss der Admin des WinPDC nur noch die Benutzer in den Windows Gruppen hin und her schieben um die HTTP-Zugriffsrechte zu verändern

4.
So muss man die Benutzerlisten nicht mehr auf dem Linux System Pflegen.
(Das will der Win Admin nicht !, der bin nicht ich)

5.
Danach soll der Squid noch sanft neustarten (squid reconfigure, denke ich)

6.
Es soll mit einem Script und einem Cronjob jede minute abgefragt werden ob sich was in den Windows Gruppen geändert hat.

7.
Eigentlich benötige ich nur das unter 1. erwähnte script denn rest hoffe ich selber machen zu können.

Besten Dank im vorraus. :D



greets Andreas ;)

emba
18.05.05, 12:51
ist der samba server ein domain controller oder nur member in einer (windows-) domäne? woher beziehst du deine nutzer? mittels nss_winbind oder aus ldap oder ... ?

wbinfo -u zeigt dir eine liste von nutzern in der domäne (incl. trusted) an
wbinfo -r zeigt dir zu einem nutzer die gruppen (gid)

wenn du nicht idmap_rid sondern ldap als idmap backend nutzt, kannst du alles mit getent passwd machen

greez

_ARulez_
18.05.05, 17:29
Sers

Der Samba ist mittels "join ads" als Member in die ads-Domäne eingetretten. Ich benutze kein ldap nur nss_winbind.so.2. und pam_winbind.so.

Sorry aber ich verstehe nicht ganz wie das funktionieren soll woher weis jetzt winbind welcher user in welcher gruppe ist. [Das ist der knackpunkt]

Ich brauche die User aufgelistet nach ihren Gruppen.

z.B

Die user der globalen gruppe apfel -> userlist /etc/squid/user/apfel

Die user der globalen gruppe birne -> userlist /etc/squid/user/birne
...

Squidguard.conf
--------------------------------------------------------------------------
src birne {
userlist /etc/squid/user/birne
}

dest porn{
domainlist bla bla bla
}

ACL {
BIRNE {
PASS !porn all
}
}
--------------------------------------------------------------------------
wenn jetzt ein user andere rechte bekommen soll muss man den user in der userliste verschieben.

dieser prozess soll jetzt mit hilfe des scripts (das die user nach ihren gruppen anzeigt) und ein bischen shell programmierung automatisch ablaufen.

kann das auch mit "wbinfo -u" , "wbinfo -r" und "grep" über die gid gemacht werden ?

greets _ARulez_

emba
19.05.05, 10:47
ich hoffe, wir reden nicht aneinander vorbei :)

angenommen user1 ist in apfel und birne, user2 nur in birne

alle nutzer aus apfel sollen nun in apfel.squid und alle aus birne nun in birne.squid

getent group apfel -> gid of apfel 12345
getent group birne -> gid of birne 12346

wbinfo -u >list_of_users



for NUTZER in `cat list_of_users`;do
wbinfo -r $NUTZER|grep 12345
if [ $? -eq 0 ];then echo $NUTZER >>apfel.squid
fi

wbinfo -r $NUTZER|grep 12346
if [ $? -eq 0 ];then echo $NUTZER >>birne.squid
fi
done


greez

_ARulez_
19.05.05, 11:29
Hallo emba

Danke für deine Antwort.

Ich denke du hast das Problem erkannt (hoffe ich).

Das Script von dir (Beispiel) sieht gar nicht schlecht aus , hätte nicht gedacht das das so "einfach" ist.

Trotsdem habe ich noch ein paar Fragen: :eek:

1.
Was heist das in dem if block.


[ $? -eq 0 ]


2.
Das mit dem getend funktioniert nur mit ldap oder ?

3.
Müsste das nicht so aussehen ???


wbinfo -u >list_of_users

for NUTZER in `cat list_of_users`;do

wbinfo -r $NUTZER|grep 12345
if [gid == 12345 ];then echo $NUTZER >>apfel.squid
fi

wbinfo -r $NUTZER|grep 12346
if [ gid == 12346 ];then echo $NUTZER >>birne.squid
fi
done


Vieleicht bedeutet das ( [ $? -eq 0 ]) ja genau das was ich meine : :D

[ $? -eq 0 ] == [gid == 12345]

greetz _ARulez_ :rolleyes:

emba
19.05.05, 11:41
Was heist das in dem if block.
er prüft, ob der errorlevel von grep 0 ist - 0 heißt bei grep, dass er etwas gefunden hat (hier die gruppe)


Das mit dem getend funktioniert nur mit ldap oder ?
nein, es funktioniert auch mit winbind
wenn du ldap als idmap backend für winbind nutzt geht "getent group", wenn du idmap_rid nutzt geht nur "getent group <gruppenname>"

teste es, es muss funktionieren für unser script
voraussetzung dafür ist, dass winbind die nutzer in der domäne "mappen" darf (enum users/groups = yes in smb.conf -> bitte manual lesen!!!)


if [gid == 12345 ]
wird nie true werden, denn 12345 ist nicht == gid
wenn dann müsstest du gid als variable mit entsprechenden werten deklarieren - für den fall hier völlig überflüssig

greez

_ARulez_
19.05.05, 12:01
nein, es funktioniert auch mit winbind
wenn du ldap als idmap backend für winbind nutzt geht "getent group", wenn du idmap_rid nutzt geht nur "getent group <gruppenname>"


Wie kann ich idmap als backend nutzen ?

so sehen meine Winbind Parameter in der smb.conf aus:


winbind separator = +
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
winbind use default domain = yes

wobei der seperator bei security=ads glaube ich überflüssig ist.

So wie es aussiegt benutze ich idmap unbewust schon. (oder)

Sorry aber im Moment sollte ich "eigentlich" was anderes tun , ich kann das Script erst in ca 2-Wochen Testen.

PS: Das mit "if [gid == 12345] war nur Symbolisch gemeint ! , das müste glaube ich über eine variable abgewickelt werden.


Aber Danke für deine Hilfe wenn ich es ausprobiert habe melde ich mein erfolg.(oder !erfolg)

greetz _ARulez_ :rolleyes:

emba
20.05.05, 12:38
wobei der seperator bei security=ads glaube ich überflüssig ist.
warum sollte er das?


Wie kann ich idmap als backend nutzen ?
idmap backend = ...


So wie es aussiegt benutze ich idmap unbewust schon. (oder)
wenn nicht spezifiziert, dann wird das default backend (tdb) genutzt

greez