OpenLdap ja Samba
Sissejuhatus
OpenLDAP on LDAP-i avatud lähtekoodiga implementatsioon, mis võimaldab keskhaldusega standartset kataloogiteenust kasutajate, rühmade, seadmete ja muude andmete haldamiseks. OpenLDAP-i kasutamise muudab praktiliseks tema liidestatus erinevate rakendustega.
Samba on failiserveri tarkvara, mis implementeerib SMB/CIFS protokolli. Selle abil on võimalik faile ja printereid jagada nii Windowsi kui UNIX-i laadsete operatsioonisüsteemide jaoks.
Eeldused
Antud lahendus on testitud Ubuntu 9.10 Serveril.
Eeltab kasutaja varasemat kokkupuudet Unix/Linux/BSD käsustikuga ja arusaamist Unix-i laadsete operatsioonisüsteemide toimimisest.
Installeerimine
Esmalt logime ennast juurkasutaja õigustesse. Selleks anname korralduse:
sudo -i
Seejärel uuendame tarkvara nimekirjad, milleks anname korralduse:
apt-get update
Nüüd saame asuda OpenLDAP-i ja Sambat installeerima. Selleks anname korralduse:
apt-get -y install slapd ldap-utils samba samba-doc smbldap-tools smbclient
Installeerimise käigus paigaldati järgnevad pakkid:
- slapd - stand-alone LDAP daemon (server)
- ldap-utils - kasulikud utiliidid LDAP kataloogi administreerimiseks
- samba - Samba 3 versiooni server
- samba-doc - Samba man lehel mittesisalduv dokumentatsioon
- smbldap-tools - kogum kasulikest skriptidest samba ja LDAP-i administreerimiseks
- smbclient - Samba klient
Seadistamine
OpenLDAP-i seadistamine
Liigume OpenLDAP-i konfi kataloogi käsuga:
cd /etc/ldap
Lisame mõned schemad, mida võib vaja minna:
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
Nüüd seadistame andmebaasi backend mooduli. Selleks tuleb luua seadistamise skript:
nano backdb.ldif
Konfi faili tuleb sisestada järgmised kirjed, kus:
- olcSuffix: dc=example,dc=com - example ja com tuleb asendada enda domeeniga;
- olcRootDN: cn=admin,dc=example,dc=com - admin tuleb asendada enda poolt soovitud LDAP-i administraatori kasutajanimega ning example ja com tuleb asendada enda domeeniga;
- olcRootPW: example - example tuleb asendada enda poolt soovitud LDAP-i administraatori konto parooliga.
# Load dynamic backend modules dn: cn=module{0},cn=config objectClass: olcModuleList cn: module olcModulepath: /usr/lib/ldap olcModuleload: {0}back_hdb # Create the database dn: olcDatabase={1}hdb,cn=config objectClass: olcDatabaseConfig objectClass: olcHdbConfig olcDatabase: {1}hdb olcDbDirectory: /var/lib/ldap olcSuffix: dc=example,dc=com olcRootDN: cn=admin,dc=example,dc=com olcRootPW: example olcDbConfig: {0}set_cachesize 0 2097152 0 olcDbConfig: {1}set_lk_max_objects 1500 olcDbConfig: {2}set_lk_max_locks 1500 olcDbConfig: {3}set_lk_max_lockers 1500 olcLastMod: TRUE olcDbCheckpoint: 512 30 olcDbIndex: uid pres,eq olcDbIndex: cn,sn,mail pres,eq,approx,sub olcDbIndex: objectClass eq
Järgneva käsuga laeme mooduli ja initsialiseerime andmebaasi:
ldapadd -Y EXTERNAL -H ldapi:/// -f backdb.ldif
Nüüd loome krüpteeritud administraatori konto parooli räsi:
slappasswd -h {MD5}
- Sisestage soovitud parool 2 korda ja kopeeriga genereeritud räsi.
Loome baas dn-i ja administraatori konto OpenLDAP serverile:
nano base.ldif
Konfi faili tuleb sisestada järgnevad kirjed, kus:
- dn: dc=example,dc=com - example ja com tuleb asendada enda domeeni nimega;
- o: example.com - example.com tuleb asendada enda domeeni nimega;
- dc: example - example asendada domeeni nimega;
- dn: cn=admin,dc=example,dc=com - admin asendada administraatori kasutajanimega, example ja com asendada enda domeeni nimega;
- cn: admin - admin asendada administraatori kasutajanimega;
- userPassword: {MD5}Gnmk1g3mcY6OWzJuM4rlMw== - {MD5}Gnmk1g3mcY6OWzJuM4rlMw== asendada genereeritud ja kopeeritud parooli räsiga
dn: dc=example,dc=com objectClass: dcObject objectclass: organization o: example.com dc: example description: My LDAP Root dn: cn=admin,dc=example,dc=com objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin userPassword: {MD5}Gnmk1g3mcY6OWzJuM4rlMw== description: LDAP administrator
Laeme tekitatud konfiguratsiooni skripti sisse:
ldapadd -Y EXTERNAL -H ldapi:/// -f base.ldif
Muudame süsteemi ACL-e. OpenLDAP installimisel seadistatakse mõned ACL-id, mis ei võimalda näiteks phpldapadmin liidesel kataloogiteenusega suhelda. Seega nüüd eemaldame need piirangud ja seadistame OpenLDAP-i muudatuste läbiviimisel tuvastama muudatuste läbiviijat ja õigusi. Nüüdsest ei saa endm teha kataloogi muudatusi vanal viisil ldapadd -Y EXTERNAL -H ldapi:// -f fail, vaid nüüdsest ldapadd -x -Y EXTERNAL -H ldapi:// -D cn=admin,cn=config -W -f fail kujul, mille puhul admin tuleb asendada administraatori kasutajanimega ja peale käsu sisestamist küsitakse parooli.
Loome faili config.ldif:
nano config.ldif
Konfi faili tuleb sisestada järgnevad kirjed:
- olcRootDN: cn=admin,cn=config - admin tuleb asendada valitud administraatori kasutajanimega;
- olcRootPW: {MD5}Gnmk1g3mcY6OWzJuM4rlMw== - {MD5}Gnmk1g3mcY6OWzJuM4rlMw== tuleb asendada genereeritud räsiga;
dn: cn=config changetype: modify delete: olcAuthzRegexp dn: olcDatabase={-1}frontend,cn=config changetype: modify delete: olcAccess dn: olcDatabase={0}config,cn=config changetype: modify delete: olcRootDN dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootDN olcRootDN: cn=admin,cn=config dn: olcDatabase={0}config,cn=config changetype: modify add: olcRootPW olcRootPW: {MD5}Gnmk1g3mcY6OWzJuM4rlMw== dn: olcDatabase={0}config,cn=config changetype: modify delete: olcAccess
Laeme config.ldif seadistused OpenLDAP serverisse:
ldapadd -Y EXTERNAL -H ldapi:/// -f config.ldif
Nüüd on vaja lisada veel mõned acl-id kataloogiteenusele, root kasutajal on alati lugemise ja kirjutamise õigus, kuid see on baas acl, mis oli alati OpenLDAP-iga kaasas.
Selleks loome faili acl.ldif:
nano acl.ldif
Konfi faili tuleb sisestada järgnevad kirjed:
- olcAccess: to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=example,dc=com" write by anonymous auth by self write by * none - admin tuleb asendada validud administraatori kasutajanimega, example ja com domeeninimega;
- olcAccess: to * by dn="cn=admin,dc=example,dc=com" write by * read - admin tuleb asendada validud administraatori kasutajanimega, example ja com domeeninimega.
dn: olcDatabase={1}hdb,cn=config add: olcAccess olcAccess: to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=example,dc=com" write by anonymous auth by self write by * none olcAccess: to dn.base="" by * read olcAccess: to * by dn="cn=admin,dc=example,dc=com" write by * read
Nüüd laeme acl.ldif konfi OpenLDAP-i:
- cn=admin - admin asendada valitud OpenLDAP administraatori kasutajanimega.
ldapmodify -x -D cn=admin,cn=config -W -f acl.ldif
Lõpetuseks taaskäivitame LDAP serveri käsuga:
/etc/init.d/slapd restart
Ja nüüd peaks OpenLDAP kataloogiteenus olema töökorras.
Samba seadistamine
Selleks, et kasutada LDAP-i Samba autentimisvahendina, peab LDAP-i objektidele lisama Samba atribuute, mis on kirjeldatud samba.schema failis. Paketist samba-doc on võimalik nimetatud fail lahti pakkida ja kopeerida /etc/ldap/schema kausta.
Kopeerime samba.schema.gz faili LDAP-i konfiguratsiooni schema kausta käsuga:
cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema/
Pakime lahti eelnevalt kopeeritud faili:
gzip -d /etc/ldap/schema/samba.schema.gz
Loome schema_convert.conf nimelise konfiguratsiooni faili:
nano schema_convert.conf
Sisestame faili järgnevad read:
include /etc/ldap/schema/core.schema include /etc/ldap/schema/collective.schema include /etc/ldap/schema/corba.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/duaconf.schema include /etc/ldap/schema/dyngroup.schema include /etc/ldap/schema/inetorgperson.schema include /etc/ldap/schema/java.schema include /etc/ldap/schema/misc.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/openldap.schema include /etc/ldap/schema/ppolicy.schema include /etc/ldap/schema/samba.schema
Loome ajutise kausta:
mkdir /tmp/ldif_output
Nüüd kasutame slapcat käsku schema failide ldif failideks konvertimiseks:
slapcat -f schema_convert.conf -F /tmp/ldif_output -n0 -s "cn={12}samba,cn=schema,cn=config" > /tmp/samba.ldif
Muudame /tmp/samba.ldif faili sisu. Selleks avame faili:
nano /tmp/samba.ldif
- muudame järgnevaid ridu:
dn: cn=samba,cn=schema,cn=config ... cn: samba
- ja kustutame järgnevad read faili lõpust:
structuralObjectClass: olcSchemaConfig entryUUID: b53b75ca-083f-102d-9fff-2f64fd123c95 creatorsName: cn=config createTimestamp: 20080827045234Z entryCSN: 20080827045234.341425Z#000000#000#000000 modifiersName: cn=config modifyTimestamp: 20080827045234Z
- NB! Osad atribuutide väärtused võivad olla teised. Kuid vastavad read tuleb eemaldada ikkagi!
Nüüd lisame ldapadd tööriistaga uue schema kataloogi:
ldapadd -x -D cn=admin,cn=config -W -f /tmp/cn\=samba.ldif
Tekitame Samba indexite konfiguratsioonifaili:
nano samba_indexes.ldif
Sisestame sinna järgnevad kirjed:
dn: olcDatabase={1}hdb,cn=config changetype: modify add: olcDbIndex olcDbIndex: uidNumber eq olcDbIndex: gidNumber eq olcDbIndex: loginShell eq olcDbIndex: uid eq,pres,sub olcDbIndex: memberUid eq,pres,sub olcDbIndex: uniqueMember eq,pres olcDbIndex: sambaSID eq olcDbIndex: sambaPrimaryGroupSID eq olcDbIndex: sambaGroupType eq olcDbIndex: sambaSIDList eq olcDbIndex: sambaDomainName eq olcDbIndex: default sub
Nüüd laeme uued seaded sisse:
ldapmodify -x -D cn=admin,cn=config -W -f samba_indexes.ldif
Kui kõik läks hästi, siis peaksid nägema uusi indexeid käsuga:
ldapsearch -xLLL -D cn=admin,cn=config -x -b cn=config -W olcDatabase={1}hdb
Nüüd seadistama Samba konfiguratsioonifaili. Selleks kopeerime algkonfiguratsioonifaili varufaili:
cp /etc/samba/smb.conf /etc/samba/sample.smb.conf
Nüüd seadistama Samba seaded vastavalt vajadusele. Kõigepealt avame konfiguratsioonifaili ja tühjendame sisu:
nano /etc/samba/smb.conf
Nüüd lisame järgnevad kirjed:
- workgroup = DOMEEN - DOMEEN asendada enda soovitud väärtusega
- interfaces = lo, eth0 - sinna kirjeldada ära, milliste võrgukaartide kaudu Samba serverit kasutatakse. Kui masinal on rohkem, kui 1 võrgukaart, mille kaudu sambat hakatakse kasutama, siis Linux laadsetes tuleks lisada ka teised ethX võrgukaardid.
- ldap admin dn = "cn=admin,dc=example,dc=com" - admin, example ja com asendada enda poolt valitud väärtustega.
- ldap suffix = dc=example,dc=com - example ja com asendada enda poolt valitud väärtustega.
[global] display charset = UTF-8 unix charset = UTF-8 workgroup = DOMEEN server string = %h server (Samba, Ubuntu) interfaces = lo, eth0 bind interfaces only = Yes passwd program = /usr/bin/passwd %u passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* . log level = 3 log file = /var/log/samba/log.%m max log size = 1000 dns proxy = No guest account = nobody #Ldap settings passdb backend = ldapsam:ldap://localhost ldap admin dn = "cn=admin,dc=example,dc=com" ldap group suffix = ou=Groups ldap idmap suffix = ou=Idmap ldap machine suffix = ou=Computers ldap replication sleep = 2000 ldap suffix = dc=example,dc=com ldap ssl = no ldap timeout = 300 ldap user suffix = ou=People usershare allow guests = Yes panic action = /usr/share/samba/panic-action %d #Do not show hidden files. veto files = /.*/ [homes] comment = Home Directories valid users = %S create mask = 0700 directory mask = 0700 browseable = No read only = No
Nüüd taaskäivitame Samba serveri:
/etc/init.d/samba restart
sambaldap-tools seadistamine
Seadistame sambaldap-tools pakki enda keskkonnale sobivaks. Pakk sisaldab konfigureerimisscripti, mis seadistab konfifaili vastavalt sisestatud vajalikele väärtustele. Selleks pakkime pakki lahti andes käsu:
gzip -d /usr/share/doc/smbldap-tools/configure.pl.gz
Ja nüüd käivitame scripti:
perl /usr/share/doc/smbldap-tools/configure.pl
Sisestage vajalikud väärtused.
Nüüd peaks olema tekkinud /etc/smbldap-tools/smbldap.conf ja /etc/smbldap-tools/smbldap_bind.conf konfiguratsioonifailid. Kui on tehtud vigu scripti kasutamisel, siis saab neid konfiguratsiooni faile nüüd ka mõne teksti muutmise programmi nagu nano abil muuta.
Teeme varufaili ennem samba kasutajate, gruppide jne. seadistamist senisest seisust:
slapcat -l backup.ldif
Nüüd lisame Sambale vajalikud kasutajad, grupid jne. kasutades käsku:
smbldap-populate
Ning Sambal on vaja teada ka LDAP administraatori konto parooli, mille saame sisestada käsuga:
- smbpasswd -w parool - parool asendada valitud LDAP-i tegeliku praooliga.
smbpasswd -w parool
Kui LDAP-is juba on kasutajaid, mis peaksid Sambaga audentima, siis saab järgneva käsuga neid Sambale selgeks teha:
- smbpasswd -a kasutajanimi - kasutajanimi asendada reaalse kasutajanimega.
smbpasswd -a kasutajanimi
Kasutatud kirjandus
http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol
http://en.wikipedia.org/wiki/Samba_%28software%29
http://www.openldap.org/project/
https://wiki.itcollege.ee/index.php/OpenLDAP-i_seadistamine
https://wiki.itcollege.ee/index.php/Failiserver_Samba_labor_2
http://www.howtoforge.com/install-and-configure-openldap-on-ubuntu-karmic-koala
https://help.ubuntu.com/9.10/serverguide/C/samba-ldap.html
Autor
Kalev Jõgi