Zum Inhalt springen

phpLDAPadmin - UIDs Automatisch verteilen


merenda

Empfohlene Beiträge

HI @all,

ich hab in der Config von phpLDAPadmin das man die UIDs für die einzelnen User automatisch vergeben kann. Ich hab da jetzt mal etwas rum getestet aber irgendwie funkt das nicht.

Hat schon jemand erfahrungen damit gemacht bzw. weiß jemand wie das Funktioniert ?

Danke schon mal im voraus für die Hilfe.

Gruß

Merenda

Link zu diesem Kommentar
Auf anderen Seiten teilen

Da gibt's zwei Möglichkeiten:

- die UIDs ermitteln lassen von phpLdapAdmin. Dazu kann man in der Config angeben wo er suchen soll und nimmt dann einfach die nächste freie.

- im LDAP ein Objekt hinterlegen indem die nächste UID drinsteht.

Funktioniert beides wunderbar, ich bevorzuge i.d.R. die letztere Variante. Dafür nehme ich von Samba die Klasse sambaUnixIdPool. Anbei mal die LDIF von mir.


dn: cn=NextFreeUnixId,ou=Auth,dc=Rock,dc=Local

objectClass: inetOrgPerson

objectClass: sambaUnixIdPool

gidNumber: 1000

cn: NextFreeUnixId

sn: NextFreeUnixId

uidNumber: 1020

Link zu diesem Kommentar
Auf anderen Seiten teilen

Da gibt's zwei Möglichkeiten:

- die UIDs ermitteln lassen von phpLdapAdmin. Dazu kann man in der Config angeben wo er suchen soll und nimmt dann einfach die nächste freie.

- im LDAP ein Objekt hinterlegen indem die nächste UID drinsteht.

Funktioniert beides wunderbar, ich bevorzuge i.d.R. die letztere Variante. Dafür nehme ich von Samba die Klasse sambaUnixIdPool. Anbei mal die LDIF von mir.


dn: cn=NextFreeUnixId,ou=Auth,dc=Rock,dc=Local

objectClass: inetOrgPerson

objectClass: sambaUnixIdPool

gidNumber: 1000

cn: NextFreeUnixId

sn: NextFreeUnixId

uidNumber: 1020

Das zweite scheint mir in der Tat besser zu sein, ich hab aber noch ein paar Fragen dazu. Gehe ich recht in der Anahme, dass ich erst das SAMBA-Schema installieren bzw. einfügen muss ?

Kann ich es so einstellen, dass z.B. einen UID-Pool für jede Abteilung bzw. für jedes System habe, zum besseren Verständnis habe ich dir ein Schaubild angehängt. Damit möchte ich bewerkstelligen, dass eine UID, System weit nur einmal vorhaden ist. Ist das so realisierbar ?

Danke schon mal im voraus.

Gruß

Merenda

post-25816-14430447240807_thumb.jpg

Link zu diesem Kommentar
Auf anderen Seiten teilen

Evtl. gibt's auch irgendwo anders so ein ähnliches Schema drin oder man baut sich selbst eins. Bei mir lief bisher auch immer Samba, deswegen war dieses Schema immer bereits integriert. Aber zurück zur Frage: ja, dieses Schema muss inkludiert werden.

Der UID Pool wird nur einmal, global für alle User/Abteilungen eingerichtet. Damit ist dann auch gewährleistet, dass jede UID nur einmal vorkommt.

Die Lösung die Du gerne hättest, dass man an der UID auch die Abteilung erkennt, ist mit phpldapadmin in seiner jetztigen Form nicht direkt realisierbar. Tricksen könnte man, indem man für jede Abteilung eine eigene phpldapadmin-Instanz einrichtet. Und da lassen sich dann auch verschiedene ID-Pools einrichten. Das könnte eine Möglichkeit sein.

Die Frage die noch bleibt ist: Wozu bzw. lohnt der Aufwand überhaupt? Was würde gegen einen zentralen ID-Pool für alle sprechen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ok, also ich hab das schmema inkludiert (wie sich das anhört:D).

Du hast recht, ich werde das erstmal über alle abteilungen machen, das ist auch nicht schlecht, wenn die UIDs dann automatisch vergeben werden muss ich mir ja keine gedanken mehr darüber machen.

Ich hab das jetzt mal ausprobiert aber es funkt leider nicht :(

Was habe ich gemacht:

1. Die config.php des phpLDAPadmin editiert:

$servers[$i]['name'] = 'Another server';

$servers[$i]['host'] = '';

$servers[$i]['base'] = 'dc=example,dc=com';

$servers[$i]['port'] = 389;

$servers[$i]['auth_type'] = 'config';

$servers[$i]['login_dn'] = '';

$servers[$i]['login_pass'] = '';

$servers[$i]['tls'] = false;

$servers[$i]['low_bandwidth'] = false;

$servers[$i]['default_hash'] = 'crypt';

$servers[$i]['login_attr'] = 'dn';

$servers[$i]['login_class'] = '';

$servers[$i]['read_only'] = false;

$servers[$i]['show_create'] = true;

[COLOR=Red]$servers[$i]['enable_auto_uid_numbers'] = true;[/COLOR]

$servers[$i]['auto_uid_number_mechanism'] = 'search';

[COLOR=Red]$servers[$i]['auto_uid_number_search_base'] = 'cn=NextFreeUnixId,o=firma,c=de';[/COLOR]

[COLOR=Red]$servers[$i]['auto_uid_number_min'] = 10000;[/COLOR]

$servers[$i]['auto_uid_number_uid_pool_dn'] = 'cn=uidPool,dc=example,dc=com';

$servers[$i]['unique_attrs_dn'] = '';

$servers[$i]['unique_attrs_dn_pass'] = '';
2. Ich hab den LDAP-Baum um Folgenden Eintrag Eweitert:
dn: cn=NextFreeUnixId,o=firma,c=de

objectClass: inetOrgPerson

objectClass: sambaUnixIdPool

gidNumber: 1000

uidNumber: 1000

cn: NextFreeUnixId

sn: NextFreeUnixId

3. Ich wollte testen ob er das gezogen hat und hab versucht einen neuen User anzulegen.

Aber er hat leider nicht automatisch eine UID bzw. GID genommen ?

Muss ich da noch was an den Access-Regeln machen ?

Hast du mir ein Tipp ?

Gruß

Merenda

Link zu diesem Kommentar
Auf anderen Seiten teilen

Setzte mal die Option auto_uid_number_uid_pool_dn richtig, dann sollte es gehen.

Edit: Sorry, auch die Option auto_uid_number_mechanism muss natürlich geändert werden. Hab's gerade nicht zur Hand, auf jeden Fall ist das nicht mehr search. Steht aber in der Doku direkt dahinter.

Hi,

also hier meine Aktuelle Konfiguration:

[...]

$servers[$i]['enable_auto_uid_numbers'] = true;

$servers[$i]['auto_uid_number_mechanism'] = 'uidpool';

$servers[$i]['auto_uid_number_search_base'] = 'ou=Test-Systeme,o=firma,c=de';

$servers[$i]['auto_uid_number_min'] = 10000;

$servers[$i]['auto_uid_number_uid_pool_dn'] = 'cn=NextFreeUnixId,ou=Test-Systeme,o=firma,c=de';

$servers[$i]['auto_uid_number_search_dn'] = '';

[...]
Ich bekomm aber folgenden Fehler:
Fehler

Es scheint so, dass der "uidPool" - der in der Konfiguration festgelegt ist -

nicht vorhanden ist.
Aber der ist doch drin, oder:
slapcat

[...]

dn: cn=NextFreeUnixId,o=firma,c=de

cn: NextFreeUnixId

gidNumber: 1000

objectClass: inetOrgPerson

objectClass: sambaUnixIdPool

sn: NextFreeUnixId

uidNumber: 1000

structuralObjectClass: inetOrgPerson

entryUUID: 865bf5a2-beca-1029-81c2-f315531d6780

creatorsName: cn=admin,o=firma,c=de

createTimestamp: 20050921090456Z

entryCSN: 2005092109:04:56Z#0x0001#0#0000

modifiersName: cn=admin,o=firma,c=de

modifyTimestamp: 20050921090456Z

Was mache ich da falsch ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Nee, ein Limit kenne ich dabei nicht. Bei mir zählt er sauber immer bei jedem neuen User um eins hoch. Dein Startwert war doch auch 1000? Ist diese UID evtl. schon vergeben?

Die 1000 ist schon vergeben ja, die hat ja der "NextFreeUnixId"

Aber der müstet doch trozdem weiter Zählen ... Und wo holt er sich jetzt die 1000 her ?

Die 10000 in der Konfig ist nur bei search interessant. Die wird dann als minimum genommen. Damit wird erreicht, dass keine automatisch vergebene UID kleiner 10000 sein kann.

Ok ... ich dachte er würde sich die UIDs dort holen. Wo holt er sie dann ?

Geht er dann vom uidNumber des NextFreeUnixId Users oder wie ?

Link zu diesem Kommentar
Auf anderen Seiten teilen

HI,

hab gestern noch rum gespielt und es mir folgendes aufgefallen, wenn ich die UID des NextFreeUnixId Users ändere, sagen wir mal auf 2000 und dann einen neuen User anlegen, dann bekommt dieser User die nächste UID 2001, das ist schön und gut, aber so bald ich noch einen User anlege, schlägt er mir wieder die UID 2001 vor :(

An was kann das liegen ? Hast du eine IDEE ?

Gruß

Merenda

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

ja du hast recht gehabt ! Ich musste noch einen berechtigten User eintragen.

Also mit Search funktioniert das jetzt, aber nicht mit uidpool ?

Meine config sieht folgendermasen aus:

[...]

$servers[$i]['enable_auto_uid_numbers'] = true;

$servers[$i]['auto_uid_number_mechanism'] = 'search';

$servers[$i]['auto_uid_number_search_base'] = 'o=firma,c=de';

$servers[$i]['auto_uid_number_min'] = 2000;

$servers[$i]['auto_uid_number_uid_pool_dn'] = 'cn=NextFreeUnixId,o=firma,c=de';

$servers[$i]['auto_uid_number_search_dn'] = 'cn=admin,o=firma,c=de';

$servers[$i]['auto_uid_number_search_dn_pass'] = 'test';

[...]
Das sagen die logs: ### Mit uidpool
Sep 23 10:59:46 g8sxz001 slapd[6191]: daemon: conn=0 fd=12 connection from IP=10.206.176.97:22962 (IP=0.0.0.0:389) accepted.

Sep 23 10:59:46 g8sxz001 slapd[6192]: conn=0 op=0 BIND dn="cn=admin,o=firma,c=de" method=128

Sep 23 10:59:46 g8sxz001 slapd[6192]: conn=0 op=0 RESULT tag=97 err=0 text=

Sep 23 10:59:46 g8sxz001 slapd[6192]: conn=0 op=1 SRCH base="cn=NextFreeUnixId,o=firma,c=de" scope=0 filter="(objectClass=*)"

Sep 23 10:59:46 g8sxz001 slapd[6192]: conn=0 op=1 ENTRY dn="cn=NextFreeUnixId,o=firma,c=de"

Sep 23 10:59:46 g8sxz001 slapd[6192]: conn=0 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=

Sep 23 10:59:46 g8sxz001 slapd[6192]: conn=0 op=2 UNBIND

Sep 23 10:59:46 g8sxz001 slapd[6192]: conn=0 fd=12 closed

Sep 23 10:59:46 g8sxz001 slapd[6191]: daemon: conn=1 fd=12 connection from IP=10.206.176.97:22963 (IP=0.0.0.0:389) accepted.

Sep 23 10:59:46 g8sxz001 slapd[6192]: conn=1 op=0 BIND dn="cn=admin,o=firma,c=de" method=128

Sep 23 10:59:46 g8sxz001 slapd[6192]: conn=1 op=0 RESULT tag=97 err=0 text=

Sep 23 10:59:46 g8sxz001 slapd[6192]: conn=1 op=1 SRCH base="cn=NextFreeUnixId,o=firma,c=de" scope=0 filter="(objectClass=*)"

Sep 23 10:59:46 g8sxz001 slapd[6192]: conn=1 op=1 ENTRY dn="cn=NextFreeUnixId,o=firma,c=de"

Sep 23 10:59:46 g8sxz001 slapd[6192]: conn=1 op=1 SEARCH RESULT tag=101 err=0 nentries=1 text=

Sep 23 10:59:46 g8sxz001 slapd[6192]: conn=1 op=2 UNBIND

Sep 23 10:59:46 g8sxz001 slapd[6192]: conn=1 fd=12 closed

Sep 23 10:59:46 g8sxz001 slapd[6191]: daemon: conn=2 fd=12 connection from IP=10.206.176.97:22964 (IP=0.0.0.0:389) accepted.

Sep 23 10:59:46 g8sxz001 slapd[6192]: conn=2 op=0 BIND dn="cn=admin,o=firma,c=de" method=128

Sep 23 10:59:46 g8sxz001 slapd[6192]: conn=2 op=0 RESULT tag=97 err=0 text=

Sep 23 10:59:46 g8sxz001 slapd[6192]: do_search: invalid dn (Array)

Sep 23 10:59:46 g8sxz001 slapd[6192]: conn=2 op=1 RESULT tag=101 err=34 text=invalid DN

Sep 23 10:59:46 g8sxz001 slapd[6192]: conn=2 op=2 UNBIND

Sep 23 10:59:46 g8sxz001 slapd[6192]: conn=2 fd=12 closed

Sep 23 11:00:01 g8sxz001 /USR/SBIN/CRON[6201]: (root) CMD ( /usr/lib/sa/sa1      )
### Mit search
Sep 23 11:02:52 g8sxz001 slapd[6191]: daemon: conn=13 fd=13 connection from IP=10.206.176.97:22980 (IP=0.0.0.0:389) accepted.

Sep 23 11:02:52 g8sxz001 slapd[6193]: conn=13 op=0 BIND dn="cn=admin,o=firma,c=de" method=128

Sep 23 11:02:52 g8sxz001 slapd[6193]: conn=13 op=0 RESULT tag=97 err=0 text=

Sep 23 11:02:52 g8sxz001 slapd[6192]: conn=13 op=1 SRCH base="o=firma,c=de" scope=2 filter="(uidNumber=*)"

Sep 23 11:02:52 g8sxz001 slapd[6192]: conn=13 op=1 ENTRY dn="cn=NextFreeUnixId,o=firma,c=de"

Sep 23 11:02:52 g8sxz001 slapd[6192]: conn=13 op=1 ENTRY dn="uid=mars_ldap,ou=mars,ou=Test-Systeme,o=firma,c=de"

Sep 23 11:02:52 g8sxz001 slapd[6192]: conn=13 op=1 ENTRY dn="uid=mars_ldap2,ou=mars,ou=Test-Systeme,o=firma,c=de"

Sep 23 11:02:52 g8sxz001 slapd[6192]: conn=13 op=1 ENTRY dn="uid=a,ou=UID-USER,ou=Test-Systeme,o=firma,c=de"

Sep 23 11:02:52 g8sxz001 slapd[6192]: conn=13 op=1 ENTRY dn="uid=b,ou=UID-USER,ou=Test-Systeme,o=firma,c=de"

Sep 23 11:02:52 g8sxz001 slapd[6192]: conn=13 op=1 ENTRY dn="uid=cc,ou=UID-USER,ou=Test-Systeme,o=firma,c=de"

Sep 23 11:02:52 g8sxz001 slapd[6192]: conn=13 op=1 ENTRY dn="uid=mars_ldap3,ou=mars,ou=Test-Systeme,o=firma,c=de"

Sep 23 11:02:52 g8sxz001 slapd[6192]: conn=13 op=1 ENTRY dn="uid=d,ou=UID-USER,ou=Test-Systeme,o=firma,c=de"

Sep 23 11:02:52 g8sxz001 slapd[6192]: conn=13 op=1 ENTRY dn="uid=aasdf,ou=UID-USER,ou=Test-Systeme,o=firma,c=de"

Sep 23 11:02:52 g8sxz001 slapd[6192]: conn=13 op=1 ENTRY dn="uid=gg,ou=UID-USER,ou=Test-Systeme,o=firma,c=de"

Sep 23 11:02:52 g8sxz001 slapd[6192]: conn=13 op=1 SEARCH RESULT tag=101 err=0 nentries=10 text=

Sep 23 11:02:52 g8sxz001 slapd[6193]: conn=13 op=2 UNBIND

Sep 23 11:02:52 g8sxz001 slapd[6193]: conn=13 fd=13 closed

Sep 23 11:02:52 g8sxz001 slapd[6191]: daemon: conn=14 fd=13 connection from IP=10.206.176.97:22981 (IP=0.0.0.0:389) accepted.

Sep 23 11:02:52 g8sxz001 slapd[6192]: conn=14 op=0 BIND dn="cn=admin,o=firma,c=de" method=128

Sep 23 11:02:52 g8sxz001 slapd[6192]: conn=14 op=0 RESULT tag=97 err=0 text=

Sep 23 11:02:52 g8sxz001 slapd[6193]: do_search: invalid dn (Array)

Sep 23 11:02:52 g8sxz001 slapd[6193]: conn=14 op=1 RESULT tag=101 err=34 text=invalid DN

Sep 23 11:02:52 g8sxz001 slapd[6193]: conn=14 op=2 UNBIND

Sep 23 11:02:52 g8sxz001 slapd[6193]: conn=14 fd=13 closed

Also ich dachte mir jetzt so naiv wie ich bin, ich tausche einfach search mit uidpool aus und gut ist aber anscheindn nicht. Aus den logs werde ich auch nicht schlau :( Wie machst du das ? mit search oder mit uidpool ?

Gruß

Merenda

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bei uidpool passiert hier ein Fehler:

Sep 23 10:59:46 g8sxz001 slapd[6192]: do_search: invalid dn (Array)

Interessant wäre hier jetzt zu wissen was er da genau sucht. Steht leider nicht im Protokoll. Kannst Du evtl. die Protokollierung noch ausführlicher machen oder halt mal ein Packetsniffer die Verbindung aufzeichnen lassen?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bei uidpool passiert hier ein Fehler:

Sep 23 10:59:46 g8sxz001 slapd[6192]: do_search: invalid dn (Array)

Interessant wäre hier jetzt zu wissen was er da genau sucht. Steht leider nicht im Protokoll. Kannst Du evtl. die Protokollierung noch ausführlicher machen oder halt mal ein Packetsniffer die Verbindung aufzeichnen lassen?

Häm was sollte ich am besten für ein LOG Level einstellen ? Bzw. das mit dem Packetsniffer ist auch interessant, aber ich kenn mich mit den Dinger überhaupt nicht aus. Kannst du mir einen empfehlen ?

Danke & Gruß

Merenda

Link zu diesem Kommentar
Auf anderen Seiten teilen

Den Loglevel sollte man mindestens auf den Wert stellen, dass alle Fragen und Antworten protokolliert werden. Müsste ebenfalls die Manpage ziehen welcher Wert das genau ist.

Ich selbst benutze dann in der Regel einen Paketsniffer. Geht, meinem Gechmack nach, einfacher und ist schneller. Z.B. tcpdump. Der Aufruf könnte auf dem LDAP-Server so aussehen:

tcpdump -nps0 -iany -w ldap.pcap tcp port ldap

Die Datei ldap.pcap die so entsteht könnte man dann auswerten welche Frage gestellt wurde und wie der LDAP Server darauf reagiert hat.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...