This shows you the differences between two versions of the page.
saisp:labs:01:contents:05 [2014/01/24 18:50] razvan.deaconescu [05. Lorem ipsum] |
saisp:labs:01:contents:05 [2014/02/18 13:56] (current) razvan.deaconescu [05. [15p] Adăugare intrări în baza de date LDAP] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 05. Adăugare intrări în baza de date LDAP ==== | + | ==== 05. [15p] Adăugare intrări în baza de date LDAP ==== |
- | * (tutorial) Adăugare/modificare/ștergere intrări din LDAP | + | Vrem să populăm baza de date LDAP cu intrări. Pentru aceasta trebuie redactate fișiere de configurare în format LDIF care să fie apoi adăuagate în baza de date LDAP. |
+ | Fișierele de configurare se găsesc în format LDIF pe stația client în directorul ''/etc/ldap/ldif/'':<code bash> | ||
+ | root@ldap-client:/etc/ldap/ldif# ls | ||
+ | o-protoss.ldif ou-khalai.ldif uid-amengsk.ldif uid-zeratul.ldif | ||
+ | o-terran.ldif ou-nerazim.ldif uid-artanis.ldif | ||
+ | ou-dominion.ldif ou-raiders.ldif uid-raynor.ldif | ||
+ | </code> | ||
+ | |||
+ | Pentru a adăuga intrări în baza de date LDAP folosim comanda ''ldapadd''. Trebuie să precizăm care este ''dn''-ul contului de administrator (parola este ''student''):<code bash> | ||
+ | root@ldap-client:/etc/ldap/ldif# ldapadd -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -f o-terran.ldif | ||
+ | Enter LDAP Password: | ||
+ | adding new entry "o=Terran,dc=labs,dc=cs,dc=pub,dc=ro" | ||
+ | |||
+ | root@ldap-client:/etc/ldap/ldif# ldapadd -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -f ou-dominion.ldif | ||
+ | Enter LDAP Password: | ||
+ | adding new entry "ou=Dominion,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro" | ||
+ | |||
+ | root@ldap-client:/etc/ldap/ldif# ldapadd -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -f ou-raiders.ldif | ||
+ | Enter LDAP Password: | ||
+ | adding new entry "ou=Raiders,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro" | ||
+ | |||
+ | root@ldap-client:/etc/ldap/ldif# ldapadd -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -f uid-raynor.ldif | ||
+ | Enter LDAP Password: | ||
+ | adding new entry "uid=raynor,ou=Raiders,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro" | ||
+ | |||
+ | root@ldap-client:/etc/ldap/ldif# ldapadd -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -f uid-amengsk.ldif | ||
+ | Enter LDAP Password: | ||
+ | adding new entry "uid=amengsk,ou=Dominion,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro" | ||
+ | </code> | ||
+ | |||
+ | Opțiunea ''-D'' precizează ''dn''-ul utilizatorului privilegiat. Opțiunea ''-f'' precizează fișierul format LDIF care va fi adăugat. Iar opțiunea ''-W'' precizează că se va introduce parola de la intrarea standard. | ||
+ | |||
+ | Intrările adăugate se găsesc acum în baza de date LDAP:<code bash> | ||
+ | root@ldap-client:/etc/ldap/ldif# ldapsearch -x -LLL dn | ||
+ | dn: dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | |||
+ | dn: cn=admin,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | |||
+ | dn: o=Terran,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | |||
+ | dn: o=Protoss,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | |||
+ | dn: ou=Dominion,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | |||
+ | dn: ou=Raiders,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | |||
+ | dn: uid=raynor,ou=Raiders,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | |||
+ | dn: uid=amengsk,ou=Dominion,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | </code> | ||
+ | |||
+ | Adăugați și celelate intrări din fișierele LDIF din directorul ''/etc/ldap/ldif/''. Există lipsuri în anumite fișiere pe care trebuie să le rezolvați. | ||
+ | |||
+ | <note hint> | ||
+ | Acolo unde vă solicită un câmp completați cu o valoare potrivită. | ||
+ | </note> | ||
+ | |||
+ | Creați două noi fișiere: | ||
+ | * ''uid-vmengsk.ldif'' conține informații despre ''Valerian Mengsk'' (Dominion). | ||
+ | * ''uid-horner.ldif'' conține informații despre ''Matt Horner'' (Raiders). | ||
+ | Adăugați aceste fișiere la baza de date LDAP. | ||
+ | |||
+ | <note tip> | ||
+ | Se recomandă să porniți de la fișiere existente și să le modificați pe acelea. Puteți porni de la fișierele ''uid-amengsk.ldif'' și ''uid-raynor.ldif''. | ||
+ | </note> | ||
+ | |||
+ | În final listați conținutul bazei de date. | ||
+ | |||
+ | <solution -hidden> | ||
+ | Adăugăm intrări în baza de date LDAP:<code bash> | ||
+ | root@ldap-client:/etc/ldap/ldif# ldapadd -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -f o-protoss.ldif | ||
+ | Enter LDAP Password: | ||
+ | adding new entry "o=Protoss,dc=labs,dc=cs,dc=pub,dc=ro" | ||
+ | |||
+ | root@ldap-client:/etc/ldap/ldif# ldapadd -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -f ou-khalai.ldif | ||
+ | Enter LDAP Password: | ||
+ | adding new entry "ou=Khalai,o=Protoss,dc=labs,dc=cs,dc=pub,dc=ro" | ||
+ | |||
+ | root@ldap-client:/etc/ldap/ldif# ldapadd -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -f ou-nerazim.ldif | ||
+ | Enter LDAP Password: | ||
+ | ldapadd: invalid format (line 4) entry: "ou=Nerazim,o=Protoss,dc=labs,dc=cs,dc=pub,dc=ro" | ||
+ | </code> | ||
+ | |||
+ | Problema fișierului ''ou-nerazim.ldif'' este absența caracterului '':'' (două puncte) în cadrul liniei cu atributul ''description''. Trebuie să fie așa:<code> | ||
+ | description: Protoss Dark Templar caste | ||
+ | </code> | ||
+ | |||
+ | Adăugăm apoi fișierele:<code bash> | ||
+ | root@ldap-client:/etc/ldap/ldif# ldapadd -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -f ou-nerazim.ldif | ||
+ | Enter LDAP Password: | ||
+ | adding new entry "ou=Nerazim,o=Protoss,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | |||
+ | root@ldap-client:/etc/ldap/ldif# ldapadd -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -f uid-artanis.ldif | ||
+ | Enter LDAP Password: | ||
+ | adding new entry "uid=artanis,ou=Khalai,o=Protoss,dc=labs,dc=cs,dc=pub,dc=ro" | ||
+ | ldap_add: Object class violation (65) | ||
+ | additional info: object class 'inetOrgPerson' requires attribute 'sn' | ||
+ | </code> | ||
+ | |||
+ | Observăm că atributul ''sn'' (nume de familie -- //surname//) este obligatoriu pentru intrările din clasa ''inetOrgPerson''. Adăugăm în fișierele ''uid-artanis.ldif'' și ''uid-zeratul.ldif'' linia:<code> | ||
+ | sn: Templar | ||
+ | </code> | ||
+ | |||
+ | Adăugăm acum fișierele:<code bash> | ||
+ | root@ldap-client:/etc/ldap/ldif# ldapadd -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -f uid-artanis.ldif | ||
+ | Enter LDAP Password: | ||
+ | adding new entry "uid=artanis,ou=Khalai,o=Protoss,dc=labs,dc=cs,dc=pub,dc=ro" | ||
+ | |||
+ | root@ldap-client:/etc/ldap/ldif# ldapadd -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -f uid-zeratul.ldif | ||
+ | Enter LDAP Password: | ||
+ | adding new entry "uid=zeratul,ou=Nerazim,o=Protoss,dc=labs,dc=cs,dc=pub,dc=ro" | ||
+ | </code> | ||
+ | |||
+ | Generăm apoi fișiere LDIF pentru ''uid-vmengsk.ldif'' și pentru ''uid-horner.ldif'' pornind de la cele existente:<code> | ||
+ | root@ldap-client:/etc/ldap/ldif# cp uid-amengsk.ldif uid-vmengsk.ldif | ||
+ | root@ldap-client:/etc/ldap/ldif# vi uid-vmengsk.ldif | ||
+ | root@ldap-client:/etc/ldap/ldif# cp uid-raynor.ldif uid-horner.ldif | ||
+ | root@ldap-client:/etc/ldap/ldif# vi uid-horner.ldif | ||
+ | </code> | ||
+ | |||
+ | Apoi adăugăm fișierele generate în baza de date LDAP:<code bash> | ||
+ | root@ldap-client:/etc/ldap/ldif# ldapadd -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -f uid-vmengsk.ldif | ||
+ | Enter LDAP Password: | ||
+ | adding new entry "uid=vmengsk,ou=Dominion,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro" | ||
+ | |||
+ | root@ldap-client:/etc/ldap/ldif# ldapadd -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -f uid-horner.ldif | ||
+ | Enter LDAP Password: | ||
+ | adding new entry "uid=horner,ou=Raiders,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro" | ||
+ | </code> | ||
+ | |||
+ | Ulterior putem urmări toate intrările din baza de date LDAP:<code bash> | ||
+ | root@ldap-client:/etc/ldap/ldif# ldapsearch -x -LLL dn | ||
+ | dn: dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | |||
+ | dn: cn=admin,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | |||
+ | dn: o=Terran,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | |||
+ | dn: o=Protoss,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | |||
+ | dn: ou=Dominion,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | |||
+ | dn: ou=Raiders,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | |||
+ | dn: uid=raynor,ou=Raiders,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | |||
+ | dn: uid=amengsk,ou=Dominion,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | |||
+ | dn: ou=Khalai,o=Protoss,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | |||
+ | dn: ou=Nerazim,o=Protoss,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | |||
+ | dn: uid=artanis,ou=Khalai,o=Protoss,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | |||
+ | dn: uid=zeratul,ou=Nerazim,o=Protoss,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | |||
+ | dn: uid=vmengsk,ou=Dominion,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | |||
+ | dn: uid=horner,ou=Raiders,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | </code> | ||
+ | </solution> |