1. 程式人生 > >Linux下安裝openldap 啟動及配置一站式搞定

Linux下安裝openldap 啟動及配置一站式搞定

外鏈:Tomcat+LDAP完成認證:http://my.oschina.net/xpbug/blog/198765

1、安裝Berkeley DB wget http://download.oracle.com/berkeley-db/db-4.6.21.tar.gz 解壓縮 tar zxvf berkeley-db-4.6.21.tar.gz 配置,編譯,安. 1、 cd db-4.6.21/build_unix/ 2、 ../dist/configure --prefix=/usr/local/berkeleyDB 3、 make 4、 make install 注意:安裝完成後把執行  # cp /usr/local/berkeleyDB/include/* /usr/include/  #  cp /usr/local/berkeleyDB/lib/* /usr/lib/ 2、配置berkeleyDB 環境變數 vi ~/.bash_profile 新增:
CPPFLAGS="-I/usr/local/berkeleyDB/include" export CPPFLAGS LDFLAGS="-L/usr/local/lib -L/usr/local/berkeleyDB/lib -R/usr/local/berkeleyDB/lib" export LDFLAGS LD_LIBRARY_PATH="/usr/local/berkeleyDB/lib" export LD_LIBRARY_PATH 3、安裝openLDAP

       tar -xzvf  openldap-2.4.15.tgz

       cd openldap-2.4.15/

      # ./configure --prefix=/usr/local/openldap

      make depend

      # make

      # make install    錯誤解決: 1、configure: error: Berkeley DB version mismatch  
./configure --enable-bdb --libdir=/usr/local/BerkeleyDB/lib --includedir=/usr/local/BerkeleyDB/include  --prefix=/usr/local/openldap --sysconfdir=/etc/openldap --enable-passwd --enable-wrappers --disable-ipv6 --enable-spasswd --enable-crypt --enable-modules  --enable-accesslog=yes 

2、在 ./configuer時出現錯誤提示:

configure: error: could not locate libtool ltdl.h

解決方法:安裝 libtool-ltdl 及libtool-ltdl-devel包

如果是64位系統,通過yum方式,命令如下,

# yum install libtool-ltdl.x86_64 libtool-ltdl-devel.x86_64
或者: wget  rpm -ivh  3.修改配置檔案,配置一個數據庫   vi /usr/local/openldap/etc/openldap/slapd.conf suffix     "dc=hq3595,dc=com"      rootdn   "cn=Manager,dc=hq3595,dc=com"      rootpw hq3595
    這裡要填定你的域名,客戶端連線的時候要用到的!
定義超級管理員帳號的密碼,這裡使用的是明文儲存(secret即是其密碼)的方式。這是極不安全的,建議使用加密方式儲存,可以使用的加密方式有:CRYPT、MD5、SMD5、SHA和SSHA。產生加密密碼雜湊的方法是使用slappasswd命令,用-h選項指明加密時使用的方式。示例如下:
# /usr/local/openldap/sbin/slappasswd -h {SSHA}
New password:
Re-enter new password:
{SSHA}F6WTMlSbUsQP0JKwB7M/JZSsmHR+g2Ow(把這段覆蓋掉明文密碼即可)
4 啟動LDAP
#/usr/local/openldap/libexec/slapd  -d256  補充:

關於停止slapd,官方給的是:kill -INT 'cat /usr/local/var/slapd.pid'

但是我執行以後提示bash: kill: cat /usr/local/var/slapd.pid: arguments must be process or job IDs 用find /usr -name slapd.pid命令找到了在/usr/local/openldap/var/run/下,把命令改為: kill -INT `cat /usr/local/openldap/var/run/slapd.pid` 重新執行slapd:su root -c /usr/local/openldap/libexec/slapd -d256 建議執行/usr/local/openldap/libexec/slapd -d256 命令,這樣既可以在命令列看到出錯資訊,也可以用Ctrl+C停止程序 5、通過配置檔案匯入資料 編輯檔案:
#建立組Admins
dn: ou=Admins,dc=sogal,dc=com
ou: Admins
objectClass: top
objectClass: organizationalUnit
#建立組Users
dn: ou=Users,dc=sogal,dc=com
ou: Users
objectClass: top
objectClass: organizationalUnit
#建立組下的使用者
dn: uid=testuid,ou=Users,dc=sogal,dc=com
objectClass: inetOrgPerson
uid: testuid
sn: testsn
cn: testcn
mail: [email protected]
userPassword: testpass


/usr/local/openldap/bin/ldapadd -x -W -D "cn=Manager,dc=sogal,dc=com" -f example.ldif    ldif檔案格式規範: (1空行)

dn:(空格) dc=hq3595,dc=com(結尾無空格)

objectclass: (空格)dcObject(結尾無空格)

objectclass: (空格)organization(結尾無空格)

o: (空格)kaspersky(結尾無空格)

dc:(空格) test(結尾無空格)

