OpenLDAP在LINUX下的安裝說明-修訂版本

網上找了很多相關的安裝說明,但是很多都命令不對,或者不正確,現在我做了一些修改,供大家參考。


安裝環境:
redhat9.0
安裝所需軟件(都是以源碼的方式存在的)
openldap-2.1.29    hrrp://www.openldap.org
Derkeley DB 4.2.52  http://www.sleepycat.com


安裝步驟:
(確認是用root用戶登錄)

1、由於openldap需要Berkeley DB來存放數據,所以先安裝Berkeley DB 4.2.52。

   解壓 
   #tar -zxvf  db-4.2.52.NC.tar.gz
   解壓完成後,會生成一個db-4.2.52.NC的目錄,進入該目錄下的build_unix目錄,執行命令進行配置安裝。
   #../dist/configure  --prefix=/usr/local/BerkeleyDB (將Derkeley DB安裝到/usr/local/DerkeleyDB目錄下)。
   #make
   #make install
   (此處修改)安裝完成話,要把/usr/local/BerkeleyDB/lib的庫路徑加到/etc/ld.so.conf文件內,添加完成後執行一次ldconfig,使配置文件生效。(路徑添加到include那後的最後面,並有一個空格,每次更新配置文件的時候,都需要ldconfig一遍)
2、安裝openLDAP

   解壓 
   #tar -zxvf openldap-2.1.29.tgz
   解壓後生成一個openldap-2.1.29目錄,進入該目錄執行以下命令進行配置安裝。
   #env CPPFLAGS="-I/usr/local/BerkeleyDB/include" LDFLAGS="-L/usr/local/BerkeleyDB/lib"
    ./configure --prefix=/usr/local/openldap --enable-ldbm  --enable-bdb=no  (注意路徑是DB的正確路徑,/usr/local/****/include)

    (注意以上的配置語句,要配置資料庫的include和lib路徑,否則在配置到資料庫、相關內容時會提示Berkeley DB版本不兼容,
    並中段配置。如果沒有--enbale-ldbm=選項,在make test時會提示ldbm找不到)
   #make depend
   #make 
   #make test
   在make test 的時候如果沒有出現錯誤,就可以安裝了,如果有什麼錯誤,去看看以上內容,有沒有全部都作。
   開始安裝
   #make install
   安裝完成之後,在/usr/local/目錄下將會出現openldap文件夾。
   
3、現在相關的軟件已經安裝完成了,現在可以進行配置了。
   配置文件在軟件的安裝目錄的etc/openldap下,主要的是slapd.comf和ldap.conf。在進行配置之前最好先將要配置的文件備份一份。
   先配置slapd.conf文件。
   在配置文件中添加:
   include /usr/local/openldap/etc/openldap/schema/core.schema
   include /usr/local/openldap/etc/openldap/schema/corba.schema
   include /usr/local/openldap/etc/openldap/schema/cosine.schema
   include /usr/local/openldap/etc/openldap/schema/inetorgperson.schema
   include /usr/local/openldap/etc/openldap/schema/misc.schema
   include /usr/local/openldap/etc/openldap/schema/openldap.schema
   include /usr/local/openldap/etc/openldap/schema/nis.schema
   include /usr/local/openldap/etc/openldap/schema/java.schema (裏面路徑如果和安裝的不一致需要修改)
   (包含文件按一定順序,因爲文件裏面的屬性存在附屬關係,如果順序不對服務會出現問題)
   
   在argsfile    /usr/local/openldap/var/slapd.args下面添加
   loglevel 1
   增加了日誌功能,需修改syslog配置文件,在文件中增加一項:local4.* /var/log/ldap.log 
   日誌的級別如下:
         Debugging Levels Level Description
              -1 enable all debugging
               0 no debugging
               1 trace function calls
               2 debug packet handling
               4 heavy trace debugging
               8 connection management
              16 print out packets sent and received
              32 search filter processing
              64 configuration file processing
             128 access control list processing
             256 stats log connections/operations/results
             512 stats log entries sent
            1024 print communication with shell backends
            2048 print entry parsing debugging 
     默認的情況下是256
   
   將文件中的
   suffix        "dc=my-domain,dc=com"
   rootdn        "cn=Manager,dc=my-domain,dc=com" 
   修改成自己的目錄根,指定自己根的管理員。
   rootdw 是管理員的密碼,默認密碼是secret,這裏可以使用MD5加密。
   
   現在已經能成功的啓動服務了。但是沒有對目錄訪問的權限進行設定:
   access to attr=userPassword
           by self write
           by  anonymous auth 
   指的是:userPassword只能自己修改,有效驗證用戶查詢,如果加上
          by dn="cn=root,dc=it,dc=com"
   那樣cn=root,dc=it,dc=com也可以更改其他人的userPassword.
   access to * 
           by self write
       by self read
  指的是所有的信息都可以自己查詢,自己修改。
  access to dn=".*,dc=it,dc=com"
          by self write
      by * read
  允許用戶訪問所有沒有被控制訪問限制的信息。
  具體詳細用法請查看www.openldap.org。
  
  
  到現在openldap已經配置完成了,進入安裝目錄的libexec下,執行
  #./sladp (注意是sladp,不是sldap)
  如果沒有提示什麼出錯信息,直接返回shell狀態,就說明服務器正常啓動了,
  你可以查詢日誌或用ps -aux查看。或用以下命令查詢服務器。
  
  執行下面的命令來查看一下服務是不是正常啓動了啓動。
  #ldapsearch -x -b "dc=it,dc=com"(你在配置文件中定義的自己的根目錄),如果反悔一些信息那就
  是啓動正常。  (如果沒有ldapsearch命令,請根據一下內容進行安裝;)
  安裝ldapsearch命令:

先查看一下,系統有沒有該命令。

1
which ldapsearch

如果沒有的話安裝一個

1
2
yum list "*ldap*" 
yum install openldap-clients

再查看一下,是否安裝好了。

1
2
rpm -ql openldap-clients
which ldapsearch


可以通過查看進程的方式確定是否LDAP已經啓動

命令如下

# ps -ef|grep slapd


有第一行如示顯示,就代表已經啓動了。



  用下面的、命令、來查看一下389端口是不是已經被監聽了
  #netstat -an | grep 389
  
  如果沒有提示什麼錯誤,但是服務也沒有啓動,就可以用
  #./sladp -d 256
  可以看到提示的什麼信息,一般都是配置文件錯誤,根據錯誤信息好好查看一下配置文件。
  一定要注意配置文件中的空格,該有的一定要有,有的時候看到整個配置文件沒有什麼錯誤,
  可就事啓動不了,有可能是有的地方前面沒有加上空格。
  
  
  配置ldap.conf文件。該文檔相當簡單,其實不和配置也能正常操作。
  只要將BASE dc=it,dc=com 設置成爲自己的目錄起點
  
4、現在服務器已經正常運作了,可以錄入信息了。信息的錄入方法有三種,一種是手工錄入,一種是.ldif文件格式錄入,一種是腳本
  自動錄入。我們先從最基礎的手工錄入開始介紹,瞭解錄入信息的格式。明白了手工錄入的格式,其它兩種方式都很容易明白。
  信息錄入用到ldapadd這個程序,他存在於安裝目錄下的bin中,具體用法如下:
  第一步要建立DN:
  #ldapadd -x -D  'cn=root,dc=it,dc=com' -W   (-x 表示簡單驗證,-D表示指定目錄,-W表示彈出密碼輸入提示)
  Enter LDAP Password              (提示輸入管理員密碼,在sladp.conf中已經配置的那個密碼)
  dn: dc=it,dc=com
  objectClass: dcObject
  objectClass: organization
  dc:it
  o:Corportion
  description:d Corporation
  (注意:每行後面一定不要有空格)
  
  第二步是建立接點:
  #ldapadd -x -D 'cn=root,dc=it,dc=com' -W
  dn:uid=zyx2,dc=it,dc=com
  objectClass:person
  objectClass:organizationalPerson
  objectClass:inetOrgPerson
  uid:zyx2
  cn:zyx2
  sn:zyx2
  mail:[email protected]
  userPassword:zyx
  telephoneNumber:13913991399
  homePhone:01087788888.
  
  輸入完所有的信息後,安Ctrl+d結束存盤。如果出現錯誤信息,請查一下對象類和屬性的對應關係有沒有輸入錯誤。
  這裏面最容易出錯的地方是對象類和屬性的對應關係出錯,對象類和屬性是在schema文檔中定義的。它們之間的關係是這樣的,
  對象類中有些屬性是必選的,有些屬性是可選的。錄入信息的屬性必須在對象類中有定義才能用。
  比如:inetOrgPerson模式包括以下信息:
  departmentNumber
  employeeType
  givenName
  audio
  businessCategory
  carLicense
  displayName
  emlpyeeNumber
  homePhone
  homePostalAddress
  manager
  photo
  roomNumber
  等等,詳見inetorgperson.schema。
  schema是openldap中的關鍵,一定要好好查看安裝目錄下的/etc/schema中的文件。掌握schema的格式和常用屬性所對應的類。
  
  
  介紹完了手工錄入的方法,現在介紹第二種方法,用.ldif文件格式錄入。用文字編輯工具寫好.ldif文件。
  下面是一個完成的test.ldif文件。

dn: dc=it,dc=com
dc: it
description: d Corporation
objectClass: dcObject
objectClass: organization
o: Corporation

dn: uid=zyx, dc=it,dc=com
telephoneNumber: 13810246737
mail: [email protected]
userPassword:: sssssssss
uid: zyx
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
homePhone: 12345678901
sn: zyx
cn: zyx

dn: ou=people, dc=it,dc=com
userPassword:: c3Rhcnhpbmc=
ou: people
description: User Info
objectClass: top
objectClass: organizationalUnit

dn: uid=1,ou=people, dc=it,dc=com
telephoneNumber: 13800000414
userPassword:: sssssssss
uid: 1
jpegPhoto:: MTIzNDU2Nzg5MA==
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
sn: hhh
cn: hhh

dn: cn=root, dc=it,dc=com
mail: [email protected]
userPassword:: secret
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
sn: root
cn: root

dn: uid=3,ou=people, dc=it,dc=com
telephoneNumber: 13810241111
mail: [email protected]
userPassword:: sssssssss
uid: 3
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
sn: sss
cn: sss

dn: uid=qq, dc=it,dc=com
telephoneNumber: 65498732102
mail: [email protected]
userPassword::sssssssss
uid: qq
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
sn: qq
cn: qq

dn: uid=zyx,ou=people, dc=it,dc=com
telephoneNumber: 13810246737
mail: [email protected]
userPassword:: sssssssss
uid: zyx
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
homePhone: 12345678901
sn: 張彥星
cn: zyx

dn: ou=managers, dc=it,dc=com
userPassword:: sssssssss
ou: managers
description: mangers Info
objectClass: top
objectClass: organizationalUnit

dn: cn=starxing,ou=managers, dc=it,dc=com
mail: [email protected]
userPassword:: sssssssss
description: mananger for people
objectClass: person
objectClass: organizationalPerson
objectClass: top
objectClass: inetOrgPerson
sn: staring
cn: starxing

dn: ou=people,ou=managers, dc=it,dc=com
userPassword:: sssssssss
ou: people
objectClass: top
objectClass: organizationalUnit
description: User Info

dn: uid=1,ou=people,ou=managers, dc=it,dc=com
telephoneNumber: 13800000414
uid: 1
userPassword:: sssssssss
objectClass: top
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
jpegPhoto:: MTIzNDU2Nzg5MA==
sn: hhh
cn: hhh

dn: uid=3,ou=people,ou=managers, dc=it,dc=com
telephoneNumber: 13810241111
mail: [email protected]
uid: 3
userPassword:: sssssssss
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
sn: ssssss
cn: ssssss

dn: uid=zyx,ou=people,ou=managers, dc=it,dc=com
telephoneNumber: 13810246737
mail: [email protected]
uid: zyx
userPassword:: sssssssss
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
homePhone: 12345678901
sn: zyx
cn: zyx
   再次提醒一下,每行的最後不要有空格,並且不能存在同一個DN的記錄,執行以下命令將test.ldif文件中的內容加載到
   openldap中。
   #ldapadd -x -D "cn=root,dc=it,dc=com" -W -f /root/test.ldif   (-f 表示用文件錄入信息, /root/test.ldif指的是文件的存在地方)
   
   第三種是用腳本錄入方式,需要自己編寫腳本。也可以使用現有的工具,比如:phpldapadmin。
   
   
   
   
   下面介紹一下openldap的常用命令。
   1 ldapsearch
     查詢本人記錄
     ldapsearch -x -D 'cn=root,dc=it,dc=com' -W -b 'uid=zyx,dc=it,dc=com'
     查詢一個ou記錄(包含成員記錄)
     ldapsearch -x -D 'cn=root,dc=it,dc=com' -W -b 'ou=people,dc=it,dc=com'
   2 ldapdelete
   #ldapdelete -x -D 'cn=root,dc=it,dc=com' -W 'uid=zyx,dc=it,dc=com'
   這樣就可以刪除'uid=zyx,dc=it,dc=com'記錄了,應該注意一點,如果o或ou中有成員是不能刪除的。
   3 ldappasswd
   #ldappasswd -x -D 'cm=root,dc=it,dc=com' -W 'uid=zyx,dc=it,dc=com' -S
   New password:
   Re-enter new password:
   Enter LDAP Password:
   就可以更改密碼了,如果原來記錄中沒有密碼,將會自動生成一個userPassword。
   4  ldapmodify
   #ldapmodify -x -D "cn=root,dc=it,dc=com" -W -f modify.ldif
   將modify.ldif中的記錄更新原有的記錄。
   
 啓用sasl驗證 
 前提是你在系統中安裝了sasl認證庫,並在編譯openldap時支持它,默認就支持了。到http://asg.web.cmu.edu/cyrus/下載。
 安裝好之後,需要在sasl中建立相應的帳號,用以下命令可完成。 
 # saslpasswd2 -c test 
 
 接着配置slapd.conf文件,加入以下內容。 
  sasl-regexp 
  uid=(.*),cn=.*,cn=auth 
  uid=$1,dc=it,dc=com 
 ok,重啓服務器使配置文件生效。這個配置是最大權限的配置,如果要細化請查閱相關文檔。 
 用以下命令測試。 
 # ldapsearch -U qq -b 'uid=qq,dc=it,dc=com' -D 'dc=it,dc=com' -Y DIGEST-MD5 採用digest-md5驗證 
 提示密碼,輸入saslpasswd2的密碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章