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
Installeerimine
Esmalt logime ennast juurkasutaja õigustesse, et saaks mugavalt installeerimisprotsessiga tegeleda. Selleks anname korralduse:
sudo -i
Seejärel tuleks tarkvara nimekirja uuendada, 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
Selleks, et oleks mugav OpenLDAP-i seadistada 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 puhuk 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
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