Vaje: LDAP
Postavili bomo strežnik LDAP, na katerem lahko hranimo podatke o uporabnikih in računalnikih.
Predpriprava
- Preberi oziroma ponovi, kaj so LDAP, PAM, name service switch (NSS), Microsoft ActiveDirectory in FusionDirectory.
- Preglej, kako lahko uporabiš LDAP za avtentikacijo uporabnikov pod Linux.
- Reši nalogo
14-preparation-ldap_search
na KPOV Judge.
Naloga
- Namesti in nastavi OpenLDAP.
- Namesti in nastavi FusionDirectory.
- Ustvari dva uporabnika v bazi LDAP.
- Izpiši vse uporabnike z
ldapsearch
. - Izpiši vse uporabnike z imenom Peter in priimkom Zmeda.
- V sistem se prijavi z uporabniškim imenom iz baze LDAP.
Navodila
Zaženemo eno od običajnih virtualk. Najprej namestimo LDAP strežnik
# apt install slapd ldap-utils
in ga (ponovno) nastavimo, saj konfiguracija med namestitvijo preskoči nekaj korakov:
# dpkg-reconfigure slapd
Če boste konfiguracijo pognali še kdaj, najprej pobrišite varnostno kopijo baze v /var/backups/*.ldapdb
. Pomembna vprašanja med konfiguracijo:
- Omit OpenLDAP server configuration? Seveda ne.
- DNS domain name: Izberemo nekaj kratkega, npr.
example.org
. - Database backend to use: Pustimo privzeti
MDB
. - Move old database? Da.
Po ustvarjeni bazi lahko iščemo z
$ ldapsearch -D cn=admin,dc=example,dc=org -W -b dc=example,dc=org
Zastavica -D
nastavi uporabnika, -W
vpraša za geslo, -b
pa nastavi podano bazo kot začetno točko iskanja. Več v priročniku.
FusionDirectory
Za enostavnejše delo z bazo LDAP bomo namestili spletni vmesnik FusionDirectory. Poleg same aplikacije namestimo še pripadajočo shemo za LDAP. Ta med drugim definira tipe atributov in objektov za uporabnike v sistemih POSIX, ki so opisani v RFC 2307.
# apt install fusiondirectory fusiondirectory-schema
Če ob namestitvi ne dobimo spletnega strežnika Apache, ga namestimo ročno. Nato poženemo
# fusiondirectory-insert-schema
da dodamo potrebne vnose v lokalno bazo.
Zaženemo brskalnik in ga usmerimo na http://localhost/fusiondirectory
oziroma http://[IP strežnika LDAP]/fusiondirectory
, če strežnik teče na drugem računalniku. Sledimo navodilom, da nastavimo FusionDirectory. Gumb Next se nahaja v spodnjem desnem kotu. Med drugim FusionDirectory ustvari uporabnika fd-admin
, s katerim dostopamo do spletnega vmesnika.
Na koncu prenesemo konfiguracijo, jo shranimo v datoteko /etc/fusiondirectory/fusiondirectory.conf
in poženemo
# fusiondirectory-setup --check-config
da popravimo lastništvo in dovoljenja konfiguracijske datoteke. V njej je namreč zapisano geslo administratorja LDAP, s katerim se FusionDirectory poveže na strežnik.
V spletnem vmesniku ustvarimo dva uporabnika, ki jima nastavimo tudi račun Unix. To nam bo kasneje omogočilo prijavo v sistem z uporabo podatkov iz LDAP. Poskrbeti boste morali tudi, da obstaja domači imenik za vsakega uporabnika. Lahko ga ustvarite ročno, ali pa uporabite modul pam_mkhomedir, ki ga v Debianu najdete v paketu libpam-modules
.
NSS in PAM
Namestimo modula za avtentikacijo za PAM in NSS
# apt install libpam-ldapd libnss-ldapd
pri čemer dobimo tudi nslcd, tj. pomožnega demona za poizvedbe LDAP. Na vprašanja med namestitvijo odgovorimo tako:
- LDAP server URI: Nastavimo
ldapi:///
oziromaldap://<IP strežnika LDAP>
, če strežnik ne teče na lokalnem računalniku. - LDAP server search base: Nastavimo izbrano domeno, npr.
dc=example,dc=org
. - Name services to configure: Izberemo
passwd
,group
inshadow
.
Če je šlo vse po sreči, se zdaj lahko prijavijo uporabniki, definirani v bazi LDAP.
Reševanje težav
Če se ne morete prijaviti v sistem z uporabnikom iz baze LDAP, preverite vsebino /var/log/auth.log
. Z ukazom
$ getent passwd
izpišemo uporabnike, ki jih trenutno vidi sistem. Če med njimi ni uporabnikov iz LDAP, preverite vsebino datoteke /etc/nsswitch.conf
.
Težave med testiranjem lahko povzroča tudi demon nscd
, ki predpomni rezultate imenskih storitev; po spremembah ga lahko znova zaženemo s
# service nscd restart
Za imenik, v katerem je baza, je pomembno, da lahko po njem piše uporabnik openldap
. Poleg tega je treba poskrbeti, da pisanja ne bo preprečil apparmor. Popravite datoteko /etc/apparmor.d/usr.sbin.slapd
tako, da dodate vrstico na vižo
/POT/DO/BAZE/** rwk,