linux 卸載 openldap,Linux下安裝openldap

Ubuntu apt-get

install安裝參考:http://dongwang.wordpress.com/category/uncategorized/

普通linux安裝,以XXX用戶身份安裝:

1、安裝Berkeley

DB 4.7.25:伯克利大學嵌入式數據庫解決方案,openldap拿它作為存儲方案。

http://download.oracle.com/berkeley-db/db-4.7.25.tar.gz下載到:/home/XXX/download/

# tar xvf

db-4.7.25.tar.gz

# cd

db_4.7.25

# cd build_unix/

#

../dist/configure -prefix=/home/XXX/app/BerkeleyDB

# make

# make install

2、安裝openldap前準備:配置環境變量,參考openldap install文件

#export

CPPFLAGS="-I/home/XXX/app/BerkeleyDB/include -D_GNU_SOURCE"

注:不設置make時報getpeereid.c:65: error: storage size of ‘peercred’ isn’t

known錯誤

#export

LDFLAGS="-L/home/XXX/app/BerkeleyDB/lib"

注:不設置configure時報configure: error: BDB/HDB: BerkeleyDB not

available錯誤

#export

LD_LIBRARY_PATH="/home/XXX/download/db-4.7.25/build_unix/.libs"

注:不設置configure時報configure: error: Berkeley DB version

mismatch錯誤

3、安裝openldap-2.4.15:

ftp://sunsite.cnlab-switch.ch/mirror/OpenLDAP/openldap-release/openldap-2.4.15.tgz下載到/home/XXX/download/

#tar xvf

openldap-2.4.15.tgz

#cd

openldap-2.4.15/

#./configure

-prefix=/home/XXX/app/openldap

# make

depend

# make test

可跳過

# make

# make

install

4、配置openldap:

#cd

/home/XXX/app/openldap/etc/openldap

#gedit

slapd.conf

加入(注意:中間是空格+tab,順序必須保證,有相互依賴關系):

include

/home/XXX/app/openldap/etc/openldap/schema/corba.schema

include

/home/XXX/app/openldap/etc/openldap/schema/cosine.schema

include

/home/XXX/app/openldap/etc/openldap/schema/inetorgperson.schema

include

/home/XXX/app/openldap/etc/openldap/schema/misc.schema

include

/home/XXX/app/openldap/etc/openldap/schema/openldap.schema

include

/home/XXX/app/openldap/etc/openldap/schema/nis.schema

include

/home/XXX/app/openldap/etc/openldap/schema/java.schema

將文件中的

database bdb

suffix

"dc=my-domain,dc=com"

rootdn

"cn=root,dc=my-domain,dc=com"

rootpw

secret

修改成自己的目錄根,指定自己根的管理員,這里修改為root,與linux的root沒有什么關系

rootdw

是管理員的密碼,默認密碼是secret,這里可以使用MD5加密。

#cd

/home/XXX/app/openldap/sbin

#slappasswd

New

password:

Re-enter new

password:

{SSHA}mHzQL7t4YG/a6g5mt2YPLE/+ErmekI34

也可以指定加密方式:

# slappasswd -h

{MD5}

將輸出結果替換secret

5、啟動openldap:

#

/home/XXX/app/openldap/libexec

# su root -c

"./slapd"

必須如此,1024以下的端口必須由root才能綁定,ldap是389端口。

如果啟動不成功可以用

./slapd -d 1啟動debug模式。。將在屏幕打印啟動信息

#netstat -tlnp

發現389端口即啟動成功

接下來的事情就是向數據庫添加數據。ldap不支持sql,所以要用ldapadd這個程序來添加,添加的時候要用一個ldif文件,把要添加的東西寫在里面,ldif的格式在admin

guide里面有說明。首先要添加根,這一步是必要的,不然任何數據都添加不進去。我們編輯一個init.ldif文件,包括建立my-domain.com、管理者為domain.com

底下的root、以及一個people的物件容器,用來放一般使用者。

dn:

dc=my-domain,dc=com

objectClass:

dcObject

objectClass:

organization

dc:

my-domain

o: my-domain

Company

dn:

cn=root,dc=my-domain,dc=com

objectClass:

organizationalRole

cn: root

dn:

ou=people,dc=my-domain,dc=com

objectClass:

organizationalUnit

ou: people

應該會看到你的organization、organizationRole、organizationUnit

這三個,也就是你的最高網路域名?最高管理者、以及一個準備用來容納使用者的people 項目。這個people

項目你當然可以自由取名。

提示:objectClass必須設置屬性:

dcobject:dc用來表示一個域名的部分

organization:o用來表示一個組織的名稱

person:cn和sn用來表示名和姓

organizationalPerson:與person相同。

organizationalRole:cn 表示管理者名稱

organizationUnit:ou表示容器名稱

詳細參考:http://www.yolinux.com/TUTORIALS/LinuxTutorialLDAP-GILSchemaExtension.html

執行命令:

#cd

/home/XXX/app/openldap/bin

#ldapadd -D

"cn=root, dc=my-domain,dc=com" -w secret -f init.ldif

或者

#ldapadd -D

"cn=root, dc=my-domain,dc=com" ?-W -f

init.ldif

說明:-D指定管理員目錄

-f指定導入文件 -W表示彈出密碼輸入提示 如果是簡單普通密碼,則-w secret即可。

如果成功將提示:

adding new entry

dc=my-domain,dc=com

adding new entry

cn=root,dc=my-domain,dc=com

adding new entry

ou=people,dc=my-domain,dc=com

補充一:用戶users.ldif

,其中userPassword在person聲明,mail在inetOrgPerson聲明

dn:cn=kehufankui,ou=people,dc=navinfo,dc=com

objectClass:

person

objectClass:

inetOrgPerson

sn:kehufankui

cn:kehufankui

userPassword:123

mail:loveflying88@sina.com

多個用戶重述上面信息

補充二:啟動注意解決辦法:

錯誤一:openldap安裝成功后,另外啟動一個終端,slapd啟動時將報錯:

./slapd: error

while loading shared libraries: libdb-4.7.so: cannot open shared

object file: No such file or directory

出錯原因:找不到bdb的鏈接庫。

解決辦法一:完全拷貝。

#cp

/home/XXX/app/BerkeleyDB//include/* /usr/include/

#cp

/home/XXX/app/BerkeleyDB/BerkeleyDB/lib/* /usr/lib/

解決辦法二(推薦):

要把/home/XXX/app/BerkeleyDB/lib的庫路徑直接加到/etc/ld.so.conf文件最后一行,添加完成后執行一次

ldconfig,使用配置文件生效。

提示:

ld.so.conf記錄了編譯、或運行時使用的動態鏈接庫(.so)的路徑。默認情況下,編譯器只會使用/lib和/usr/lib這兩個目錄下的庫文件。

錯誤二:debug模式啟動時報daemon: bind(7) failed errno=13錯誤

出錯原因:是1024以下的端口必須由root才能綁定。因為ldap默認是389端口。所以才報這個錯誤。

解決辦法:su root -c

"./slapd"

6、擴展openldap

schema配置:

ldap默認的schema屬性聲明有時候無法滿足現實的需要,比如要用openldap備份微軟ldap的數據,sAMAccountName是微軟特有的屬性,這樣我們就需要擴展屬性。

舉例說明,擴展inetOrgPerson這個objectClass,增加sAMAccountName這個屬性。

打開inetorgperson.schema文件,添加:

#sAMAccountName

attributetype (

2.16.840.1.113730.3.1.217

NAME

'sAMAccountName'

DESC ''

EQUALITY

caseIgnoreMatch

SUBSTR

caseIgnoreSubstringsMatch

SYNTAX

1.3.6.1.4.1.1466.115.121.1.15{128}

SINGLE-VALUE

)

#targetDN

attributetype (

2.16.840.1.113730.3.1.218

NAME

'targetDN'

DESC ''

EQUALITY

caseIgnoreMatch

SUBSTR

caseIgnoreSubstringsMatch

SYNTAX

1.3.6.1.4.1.1466.115.121.1.15{256}

SINGLE-VALUE

)

在May里添加:

MAY (

....

$ userPKCS12 $ sAMAccountName

$targetDN)

)

即可,參考:

http://blog.163.com/duanhehui0928@126/blog/static/115272342201031122227764/

http://hi.baidu.com/teamtogether/blog/item/fde2b81184f17fc8a7ef3f0f.html

7、后記

微軟ldap和openldap在dn的存儲設計上有本質區別。

openldap:the DN

isn't an attribute value - it's theobject's name itself.

微軟ldap:the DN is

an attribute value - it's?DistinguishedName。

dn是一個比較重要的屬性,作為object 的唯一路徑標識,刪除、修改object都要使用到,而java

ldaptemplate訪問openldap時卻無法獲取dn值,值得一提的是python-ldap

search默認獲取的就是("dn值",{屬性集合}),非常方便。

針對java

ldaptemplate的設計失誤,只能在openldap增加一個targetDN來存儲dn值來變相解決這個問題。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/538257.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/538257.shtml
英文地址,請注明出處:http://en.pswp.cn/news/538257.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Git之原有基礎開發新功能

場景描述 當一個項目已經上線,同時又在原有基礎上新增功能模塊,于是乎就要在原有代碼的基礎上進行開發,在新增模塊功能的開發的過程中,項目發現了一個緊急Bug,需要修復。操作流程如下: -------------------…

pantum打印機驅動安裝m6506_奔圖Pantum M6506NW 驅動

這是奔圖Pantum M6506NW 驅動,是M6506NW奔圖打印機驅動,此設備內置WIFI熱點,安裝驅動可以幫助用戶解決打印機連接和工作中出現的問題,非常方便,需要的朋友快來本站下載吧!驅動介紹奔圖M6506NW一體機驅動專為…

linux kvm查看線程狀態,kvm線程-005-線程狀態-THREAD_JUST_BORN

在kvm內部定義了線程狀態,如下:enum {THREAD_JUST_BORN 1, /* 還沒有啟動*/THREAD_ACTIVE 2, /* 當前正在運行,或者在等待運行的隊列中*/THREAD_SUSPENDED 4, /* 等待monitor或者alarm */THREAD_DEAD 8, /* 線程退出 */THREAD_MONITOR_WAIT 16, // 等待鎖THREAD_CONVAR_WA…

詳解VirtualBox虛擬機網絡環境解析和搭建-NAT、橋接、Host-Only、Internal、端口映射

原文鏈接:http://www.jb51.net/article/98575.htm -------------------------------------------------- 本文以VirtualBox為例 如果出現主機無法ping通虛擬機的情況,請首先確認虛擬機防火墻已關閉。 一、NAT模式 特點: 1、如果主機可以上網…

os.popen read()報編碼錯誤_數據科學家易犯的十大編碼錯誤,你中招了嗎?

選自 Medium作者:Norm Niemer機器之心編譯參與:李詩萌、王淑婷數據科學家比軟件工程師擅長統計,又比統計學家擅長軟件工程。聽起來牛逼轟轟,事實卻是,許多數據科學家有統計學背景,卻沒有什么軟件工程方面的…

linux怎么添加工作組,linux 用戶與工作組

在linux 里面,用戶的編號UID ,也就是用戶的ID號。工作組的編號為GID 也就是工作組的ID 號 。1、用戶的分類超級用戶:root用戶,系統安裝過程中自動創建,UID 為0。普通用戶:操作權限受到限制的用戶id在 500-6…

MySQL5.7.12新密碼登錄方式及密碼策略

原文鏈接:http://www.cnblogs.com/jonsea/p/5510219.html --------------------------------------------------------------------------- 松門一枝花補充 最簡單的方法: 1、配置文件中把密碼策略關了。本文中間部分有介紹。 2、重啟服務 3、用my…

聚類分析在用戶行為中的實例_聚類分析案例之市場細分

聚類是將數據分類到不同的類或者簇這樣的一個過程,所以同一個簇中的對象有很大的相似性,而不同簇間的對象有很大的相異性。從統計學的觀點看,聚類分析是通過數據建模簡化數據的一種方法。傳統的統計聚類分析方法包括系統聚類法、分解法、加入…

linux 編譯system.img,android生成sysytem.img的命令過程

