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, 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
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