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設定可以看這篇文章

http://www.libthomas.org/~thomas/wp/?p=53 還有這篇

caramels 發表在 痞客邦 PIXNET 留言(3) 人氣()


留言列表 (3)

發表留言
  • gatto
  • 想請教domain name填寫

    您好:
    想請教你關於config.ldif中domain name該如何填寫的問題。
    我的server網址是****.thu.edu.tw,那我在檔案中是不是該將cn=admin,dc=home,dc=local改成cn=admin,dc=thu,dc=edu,dc=tw
  • caramels
  • 是地,但是要看你的狀況而定喔
  • 訪客
  • 你說的 olcRootPW 只能放明碼,但是我可以放 SSHA 加密的編碼。