| Advertise on warmetal.nl! Click for more information about advertising here. |
Did you find this website useful? Did I save you a lot of time? |
|
Alle werkzaamheden kunnen worden uitgevoerd op een Open Enterprise Server Linux kernel systeem. Indien gewenst kun je stap 1 en 3 ook uitvoeren op een Open Enterprise Server Netware kernel. Stap 2 maakt gebruik van functies binnen de tekstverwerker 'vi', geïnstalleerd op elk linux en unix systeem. Indien je hier niet de beschikking over heb kun je gebruik maken verschillende LINUX LIVE cd's, bijvoorbeeld 'Knoppix Live' of 'openSUSE Live'. De bewerkingen zijn uitgevoerd op een eDirectory versie 8.8 SP1 (20112.86).
Novell documentatie voor eDirectory 8.8: http://www.novell.com/documentation/edir88/index.html Directe download link van openSUSE LIVE DVD: http://download.opensuse.org/distribution/10.2/iso/dvd/openSUSE-10.2-GM-LiveDVD.iso FTP download site voor Knoppix: ftp://ftp.knoppix.nl/pub/os/Linux/distr/knoppix/
Voor alle variabelen en opties hieronder geld dat ze direct achter de optie moeten worden geplaatst, zonder spatie en of scheidingsteken.
Variabelen:
| <ipadressource> | IP adres van de server waar een replica draait van de partitie waar de userobjecten in staan. |
| <usercontainer> | De LDAP notatie van de container waar de user objecten in staan, dus bijvoorbeeld ou=users,ou=delft,o=ogd |
| <admin> | De LDAP notatie van de gebruiker die rechten heeft om de usercontainer uit te lezen, bijvoorbeeld cn=admin,o=ogd |
| <attributen> | Een lijst, gescheiden door komma's, waarin de attributen staan die je wilt exporteren. Verplicht hierin zijn de distinguished name, de common name, de surname en de objectClass. Deze zijn verplicht of omdat ze verplicht zijn als attribuut voor het object User (cn en surname) of omdat ze verplicht zijn voor de LDIF import (objectClass en dn). Bijvoorbeeld: dn,cn,givenName,sn,fullName,l,ou,description,mail,objectClass «br» Deze namen moeten overigens wel gekoppeld zijn aan de eDirectory attributen. Als je de precieze naam wilt weten per attribuut ga dan in consoleone naar het 'LDAP Group' object van de server en ga naar het tabblad attribute mappings. Hier kun je eventueel ook extra mappings maken. Denk eraan dat zowel LDAP als LDIF bestanden hoofdlettergevoelig zijn. |
| Verder opties: | |
| -SLDAP | -S Source Handler, hiermee vertel je dat de source die je gaat uitlezen van het type LDAP is. |
| -p389 | Dit is de LDAP poort waarop verbinding wordt gemaakt. De standaard LDAP poort is 389. Je kan ook een secure connectie maken, dan moet je poort 636 gebruiken. Standaard mag je dit overigens niet unsecure doen. Je kan dus of poort 636 en het certificaat opgeven, of je kan naar het 'LDAP Group' object gaan en op het algemeen tabblad het vinkje uitzetten van 'Require TLS for simple binds with password'. Ik heb voor deze optie gekozen omdat het vinkje na afloop weer snel aan te zetten is, en dit specifieke verkeer op het interne netwerk bleef. |
| -W | Deze switch werkt alleen op de Linux variant van OES. Met deze switch vraagt de utility om het wachtwoord, zodat deze niet in je '.bash history' komt. Op netware zul je de switch -w<wachtwoord> (let op:kleine letter w) moeten gebruiken. |
| -cone | Zoek alleen in de container die je hebt opgegeven bij -b. |
| -Fobjectclass=inetorgperson | Standaard haalt ICE alle objecten in een container eruit. Wij zijn alleen geïnteresseerd in userobjecten, en die heten onder LDAP 'inetorgperson'. Ook hiervoor gelden trouwens dezelfde voorwaarden als gesteld in het stuk <attributen> maar dan voor object classes. |
| -DLDIF | -D Destination Handler, schrijf de data naar een LDIF file. |
| -fexportfile.ldf | De naam van het bestand waar je data naartoe wil hebben geschreven. |
Je krijgt nu een ldif bestand eruit, wat er een beetje als volgt uitziet:
#This LDIF file was generated by Novell's ICE and the LDIF destination handler. version: 1 dn: cn=sjoerdh,ou=users,ou=delft,o=ogd changetype: add mail: s.hooft@ogd.nl givenName: Sjoerd fullName: S. Hooft sn: Hooft ou: Projecten objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: Person objectClass: ndsLoginProperties objectClass: Top objectClass: radiusprofile l: Delft description: MCNE - Novell specialist cn: sjoerdh dn: cn=joepp,ou=users,ou=delft,o=ogd changetype: add mail: j.piscaer@ogd.nl givenName: Joep fullName: J.Piscaer sn: Piscaer ou: Detachering objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: Person objectClass: ndsLoginProperties objectClass: Top objectClass: radiusprofile l: Delft description: CNE - Novell specialist cn: joepp
Bronnen: http://www.novell.com/documentation/edir88/index.html?page=/documentation/edir88/edir88/data/a5hgmnu.html Novell documentatie voor ICE
In vi kun je met behulp van commando's bewerkingen uitvoeren die de file snel en effectief aanpassen aan je eigen behoeften, en aan de vereisten die LDIF stelt. In mijn situatie moest de dn worden aangepast omdat de container structuur van de testomgeving een weinig afweek van de productieomgeving, ik moest één van de objectclasses weghalen omdat het schema van de testomgeving niet was uitgebreid met radius attributen, en ik wou iedere gebruiker een standaard wachtwoord geven.
Voor de complete vi newbie, ik ga niet teveel uitleggen over vi, behalve dat het programma twee modi heeft, een commando modus en een edit modus. Switchen hiertussen doe je met <ESC> of door een commando te geven waardoor je in de edit mode komt. De commando's die hieronder staan beschreven moeten dus gegeven worden in commando modus.
Het aanpassen van de usercontainer:
:%s/ou=users,ou=delft,o=ogd/ou=users,o=ogd/ :%s Search and replace (substitute) in het complete document Eerste /string/ is de tekst die vervangen gaat worden door de tekst in de tweede /string/
Het weghalen van een complete regel per gebruiker:
:g/objectClass: radiusprofile/d g Commando geldt voor het complete document (global) /string/ is de tekst waarop gezocht wordt d Verwijder de regel waar de tekst in voorkomt
Het toevoegen van een regel per profiel onder de regel met description met daarin het nieuwe wachtwoord:
:%s/description.*$/&^Muserpassword: ogdogd/ .*$ Matcht je search pattern plus alles wat verder nog op de regel staat & Dit is een speciaal teken in je replace string wat gelijk is aan het gematchte stuk tekst. Gevolg: Hij laat de gematchte tekst netjes staan waar het stond, dus alles wat achter de & komt wordt ingevoegd na het gematchte stuk tekst (je search pattern plus de rest van de regel) ^M Nieuwe regel, deze krijg je overigens door eerst <CTRL>+V in te tikken en daarna <CTRL>+M
Nu heb je een bestand gekregen wat er zo uitziet:
#This LDIF file was generated by Novell's ICE and the LDIF destination handler. version: 1 dn: cn=sjoerdh,ou=users,o=ogd changetype: add mail: s.hooft@ogd.nl givenName: Sjoerd fullName: S. Hooft sn: Hooft ou: Projecten objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: Person objectClass: ndsLoginProperties objectClass: Top l: Delft description: MCNE - Novell specialist userpassword: ogdogd cn: sjoerdh dn: cn=joepp,ou=users,o=ogd changetype: add mail: j.piscaer@ogd.nl givenName: Joep fullName: J.Piscaer sn: Piscaer ou: Detachering objectClass: inetOrgPerson objectClass: organizationalPerson objectClass: Person objectClass: ndsLoginProperties objectClass: Top l: Delft description: CNE - Novell specialist userpassword: ogdogd cn=joepp
Bronnen VI: http://thomer.com/vi/vi.html#manuals
Dit commando is gelijk opgebouwd aan het export commando behalve dat nu de Source Handler LDIF is en de Destination Handler LDAP. Verder moet je nu als <ipadresdest> de server opgeven die de desbetreffende replica heeft in de testomgeving.
Discussion