This is an old revision of the document!
Lightweight Directory Access Protocol - usługa katalogowa, metoda przechowywania informacji “o czymkolwiek”. U nas na początek planujemy wykorzystywać do centralnego przechowywania informacji o użytkownikach, grupach, do czego kto ma dostęp…
Aktualnie drzewo jest dla dc=hackerspace,dc=pl
Planujemy tam trzymać:
ou=People,dc=hackerspace,dc=pl
ou=Group,dc=hackerspace,dc=pl
ou=Aliases,dc=hackerspace,dc=pl
Obecnie, ponieważ wiki uznaje dc=wiki,dc=hackerspace,dc=pl za base dn swoich zapytań o istniejące grupy, istnieje też grupa cn=ngo-members,dc=wiki,dc=hackerspace,dc=pl zawierająca wszystkie konta członków stowarzyszenia. Stworzona na jej podstawie ACLka na wiki umożliwia dostęp do strony finansowej stowarzyszenia. Obecnie ta grupa utrzymywana jest ręcznie, bo jest tymczasowa.
Chcę zmienić istniejącą grupę cn=admin,dc=wiki,dc=hackerspace,dc=pl na cn=wiki-admin,ou=Group,dc=hackerspace,dc=pl oraz przekonfigurować dokuwiki, żeby korzystała z ou=Group,dc=hackerspace,dc=pl
Aktualnie dostęp do odczytu do całego drzewa mają wszyscy, nawet użytkownicy nieautoryzowani - jedynym wyjątkiem jest hasło, gdzie dostęp masz (również do zapisu) tylko do swojego po udanej autoryzacji, albo każdy by próbować się zalogować (odpowiedź typu tak/nie, nie ma odczytu). Wszelkie zmiany może dokonywać wyłącznie użytkownik administracyjny. Jest to realizowane następującym ACL:
access to * attrs=userPassword by self write by * auth access to * by * read
Aktualnie z usługi korzystają:
Staging / Mini - Backup \ restore HowTo
LDAP postawiony na zbigniewie i b-p służy do celów produkcyjnych. Jeśli ktoś nie czuje się pewnie ze zmianą, którą chce wprowadzić, do dyspozycji jest wirtualka ldap-staging (10.13.37.9) dostępna w Zoo.
Procedura przygotowania staging wygląda następująco:
- na serwerze produkcyjnym wykonujesz 'wydmuszkę' ldap, która nie zawiera danych wrazliwych, typu, hasła, hashe mifare:
# ldapsearch -x | head -n -5 > ldap-$(date +%F).ldif
- logujesz się na ldap-staging i orientujesz, czy nikt inny nie przeprowadza testów
# who
- zatrzymujesz slapd
# rc-service slapd stop
- sprawdzasz, czy plik konfiguracyjny slapd pokrywa się w istotnych kwestiach z konfiguracją serwera, z którego zgrana była wydmuszka. Następnie czyścisz obecną bazę ldapa:
rm /var/lib/openldap-data/*
- wgrywasz wydmuszkę jako user ldap:
# sudo -u ldap slapadd -vl ldap-$(date +%F).ldiff
- na pewno, pokaże się błąd, że brakuje niektórych atrybutów, np:
"############## 71.06% eta 09s elapsed 22s spd 1.5 k/s added: "ou=Boxen,dc=hackerspace,dc=pl" (0000007e) 50bac69a Entry (cn=proliant,ou=Boxen,dc=hackerspace,dc=pl): object class 'simpleSecurityObject' requires attribute 'userPassword' slapadd: dn="cn=proliant,ou=Boxen,dc=hackerspace,dc=pl" (line=3143): (65) object class 'simpleSecurityObject' requires attribute 'userPassword'
- dopisz odpowiedni atrybut do swojej 'wydmuszki' (ldiff'a) - dla powyższego przykładu w linii 3143:
userPassword: test
- czyścimy ponownie /var/lib/openldap-data/ i wgrywamy wydmuszkę do skutku. Po wgraniu ldiff'a w całości (100% sygnalizowane przez slapadd), startujemy slapd:
#rc-service slapd start
- W razie problemów, włącz debug w /etc/conf.d/slapd do zmiennej OPTS dopisując parametr -d i informacje, które Cie interesują (do znalezienia w man slapd.conf). Przykładowy OPTS z debugiem:
OPTS="${OPTS_CONF} -h 'ldaps:// ldap:// ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock' -d conns filter config ACL stats stats2 shell parse"
And let the hack fest begin!
Planowana funkcjonalność:
Pytania: