This shows you the differences between two versions of the page.
saisp:labs:01:contents:06 [2014/01/24 18:51] razvan.deaconescu [06. Lorem ipsum] |
saisp:labs:01:contents:06 [2014/02/18 12:28] (current) razvan.deaconescu [06. [20p] Adăugare conturi de utilizatori în baza de date LDAP] |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 06. Adăugare conturi de utilizatori în baza de date LDAP ==== | + | ==== 06. [20p] Adăugare conturi de utilizatori în baza de date LDAP ==== |
- | * Noi comenzi de adăugare de utilizatori | + | Pentru a putea folosi conturi din baza de date LDAP pentru anumite forme de autentificare, este necesar ca intrările să aibă ca ''objectClass'' atât ''posixAccount'' cât și ''shadowAccount''. Cele două clase conțin informații precum ''uid'', ''password'', ''loginShell'', ''uidNumber'', ''gidNumber''. |
- | * Autentificare cu un utilizator pentru anumite operații | + | |
+ | Trebuie, așadar, să modificăm intrările de tip utilizator existente în baza de date LDAP. Modificările se realizează tot prin intermediul unui fișier LDIF. Astfel, pentru a adăuga informații din clasa ''posixAccount'' și ''shadowAccount'' pentru utilizatorul ''amengsk'' vom folosi un fișier cu următorul conținut:<file none account-uid-amengsk.ldif> | ||
+ | dn: uid=amengsk,ou=Dominion,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | changetype: modify | ||
+ | add: objectClass | ||
+ | objectClass: posixAccount | ||
+ | - | ||
+ | add: uidNumber | ||
+ | uidNumber: 1001 | ||
+ | - | ||
+ | add: gidNumber | ||
+ | gidNumber: 1000 | ||
+ | - | ||
+ | add: homeDirectory | ||
+ | homeDirectory: /home/amengsk | ||
+ | - | ||
+ | add: loginShell | ||
+ | loginShell: /bin/bash | ||
+ | - | ||
+ | add: gecos | ||
+ | gecos: Arcturus Mengsk,,, | ||
+ | - | ||
+ | add: objectClass | ||
+ | objectClass: shadowAccount | ||
+ | - | ||
+ | </file> | ||
+ | |||
+ | Acest fișier se găsește și pe stația client în directorul ''/etc/ldap/ldif/modify/'', cu numele ''account-uid-amengsk.ldif''. | ||
+ | |||
+ | Adăugăm noile informații folosind comanda ''ldapmodify'', cu o sintaxă similară comenzii ''ldapadd'':<code bash> | ||
+ | root@ldap-client:/etc/ldap/ldif/modify# ldapmodify -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -f account-uid-amengsk.ldif | ||
+ | </code> | ||
+ | |||
+ | Acum verificăm modificările în baza de date LDAP folosind comanda ''ldapsearch'':<code bash> | ||
+ | root@ldap-client:/etc/ldap/ldif/modify# ldapsearch -x -LLL uid=amengsk | ||
+ | dn: uid=amengsk,ou=Dominion,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | uid: amengsk | ||
+ | cn: Arcturus Mengsk | ||
+ | givenName: Arcturus | ||
+ | sn: Mengsk | ||
+ | mail: mengsk@dominion.terran.mil | ||
+ | objectClass: person | ||
+ | objectClass: inetOrgPerson | ||
+ | objectClass: posixAccount | ||
+ | objectClass: shadowAccount | ||
+ | uidNumber: 1001 | ||
+ | gidNumber: 1000 | ||
+ | homeDirectory: /home/amengsk | ||
+ | loginShell: /bin/bash | ||
+ | gecos: Arcturus Mengsk,,, | ||
+ | </code> | ||
+ | |||
+ | Pentru a fi informațiile complete trebuie completate câmpurile legate de parole. Pentru aceasta se folosește comanda ''ldappasswd'':<code bash> | ||
+ | root@ldap-client:/etc/ldap/ldif/modify# ldappasswd -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -S uid=amengsk,ou=Dominion,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | New password: | ||
+ | Re-enter new password: | ||
+ | Enter LDAP Password: | ||
+ | </code> | ||
+ | |||
+ | Opțiunea ''-W'' folosită și în cazul comenzilor ''ldapadd'' și ''ldappaswd'' înseamnă că parola utilizatorului de bind (cel care face modificarea, în cazul de față ''cn=admin,dc=labs,dc=cs,dc=pub,dc=ro'') se va citi de la intrarea standard. Opțiunea ''-S'' spune că parola care va fi completată utilizatorului transmis ca parametru (''uid=amengsk...'') va fi citită, de asemenea, de la intrarea standard. În rularea de mai sus se cere întâi parola utilizatorului primit ca parametru (introduceți ce parolă doriți), se confirmă acea parolă și apoi se cere parola de bind. | ||
+ | |||
+ | În acest moment utilizatorul are configurată parola. Pentru a verifica acest lucru, putem să citim intrarea din baza de date LDAP. Câmpul de parolă este însă accesibil doar utilizatorului propriu sau doar celui privilegiat. Vom face citirea folosind utilizatorul propriu (bind):<code bash> | ||
+ | root@ldap-client:/etc/ldap/ldif/modify# ldapsearch -x -LLL -D 'uid=amengsk,ou=Dominion,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro' -W uid=amengsk userPassword | ||
+ | Enter LDAP Password: | ||
+ | dn: uid=amengsk,ou=Dominion,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | userPassword:: e1NTSEF9NDhXajhSbzZ6THNWZ1YrRjRnNjRITno4blNYaWhSblo= | ||
+ | </code> | ||
+ | În comanda de mai sus am realizat bind la serverul LDAP folosind chiar utilizatorul ''amengsk'', am folosit opțiunea ''-W'' pentru a citi parola de la intrarea standard și apoi am solicitat afișarea câmpului ''userPassword'' în format ''base64''. | ||
+ | |||
+ | **Exercițiu**: Realizați pașii de mai sus și pentru utilizatorii ''raynor'', ''vmengsk'', ''horner'', ''zeratul'' și ''artanis''. | ||
+ | |||
+ | <note hint> | ||
+ | Creați copii ale fișierului ''/etc/ldap/ldif/account-uid-mengsk.ldif'', încărcați-le în baza de date LDAP și apoi configurați parola pentru fiecare utilizator. Incrementați pentru fiecare utilizator adăugat valoarea pentru numărul de UID (''uidNumber''). | ||
+ | </note> | ||
+ | |||
+ | <solution -hidden> | ||
+ | Pentru început creăm copii ale fișierului ''/etc/ldap/ldif/account-uid-mengsk.ldif'' și apoi le edităm pentru fiecare utilizator:<code bash> | ||
+ | root@ldap-client:/etc/ldap/ldif/modify# cp account-uid-amengsk.ldif account-uid-raynor.ldif | ||
+ | root@ldap-client:/etc/ldap/ldif/modify# cp account-uid-amengsk.ldif account-uid-vmengsk.ldif | ||
+ | root@ldap-client:/etc/ldap/ldif/modify# cp account-uid-amengsk.ldif account-uid-horner.ldif | ||
+ | root@ldap-client:/etc/ldap/ldif/modify# cp account-uid-amengsk.ldif account-uid-zeratul.ldif | ||
+ | root@ldap-client:/etc/ldap/ldif/modify# cp account-uid-amengsk.ldif account-uid-artanis.ldif | ||
+ | root@ldap-client:/etc/ldap/ldif/modify# vi *.ldif | ||
+ | 6 files to edit | ||
+ | </code> | ||
+ | |||
+ | Apoi adăugăm modificările în baza de date LDAP:<code bash> | ||
+ | root@ldap-client:/etc/ldap/ldif/modify# ldapmodify -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -f account-uid-raynor.ldif | ||
+ | Enter LDAP Password: | ||
+ | modifying entry "uid=raynor,ou=Raiders,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro" | ||
+ | |||
+ | root@ldap-client:/etc/ldap/ldif/modify# ldapmodify -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -f account-uid-vmengsk.ldif | ||
+ | Enter LDAP Password: | ||
+ | modifying entry "uid=vmengsk,ou=Dominion,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro" | ||
+ | |||
+ | root@ldap-client:/etc/ldap/ldif/modify# ldapmodify -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -f account-uid-horner.ldif | ||
+ | Enter LDAP Password: | ||
+ | modifying entry "uid=horner,ou=Raiders,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro" | ||
+ | |||
+ | root@ldap-client:/etc/ldap/ldif/modify# ldapmodify -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -f account-uid-zeratul.ldif | ||
+ | Enter LDAP Password: | ||
+ | modifying entry "uid=zeratul,ou=Nerazim,o=Protoss,dc=labs,dc=cs,dc=pub,dc=ro" | ||
+ | |||
+ | root@ldap-client:/etc/ldap/ldif/modify# ldapmodify -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -f account-uid-artanis.ldif | ||
+ | Enter LDAP Password: | ||
+ | modifying entry "uid=artanis,ou=Khalai,o=Protoss,dc=labs,dc=cs,dc=pub,dc=ro" | ||
+ | </code> | ||
+ | |||
+ | Apoi configurăm parole pentru fiecare cont și verificăm prezența atributului ''userPassword'':<code bash> | ||
+ | root@ldap-client:/etc/ldap/ldif/modify# ldappasswd -x -D cn=admin,dc=labs,dc=cs,dc=pub,dc=ro -W -S uid=raynor,ou=Raiders,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | New password: | ||
+ | Re-enter new password: | ||
+ | Enter LDAP Password: | ||
+ | |||
+ | root@ldap-client:/etc/ldap/ldif/modify# ldapsearch -x -LLL -D 'uid=raynor,ou=Raiders,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro' -W uid=raynor userPassword | ||
+ | Enter LDAP Password: | ||
+ | dn: uid=raynor,ou=Raiders,o=Terran,dc=labs,dc=cs,dc=pub,dc=ro | ||
+ | userPassword:: e1NTSEF9endRNnp2c1R3Wm1GVGsrK2tuWFYvQnQ0bEtnYUNwd1U= | ||
+ | |||
+ | [...] | ||
+ | </code> | ||
+ | </solution> |