(1空行)

dn: (空格)cn=test,dc=mail,dc=kaspersky,dc=com(結尾無空格)

objectclass: (空格)organizationalRole(結尾無空格)

cn: (空格)test(結尾無空格)

(結尾無空行)

 6、安裝JXplorer管理LDAP
 7、訪問控制配置,也是在slapd.conf配置檔案裡 (暫時沒做處理)
access to * by * read
access to attr=userPassword
            by self write
            by anonymous auth
            by dn="cn=Admin,dc=example,dc=com" write
            by * none
    access to *
            by self write
            by dn="cn=Admin,dc=example,dc=com" write
            by * read
access to * by users read 
8、Java認證(核心程式碼):
  private static DirContext ctx;

    @SuppressWarnings(value = "unchecked")
    public static DirContext getCtx() {
        String account = "Manager"; //binddn
        String password = "hq3595";    //bindpwd
        String root = "dc=hq3595,dc=com"; // root
        Hashtable env = new Hashtable();
        env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.ldap.LdapCtxFactory");
        env.put(Context.PROVIDER_URL, "ldap://192.168.147.131:389/");
        env.put(Context.SECURITY_AUTHENTICATION, "simple");
        env.put(Context.SECURITY_PRINCIPAL, "cn=" + account+","+root);
        env.put(Context.SECURITY_CREDENTIALS, password);
        try {
            // 連結ldap
            //    ctx = new InitialDirContext(env);
            ctx = new InitialLdapContext(env, new Control[]{new PagedResultsControl(100, Control.NONCRITICAL)});
            System.out.println("認證成功");
        } catch (javax.naming.AuthenticationException e) {
            e.printStackTrace();
            System.out.println("認證失敗");
        } catch (Exception e) {
            System.out.println("認證出錯:");
            e.printStackTrace();
        }
        return ctx;
    }

    public static void closeCtx() {
        try {
            ctx.close();
        } catch (NamingException ex) {
            Logger.getLogger(LdapHelper.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

 9、自定義LDAP屬性   配置inetOrgPerson物件類的兩個自定義屬性。
  • isAbsent 128字元內的字串,單值
  • substitutes 128字元內的字串,多值

參閱了OpenLdap的管理文件以及網上的例項之後,解決方案如下:
編輯OpenLDAP的模式定義檔案 /usr/local/etc/openldap/slapd.conf中可以找到schema,pid以及資料庫檔案存放的路徑
inetorgperson.schema,增加屬性定義 attributetype ( 2.16.840.1.113730.3.1.900
  NAME 'isAbsent'
  DESC 'whether the person is absent from work'
  EQUALITY caseIgnoreMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128}
  SINGLE-VALUE )

attributetype ( 2.16.840.1.113730.3.1.901
  NAME 'substitutes'
  DESC 'people substitutes when absent'
  EQUALITY caseIgnoreMatch
  SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{128} )
其中2.16.840.1.113730.3.1.900和901是選擇未被使用的OID(不知道有沒有被使用過?google下吧),而1.3.6.1.4.1.1466.115.121.1.15則是字串型別的語法。

在inetOrgPerson類中啟用這2個屬性

objectclass  ( 2.16.840.1.113730.3.2.2
        NAME 'inetOrgPerson'
  DESC 'RFC2798: Internet Organizational Person'
        SUP organizationalPerson
        STRUCTURAL
  MAY (
...
    isAbsent $ substitutes )
  )

在slapd.conf中啟用inetorgperson.schema

#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
ucdata-path  ./ucdata
include    ./schema/core.schema
include    ./schema/cosine.schema
include    ./schema/inetorgperson.schema
include    ./schema/nis.schema 重新啟動LDAP服務之後一切搞定。

相關推薦

Linux安裝openldap 啟動配置一站式

外鏈:Tomcat+LDAP完成認證:http://my.oschina.net/xpbug/blog/198765 1、安裝Berkeley DB wget http://download.oracle.com/berkeley-db/db-4.6.21.tar.

記錄Centos6.5安裝vsftp服務配置文件說明

linux 運維 vsftp 參考文章:http://blog.csdn.net/zwhfyy/article/details/1547454 http://www.linuxidc.com/Linux/2015-06/118442.htmvsftp 的優點:除了安全、高速、穩定之外,vsftpd

linux安裝nexus repositoryIntellij Idea集成私有maven

files usm codehaus ima sna rem 依賴 技術分享 active 前段日子公司搞java項目,使用nexus repository搭建了私有maven庫,現在把原來的私有nuget也遷到nexus repository上了,下面介紹下搭建流程:

linux安裝libcurl過程開發遇到的問題"curl/curl.h:沒有那個檔案或目錄"缺少標頭檔案解決方法

可以從官網上下載https://curl.haxx.se/download.html,也可以命令列下載 我是從官網看的版本,複製連結,再在命令列下載 # wget https://curl.haxx.se/download/curl-7.51.0.tar.gz # tar -zvxf curl-7.

linux安裝libcurl過程開發遇到的問題"curl/curl.h:沒有那個檔案或目錄"缺少標頭檔案解決方法

可以從官網上下載https://curl.haxx.se/download.html,也可以命令列下載 我是從官網看的版本,複製連結,再在命令列下載 # wget https://curl.haxx.se/download/curl-7.51.0.tar.gz # tar -

linux安裝mariadb以及相關配置

版本:centos7 Linux下安裝MariaDB官方文件參見:https://mariadb.com/kb/zh-cn/installing-mariadb-with-yum/ 1.建立MariaDB.repo檔案 vi /etc/yum.repos.d

linux安裝jdk,tomcat配置環境變數

檢視當前系統jdk rpm -qa|grep jdk 如果出現關於jdk自帶的openjdk,這是linux自帶的需要先解除安裝 yum remove openjdk 1,建立資料夾 把安裝好的.gz的壓縮包放在你想解壓的目錄下,或者使用cp或者mv移動到你想安裝的目錄 ls -l 顯示當前

Linux 安裝svn伺服器錯誤集錦

        由於公司新買了一臺伺服器,然後要從新搭建svn伺服器,這個任務落到了我的身上,都要過年了。好吧,抱怨是窮人的專利。不能這樣,打起精神開幹。前後用了一個多小時,不過還是安裝好了,期間遇到

linux徹底刪除軟體配置檔案

今天清理一下系統,使用了一個命令列,可能對其他人有參考價值   dpkg -l |grep "^rc"|awk '{print $2}' |xargs aptitude -y purge   用途:   刪除已經刪除的軟體包的殘留配置檔案。因為 debian 中 remov

Linux安裝Tomcat啟動報錯

一、報以下錯誤: Using CATALINA_BASE:   /home/apache-tomcat-7.0.72 Using CATALINA_HOME:   /home/apache-tomcat-7.0.72 Using CATALINA_TMPDIR

Linux安裝mysql方式遇到的問題

本人剛開始使用yum源安裝的,不過遇到了各種問題沒有解決,建議大家用rpm包安裝 1.首先下載需要的rpm包 進入mysql官網:https://dev.mysql.com/downloads/mysql/(也可以通過映象下載https://mirrors.tu

Linux安裝php,並配置到nginx【最終版,完美解決問題】

1、 下載         libxml2-2.6.32.tar.gz  http://download.csdn.net/detail/netlong339/1351852        php-5

linux安裝libcurl過程開發遇到的問題"curl/curl.h:沒有那個檔案或目錄"

我是從官網看的版本,複製連結,再在命令列下載 # tar -zvxf curl-7.51.0.tar.gz # cd curl-7.51.0/ # ./configure -prefix=/usr/local/curl # make # make insta

linux安裝redis+redis主從配置+redis基本命令

linux安裝redis redis安裝步驟如下: linux命令下載: wget –p /java/redis “chainUrl”;指定下載目錄 1、下載redis安裝包。下載地址為https://redis.io/download 下載下來的檔案為redis-3.2

如何在linux安裝mysql資料庫並配置

1.查詢以前是否安裝有mysql,使用下面命令: rpm -qa|grep -i mysql 如果顯示有如下包則說明已安裝mysql mysql-4.1.12-3.RHEL4.1 mysqlclient10-3.23.58-4.RHEL4.1 2.如果已安裝,則需要刪除已安裝的資料庫,使用以下命令來

LInux 安裝 python notebook 指向路徑

1.  安裝 pip工具     sudo apt-get install pyton-pip 2. 安裝ipython及其依賴包       sudo apt-get install ipython ipython-notebook 3. 安裝可選的附加工具(需要時間較

linux安裝redis,啟動,停止,設定密碼

第一步:安裝外掛: 1 yum -y install cpp binutils glibc glibc-kernheaders glibc-common glib

Mac OS X安裝Java 7配置Eclipse JDK

如果想啟用jdk1.7的語法,必須要eclipse版本在3.8/4.2以上(目前我寫這篇部落格的時候,4.2已經達到了Milestone4),然後可以在workspace/project屬性裡把編譯等級調整到1.7,就能享受jdk1.7的語言特性了(不過前提是,使用的jdk以及jre必須都是jdk1.7以

linux系統安裝Anaconda環境配置

目錄 1.安裝anaconda Linux環境下安裝Anaconda可以根據自己想要的Python版本號到Anaconda的官方網站下載相應系統下相應版本的Anaconda安裝包。 官方網站:出門左拐百度Anaconda官網即可; 下載完畢,把包拷貝到

Linux安裝php環境並且配置Nginx支援php-fpm模組

  以下以CentOS 7.2為例,安裝php的執行環境,首先開啟php官網http://php.net/點選導航欄的Downloads進入下載頁面:http://php.net/downloads.php   這裡下載最新版的php 7.0.5 的原始碼包: