OS:LINUX ubuntu server 9.10
apt-get install slapd ldap-utils libnss-ldap libpam-ldap 4.7db-util
安裝好後 開始載入設定檔
ls /etc/ldap/schema/*.ldif | xargs -I {} sudo ldapadd -Y EXTERNAL -H ldapi:/// -f {}
設一個data檔案夾 並新增一個config.ldif
cd /etc/ldap
mkdir data
cd /etc/ldap/data
config.ldif內容如下
# Load modules for database type
dn: cn=module,cn=config
objectclass: olcModuleList
cn: module
olcModuleLoad: back_bdb.la
# Create directory database
dn: olcDatabase=bdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcBdbConfig
olcDatabase: bdb
# Domain name (e.g. caramel.home.local)
olcSuffix: dc=caramel,dc=home,dc=local
# Location on system where database is stored
olcDbDirectory: /var/lib/ldap
# Manager of the database
olcRootDN: cn=admin,dc=caramel,dc=home,dc=local
olcRootPW: 1234
# Indices in database to speed up searches
olcDbIndex: uid pres,eq
olcDbIndex: cn,sn,mail pres,eq,approx,sub
olcDbIndex: objectClass eq
# Allow users to change their own password
# Allow anonymous to authenciate against the password
# Allow admin to change anyone's password
olcAccess: to attrs=userPassword
by self write
by anonymous auth
by dn.base="cn=admin,dc=caramel,dc=home,dc=local" write
by * none
# Allow users to change their own record
# Allow anyone to read directory
olcAccess: to *
by self write
by dn.base="cn=admin,dc=caramel,dc=homelinux,dc=net" write
by * read
ldif規則很嚴謹
每個dn段落都要用空白列格開(enter) 最後一行可以不需要 這非常重要
無論你在那看到的ldif檔 都是這樣的規則 本網頁有時險示有分開 但是實際確連在一起 請記得分開!!
by語句前面要有兩個半行空白 少一個多一個都不行
olcRootDN: cn=admin,dc=home,dc=local
olcRootPW: admin
上面兩句代表root帳號與密碼 每個出現的dc=home,dc=local 都要一致
密碼加密可用slappasswd指令產生 不過olcRootPW要放明碼 所以要怎麼加密還不知道
如果輸入格式有問題 後面的輸入people.ldif部份就會一直出現不正確的審核(49)
出現這樣的問題 就打
dpkg-reconfigure slapd
然後選NO 就可以reset configure 可以在重做最初的步驟
domain name有時用真的可用http連的domain 它會出現(53)的錯誤 應該是有衝突
將config.ldif設定檔輸入
ldapadd -Y EXTERNAL -H ldapi:/// -f config.ldif
接下來 新增node.ldif檔
# Create top-level object in domain
dn: dc=caramel,dc=home,dc=local
objectClass: top
objectClass: dcObject
objectclass: organization
o: caramel.home.local
dc: caramel
description: Home network
dn: ou=login,dc=caramel,dc=home,dc=local
objectClass: organizationalUnit
ou: login
dn: ou=user,ou=login,dc=caramel,dc=home,dc=local
objectClass: organizationalUnit
ou: user
dn: ou=group,ou=login,dc=caramel,dc=home,dc=local
objectClass: organizationalUnit
ou: group
dn: ou=company,dc=caramel,dc=home,dc=local
objectClass: organizationalUnit
ou: company
dn: ou=unit,ou=company,dc=caramel,dc=home,dc=local
objectClass: organizationalUnit
ou: unit
dn: ou=mis,ou=unit,ou=company,dc=caramel,dc=home,dc=local
objectClass: organizationalUnit
ou: mis
dn: ou=account,ou=unit,ou=company,dc=caramel,dc=home,dc=local
objectClass: organizationalUnit
ou: account
dn: ou=hr,ou=unit,ou=company,dc=caramel,dc=home,dc=local
objectClass: organizationalUnit
ou: hr
dn: ou=customer,ou=company,dc=caramel,dc=home,dc=local
objectClass: organizationalUnit
ou: customer
新增
ldapadd -x -D cn=admin,dc=caramel,dc=home,dc=local -w 1234 -f node.ldif
如果要清空上面的輸入 要由小到大刪
ldapdelete -x -D cn=admin,dc=caramel,dc=home,dc=local -w 1234 ou=hr,ou=unit,ou=company,dc=caramel,dc=home,dc=local
ldapdelete -x -D cn=admin,dc=caramel,dc=home,dc=local -w 1234 ou=account,ou=unit,ou=company,dc=caramel,dc=home,dc=local
...
或者直接由頭 然後加-r -v刪
ldapdelete -x -r -v -D cn=admin,dc=caramel,dc=home,dc=local -w 1234 dc=caramel,dc=home,dc=local
查詢
ldapsearch -x -b dc=caramel,dc=home,dc=local
開啟與關閉ldap server
/etc/init.d/slapd start
/etc/init.d/slapd stop
離線增加檔案 (ldapadd是要在server開啟時使用 slapadd是關閉時使用)
slapadd -v -l unit.ldif
修改
ldapmodify -x -w 1234 -D cn=admin,dc=caramel,dc=home,dc=local -f modify.ldif
如果有遇到invaild syntax(21) additional info: objectClass: value #0 invalid per syntax的問題
就在執行一次
ls /etc/ldap/schema/*.ldif | xargs -I {} sudo ldapadd -Y EXTERNAL -H ldapi:/// -f {}
可能是objectclass的問題 沒有schema檔可以參考
其它的錯誤碼
http://www.zytrax.com/books/ldap/ch12/
2. 與outlook做結合
在新增使用者資訊
新增person.ldif檔
dn: cn=samuel,ou=mis,ou=unit,ou=company,dc=caramel,dc=home,dc=local
cn: samuel
sn: N/A
objectclass: person
objectclass: inetOrgPerson
givenName: samuel
mail: caramels@gmail.com
telephoneNumber: 02-12345678
mobile: 0912345678
postalAddress: kaohsiung
postalCode: 832
ou: mis
o: caramel.home.local
labeledURI: http://caramel.homelinux.net/
title: asistant
加入
ldapadd -x -v -D cn=admin,dc=caramel,dc=home,dc=local -w 1234 -f person.ldif
接著用windows的outlook 2003 電子郵件帳號->新增通訊錄->伺服名稱192.168.1.4->其它設定->搜尋基礎填上
ou=company,dc=caramel,dc=home,dc=local
然後重開outlook 按ctrl+shift+B 在通訊錄上 搜尋項目上名稱打samuel 然後就會搜尋到我們person.ldif裡的資訊
3與login做結合
新增login.ldif檔
#設定 samuel login gidNumber is associated with group gecos is fullname
dn: cn=uid000001,ou=user,ou=login,dc=caramel,dc=home,dc=local
uid:uid000001
cn:uid000001
objectClass: account
objectClass: posixAccount
objectClass: shadowAccount
userPassword: 1234
shadowLastChange: 11108
shadowMax: 99999
shadowWarning: 7
shadowFlag: 0
loginShell: /bin/bash
uidNumber: 600
gidNumber: 510
homeDirectory: /home/uid000001
gecos: samuel hsin
加入
ldapadd -x -v -D cn=admin,dc=caramel,dc=home,dc=local -w 1234 -f login.ldif
新增group.ldif檔
#Human Resource
dn: cn=hr,ou=group,ou=login,dc=caramel,dc=home,dc=local
objectClass: posixGroup
cn: hr
gidNumber: 510
#MIS
dn: cn=mis,ou=group,ou=login,dc=caramel,dc=home,dc=local
objectClass: posixGroup
cn: mis
gidNumber: 511
#Account
dn: cn=account,ou=group,ou=login,dc=caramel,dc=home,dc=local
objectClass: posixGroup
cn: account
gidNumber: 512
加入
ldapadd -x -v -D cn=admin,dc=caramel,dc=home,dc=local -w 1234 -f group.ldif
在另一台電腦 安裝
apt-get install ldap-auth-client libpam-ldap libnss-ldap libpam-modules libpam-cracklib libpam-ccreds libpam-mount auth-client-config
安裝會跑出輸入畫面 我的設定如下
ldapi://192.168.1.4
ou=user,ou=login,dc=caramel,dc=home,dc=local
cn=admin,dc=caramel,dc=home,dc=local
http://cworld.wikidot.com/adm:ubuntu-ldap-client-setup 主要client設定可以看這篇文章
留言列表