Problem mit Win32::NetAdmin::GroupIsMember

Problem mit Win32::NetAdmin::GroupIsMember

am 30.01.2007 16:12:23 von Thorsten Baumeister

Hallo Zielgruppe,
mit dem Befehl GroupIsMember versuche ich in einer Win2003-Domänen-Umgebung
im Mixed Mode auszulesen, ob der angemeldete Win-Benutzer Mitglied einer
bestimmten globalen Gruppe ist.
Das Ganze funktioniert so lange einwandfrei, wie der Benutzer direkt der
Gruppe zugeordnet ist. Wenn der Benutzer allerdings Mitglied einer anderen
Gruppe ist und diese Gruppe wiederum Mitglied der Gruppe ist, auf die ich
prüfe, wird die Mitgliedschaft von GroupIsMember nicht mehr erkannt.
Also:
Benutzer ist Mitglied von Gruppe A -> Wird erkannt
Benutzer ist Mitglied von Gruppe B und Gruppe B ist Mitglied von A ->
angeblich ist der Benutzer nicht Mitglied von A

Habt Ihr einen Tipp für mich?

Gruß, Thorsten.

Re: Problem mit Win32::NetAdmin::GroupIsMember

am 31.01.2007 13:46:21 von Thomas Kratz

Thorsten Baumeister wrote:
> Hallo Zielgruppe,
> mit dem Befehl GroupIsMember versuche ich in einer Win2003-Domänen-Umgebung
> im Mixed Mode auszulesen, ob der angemeldete Win-Benutzer Mitglied einer
> bestimmten globalen Gruppe ist.
> Das Ganze funktioniert so lange einwandfrei, wie der Benutzer direkt der
> Gruppe zugeordnet ist. Wenn der Benutzer allerdings Mitglied einer anderen
> Gruppe ist und diese Gruppe wiederum Mitglied der Gruppe ist, auf die ich
> prüfe, wird die Mitgliedschaft von GroupIsMember nicht mehr erkannt.
> Also:
> Benutzer ist Mitglied von Gruppe A -> Wird erkannt
> Benutzer ist Mitglied von Gruppe B und Gruppe B ist Mitglied von A ->
> angeblich ist der Benutzer nicht Mitglied von A
>
> Habt Ihr einen Tipp für mich?

Win32::NetAdmin benutzt die alte LanManager API. Diese kennt keine
Gruppen als Gruppenmitglieder. Lustigerweise kann selbst die neue
ADSI-API das nicht. Wenigstens bekommst Du die Gruppen aber als
Memebers. Du musst dich selbst rekursiv durch die Gruppen hangeln.

Wenn Du magst kannst du ein von mir geschriebenes Wrappermodul für ADSI
benutzen, dass ich schon mal nach comp.lang.perl.misc gepostet habe.

http://tinyurl.com/2hna2q

Die Funktion heisst ADSIGetGroupMembersRecursive.

Mit ein Bischen stöbern im Modul kannst Du Dir die wesentlichen
Eigenschaften der API zusammenreimen. Für den Rest brauchst Du die ADSI
Doku von M$.

Gruß
Thomas

--
$/=$,,$_=,s,(.*),$1,see;__END__
s,^(.*\043),,mg,@_=map{[split'']}split;{#>J~.>_an~>>e~...... >r~
$_=$_[$%][$"];y,<~>^,-++-,?{$/=--$|?'"':#..u.t.^.o.P.r.>ha~.e..
'%',s,(.),\$$/$1=1,,$;=$_}:/\w/?{y,_, ,,#..>s^~ht<._..._..c....
print}:y,.,,||last,,,,,,$_=$;;eval,redo}#.....>.e.r^.>l^..>k ^.-

Re: Problem mit Win32::NetAdmin::GroupIsMember

am 01.02.2007 16:42:05 von Thorsten Baumeister

Hallo Thomas,

vielen Dank für Deine Antwort und den Link. Ich werde mir mal Dein Modul
unters Kopfkissen legen und versuchen einen Überblick zu bekommen.

Eigentlich hätte ich auch darauf kommen können, dass es nicht "mal eben"
geht...

Gruß,

Thorsten.

"Thomas Kratz" schrieb im Newsbeitrag
news:45c08f9c$0$4728$bb690d87@news.main-rheiner.de...
> Thorsten Baumeister wrote:
>> Hallo Zielgruppe,
>> mit dem Befehl GroupIsMember versuche ich in einer
>> Win2003-Domänen-Umgebung im Mixed Mode auszulesen, ob der angemeldete
>> Win-Benutzer Mitglied einer bestimmten globalen Gruppe ist.
>> Das Ganze funktioniert so lange einwandfrei, wie der Benutzer direkt der
>> Gruppe zugeordnet ist. Wenn der Benutzer allerdings Mitglied einer
>> anderen Gruppe ist und diese Gruppe wiederum Mitglied der Gruppe ist, auf
>> die ich prüfe, wird die Mitgliedschaft von GroupIsMember nicht mehr
>> erkannt.
>> Also:
>> Benutzer ist Mitglied von Gruppe A -> Wird erkannt
>> Benutzer ist Mitglied von Gruppe B und Gruppe B ist Mitglied von A ->
>> angeblich ist der Benutzer nicht Mitglied von A
>>
>> Habt Ihr einen Tipp für mich?
>
> Win32::NetAdmin benutzt die alte LanManager API. Diese kennt keine Gruppen
> als Gruppenmitglieder. Lustigerweise kann selbst die neue ADSI-API das
> nicht. Wenigstens bekommst Du die Gruppen aber als Memebers. Du musst dich
> selbst rekursiv durch die Gruppen hangeln.
>
> Wenn Du magst kannst du ein von mir geschriebenes Wrappermodul für ADSI
> benutzen, dass ich schon mal nach comp.lang.perl.misc gepostet habe.
>
> http://tinyurl.com/2hna2q
>
> Die Funktion heisst ADSIGetGroupMembersRecursive.
>
> Mit ein Bischen stöbern im Modul kannst Du Dir die wesentlichen
> Eigenschaften der API zusammenreimen. Für den Rest brauchst Du die ADSI
> Doku von M$.
>
> Gruß
> Thomas
>
> --
> $/=$,,$_=,s,(.*),$1,see;__END__
> s,^(.*\043),,mg,@_=map{[split'']}split;{#>J~.>_an~>>e~...... >r~
> $_=$_[$%][$"];y,<~>^,-++-,?{$/=--$|?'"':#..u.t.^.o.P.r.>ha~.e..
> '%',s,(.),\$$/$1=1,,$;=$_}:/\w/?{y,_, ,,#..>s^~ht<._..._..c....
> print}:y,.,,||last,,,,,,$_=$;;eval,redo}#.....>.e.r^.>l^..>k ^.-