Fromhttp://xianghuaclm.blog.163.com/blog/static/6668783201110221486240/使用#file system.img輸出:system.img: Linux rev 0.0 ext2 filesystem data,UUID4eb0489c-647d-49d8-9111-94657b5fd342, volume name"system"。然而本人使用命令#mkyaffs2imag…

Hive的hiveserver2后臺開啟和關閉

前提:hive/bin配置了環境變量。如果沒有配置,cd到 hive目錄下的bin里,再執行。 開啟命令: nohup hive --service hiveserver2 & 產生的日志: 默認在: 用戶文件夾里 [rootmaster ~]# ll total 80 …

記一次,jvm 內存溢出

1、什么是內存泄漏內存泄漏是指,有未被釋放的java對象,一直停留在內存中。GCRoot 無法追蹤到此對象,導致此對象無法被回收。 2、什么是內存溢出內存溢出是指,java程序創建對象需要內存,但是卻沒有內存可用了&#xff0…

ebnf范式_使用Scala基于詞法單元的解析器定制EBNF范式文法解析

前言近期在做Oracle遷移到Spark平臺的項目上遇到了一些平臺公式翻譯為SparkSQL(on Hive)的需求,而Spark采用親媽語言Scala進行開發。下面是個意外,被論文查重了,移步至我的Leanote博客查看點我,先亂碼一段時間[分后,擬使中的EB式&…

鉆石指標和完美的計算

鉆石的高度計算公式為:鉆石的高度直徑的三次方(單位毫米)0.00366(允許有0.03克拉的誤差)例如,0.5克拉的鉆石直徑是5.01毫米,則它的高為:5.01*5.01*5.01*0.003660.46說明0.5克拉的鉆石直徑只有0.46克拉鉆石的…

linux開機自動ZFS,linux – 為什么重新啟動導致我的ZFS鏡像的一面成為UNAVAIL?

我最近剛剛將批量數據存儲池(ZFS OnLinux 0.6.2,Debian Wheezy)從單設備vdev配置遷移到雙向鏡像vdev配置.之前的池配置是:NAME STATE READ WRITE CKSUMakita ONLINE 0 0 0ST4000NM0033-Z1Z1A0LQ ONLINE 0 0 0在重新啟動完成后一切都很好(我在重新啟動完成后啟動了一…

華為交換機默認vlan都是通的嗎_【思唯網絡學院】華為交換機常用的三種vlan劃分方法...

端口類型在學習劃分vlan前,必須要了解華為交換機的端口類型,以及他們的使用方法,因為端口的類型在實際配置中是必須會用到的,因為下面的vlan劃分會用到。1、Access類型端口執行命令port default vlan vlan-id,將端口加…

Spark應用日志級別設置

Spark-core包設置默認的日志級別為info,所以我們才看到一大堆日志信息。 開發的時候,把print的日志掩蓋了。 方法一: 代碼中設置日志級別 JavaSparkContext contextnew JavaSparkContext(conf); context.setLogLevel("warn"); 方…

linux 恢復操作系統,如何恢復Linux操作系統的GRUB引導程?

先使用一張修復盤進入grub,或者利用其他linux恢復盤等等進入linux系統,然后進入grub控制臺。總之就是想盡辦法進入一個控制臺就是了。然后準備引導進入硬盤上的Linux系統。如下:  grub> root (hd0,10)  grub> kernel /boot/vmlinuz…

Centos 7初始化腳本

今天跟大家分享一個我自己寫的Linux初始化腳本,自認為寫的不是很好。希望看到這篇文章的你,能暫時停留下你的腳步,給些修改意見,或者有什么需要補充的地方都可以提出來,大家共同進步,謝謝!此腳本…

Hive-sql與SQL的區別

總體一致: Hive-sql與SQL基本上一樣,因為當初的設計目的,就是讓會SQL不會編程MapReduce的也能使用Hadoop進行處理數據。 因此,大膽使用SQL的,如果遇到不對的,再查。 區別: Hive沒有delete和u…

python閏年多一天_記一個 python datetime 閏年問題

python中datetime是比較常用的,平時用起來也沒什么問題,但是今天2020年2月29日服務器卻開始報錯了,這里有個平時難以注意的坑服務器上跑的是新浪網的爬蟲,抓取的頁面信息中帶有日期 XX月XX日,需要strfptime轉化一下&am…