Ladp數據庫安裝和配置自定義schema ,Centos7環境

最近安裝ldap看了不少教程,整理下用到的有用的資料,并把自己的搭建過程分享。

參考

  • ldap介紹:openLDAP入門與安裝

  • 官方文檔:https://www.openldap.org/doc/admin22/schema.html

  • 安裝配置:Centos7 搭建openldap完整詳細教程(真實可用)

  • bug解決:ldap運維中遇到的問題

  • schema自定義:導入schema到openLdap window文件轉為unix文件

1,安裝和配置

yum 安裝相關包

yum install -y openldap openldap-clients openldap-servers

拷貝數據庫配置文件

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown -R ldap. /var/lib/ldap/DB_CONFIG

啟動服務,先啟動服務,配置后面再進行修改

systemctl start slapd
systemctl enable slapd
#查看狀態
systemctl status slapd

修改配置

從openldap2.4.23版本開始,所有配置都保存在/etc/openldap/slapd.d目錄下的cn=config文件夾內,不再使用slapd.conf作為配置文件。配置文件的后綴為 ldif,ldap的配置在開頭都會有一行注釋,說明此為自動生成的文件,請勿編輯,需要使用ldapmodify命令進行修改。

設置用戶密碼,生成的加密密碼后面需要用到(ldap的加密是同樣的密碼加密后都不一樣)

slappasswd -s 123456
{SSHA}N158sFqO97cIPBV/eOW1b80oV4BIvlvW

開始修改,創建一個修改文件。

vim changepwd.ldif

添加內容

dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}N158sFqO97cIPBV/eOW1b80oV4BIvlvW

然后執行,在執行下面的命令前,你可以先查看原本的/etc/openldap/slapd.d/olcDatabase={0}config文件,里面是沒有olcRootPW這個項的,執行命令后,你再看就會新增了olcRootPW項,而且內容是我們文件中指定的值加密后的字符串

ldapadd -Y EXTERNAL -H ldapi:/// -f changepwd.ldif

備注:如果/etc/openldap/slapd.d/下cn=config/olcDatabase={0}config文件已經存在olcRootPW 使用replace
changepwd.ldif內容:

dn: olcDatabase={0}config,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}N158sFqO97cIPBV/eOW1b80oV4BIvlvW
ldapmodify -Y EXTERNAL -H ldapi:/// -f changepwd.ldif

導入配置

# 我們需要向 LDAP 中導入一些基本的 Schema。這些 Schema 文件位于 /etc/openldap/schema/ 目錄中,schema控制著條目擁有哪些對象類和屬性,可以自行選擇需要的進行導入,
# 依次執行下面的命令,導入基礎的一些配置,我這里將所有的都導入一下,其中core.ldif是默認已經加載了的,不用導入
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/collective.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/corba.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/duaconf.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/dyngroup.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/java.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/misc.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/pmi.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif

修改域名

域名的信息保存在/etc/openldap/slapd.d/cn=config文件夾下
olcDatabase={1}monitor,cn=config配置中可以查看,不能直接修改。這邊使用命令修改。
創建一個changedomain.ldif修改文件。

vim changedomain.ldif

比如我域名是dc=sichuan,dc=cmcc ,用戶為cn=Manager,changedomain.ldif文件配置如下:

dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read by dn.base="cn=Manager,dc=sichuan,dc=cmcc" read by * nonedn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=sichuan,dc=cmccdn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=sichuan,dc=cmccdn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: {SSHA}7j4lLAvS1mToAZpIyefQdTYqCvL0hiVadn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=Manager,dc=sichuan,dc=cmcc" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=sichuan,dc=cmcc" write by * read

執行:

ldapmodify -Y EXTERNAL -H ldapi:/// -f changedomain.ldif

創建組織單元

在dc=sichuan,dc=cmcc組織下 創建Account 和Role兩個組織單元:

新增cmcc.ldif文件

vim  cmcc.ldif
dn: dc=sichuan,dc=cmcc
objectClass: domain
objectClass: top
o: cmcc
dc: sichuandn: ou=Account,dc=sichuan,dc=cmcc
objectClass: organizationalUnit
ou: Account
description: account for cmccdn: ou=Role,dc=sichuan,dc=cmcc
objectClass: organizationalUnit
ou: Role
description: role for cmcc

執行命令,添加配置, 這里要注意修改域名為自己配置的域名,然后需要輸入上面我們的密碼(123456)

ldapadd -x -D cn=Manager,dc=sichuan,dc=cmcc -W -f cmcc.ldif

2,schema自定義格式

schema,是一個標準,定義了ldap的對象和屬性,也就是ldap能夠存儲什么數據,數據有什么屬性等。

/etc/openldap/slapd.d/cn=config/cn=schema/文件夾保存了運行使用的schema文件,我們需要生成cmcc.schema放進來。

由于ldap中的對象不滿足現有需求,需要自定義對象和屬性。
創建兩個對象cmcc-Account和cmcc-Role
cmcc-Account對象包含Uid,accPassword ,accRole , accstatus , accReserve1 , accReserve2 , accReserveList1 , accReserveList2屬性
cmcc-Role對象包含roleName, roleDesc, accReserve1 , accReserve2 , accReserveList1 , accReserveList2屬性

創建cmcc.schema文件

vim cmcc.schema
attributetype ( 1.3.6.1.4.1.79145.1.2.1.2 NAME 'accPassword' DESC 'accPassword' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-value ) attributetype ( 1.3.6.1.4.1.79145.1.2.1.3 NAME 'accRole' DESC 'accRole' EQUALITY caseIgnoreMatchSUBSTR caseIgnoreSubstringsMatch 	SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) attributetype ( 1.3.6.1.4.1.79145.1.2.1.4 NAME 'accstatus' DESC 'accstatus' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-value ) attributetype ( 1.3.6.1.4.1.79145.1.2.1.5 NAME 'accReserve1' DESC 'accReserve1' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-value ) attributetype ( 1.3.6.1.4.1.79145.1.2.1.6 NAME 'accReserve2' DESC 'accReserve2' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-value ) attributetype ( 1.3.6.1.4.1.79145.1.2.1.7 NAME 'accReserveList1' DESC 'accReserveList1' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) attributetype ( 1.3.6.1.4.1.79145.1.2.1.8 NAME 'accReserveList2' DESC 'accReserveList2' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} ) attributetype ( 1.3.6.1.4.1.79145.1.2.1.9 NAME 'roleName' DESC 'roleName' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-value ) attributetype ( 1.3.6.1.4.1.79145.1.2.1.10 NAME 'roleDesc' DESC 'roleDesc' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{32768} SINGLE-value ) objectclass ( 1.3.6.1.4.1.79145.1.2.2.1 NAME 'cmcc-Account' DESC 'a cmcc-Account' SUP top STRUCTURAL MUST ( uID ) MAY ( accPassword $ accRole $ accstatus $ accReserve1 $ accReserve2 $ accReserveList1 $ accReserveList2 ) ) objectclass ( 1.3.6.1.4.1.79145.1.2.2.2 NAME 'cmcc-Role' DESC 'a cmcc-Role' SUP top STRUCTURAL MUST ( roleName ) MAY ( roleDesc $ accReserve1 $ accReserve2 $ accReserveList1 $ accReserveList2 ) ) 

將cmcc.schema文件放到/etc/openldap/schema

在tmp文件夾 創建schema文件夾
創建convert.conf文件,在末尾加入cmcc.schema

cd /tmp
mkdir schema
vim convert.conf
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/collective.schema
include /etc/openldap/schema/corba.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/duaconf.schema
include /etc/openldap/schema/dyngroup.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/java.schema
include /etc/openldap/schema/misc.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/ppolicy.schema
include	/etc/openldap/schema/cmcc.schema

生成ldap信息文件

slaptest -f /tmp/convert.conf -F /tmp/schema 

給ldap添加生成的cmcc.ldif文件

cp /tmp/schema/cn\=config/cn\=schema/cn\=\{12\}cmcc.ldif /etc/openldap/slapd.d/cn\=config/cn\=schema/#給ldap 添加權限
cd /etc/openldap/slapd.d/cn=config/cn=schema/
chown ldap:ldap cn\=\{12}cmcc.ldif

重啟

ps aux | grep ldap
kill -9 pid//啟動
systemctl start slapd//狀態
systemctl status slapd

3,連接ldap數據庫效果

我使用的window版LdapAdmin.exe 連接的ldap。
查看自定義schema是否成功,可以點擊Tools->schema 查看object classes 和Attribue Types中是否存在。

登陸界面:
在這里插入圖片描述
組織結構:
在這里插入圖片描述

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

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

相關文章

flask模型部署教程

搭建python flask服務的步驟 1、安裝相關的包 具體參考https://blog.csdn.net/weixin_42126327/article/details/127642279 1、安裝conda環境和相關包 # 一、安裝conda # 1、首先,前往Anaconda官網(https://www.anaconda.com/products/individual&am…

【K8S源碼之Pod漂移】整體概況分析 controller-manager 中的 nodelifecycle controller(Pod的驅逐)

參考 k8s 污點驅逐詳解-源碼分析 - 掘金 k8s驅逐篇(5)-kube-controller-manager驅逐 - 良凱爾 - 博客園 k8s驅逐篇(6)-kube-controller-manager驅逐-NodeLifecycleController源碼分析 - 良凱爾 - 博客園 k8s驅逐篇(7)-kube-controller-manager驅逐-taintManager源碼分析 - 良…

esp32C3 micropython oled 恐龍快跑游戲

目錄 簡介 效果展示 源代碼 main.py ssd1306.py 實現思路 血量值 分數 恐龍 障礙物 得分與血量值的計算 簡介 使用合宙esp32c3模塊,基于micropython平臺開發的一款oled小游戲,恐龍快跑,所有代碼已經給出,將兩個py文件…

【Maven教程】(一)入門介紹篇:Maven基礎概念與其他構建工具:理解構建過程與Maven的多重作用,以及與敏捷開發的關系 ~

Maven入門介紹篇 1?? 基礎概念1.1 構建1.2 maven對構建的支持1.3 Maven的其他作用 2?? 其他構建工具2.1 IDE2.2 Make2.3 Ant2.4 Jenkins 3?? Maven與敏捷開發🌾 總結 1?? 基礎概念 "Maven"可以翻譯為 “知識的積累者” 或 “專家”。這個詞源于波…

Qt應用開發(基礎篇)——MDI窗口 QMdiArea QMdiSubWindow

一、前言 QMdiArea類繼承于QAbstractScrollArea,QAbstractScrollArea繼承于QFrame,是Qt用來顯示MDI窗口的部件。 滾屏區域基類 QAbstractScrollAreahttps://blog.csdn.net/u014491932/article/details/132245486 框架類 QFramehttps://blog.csdn.net/u01…

面試算法編程題

面試算法編程題記錄 題目 : 羊圈里的狼 題目背景 : 一到了晚上,草原牧民的羊就會被趕進羊圈里。這時,野外的狼群就會打羊羔的主意。為了保護羊羔,牧民需要將羊圈里的狼趕走或殺死。由于來的狼很多,他需要快速甄別哪些狼在羊圈里面…

FANUC機器人加減速倍率指令ACC的使用方法說明

FANUC機器人加減速倍率指令ACC的使用方法說明 單位有一臺FANUC機器人(型號:M-900iB 360kg),偶爾會在啟動的瞬間會報SRVO-050碰撞檢測報警,而事實上機器人并沒有開始移動或和其他工件產生碰撞,一直查了很長時間,也沒有查到具體的原因,也嘗試過重新進行負載推算,但是偶爾…

恒運資本:CPO概念發力走高,兆龍互聯漲超10%,華是科技再創新高

CPO概念15日盤中發力走高,截至發稿,華是科技漲超15%再創新高,兆龍互聯漲逾11%,中貝通訊漲停,永鼎股份、太辰光漲超5%,天孚通訊漲逾4%。 消息面上,光通訊聞名咨詢機構LightCounting近日發布的202…

國產之光:訊飛星火最新大模型V2.0

大家好,我是herosunly。985院校碩士畢業,現擔任算法研究員一職,熱衷于機器學習算法研究與應用。曾獲得阿里云天池比賽第一名,CCF比賽第二名,科大訊飛比賽第三名。擁有多項發明專利。對機器學習和深度學習擁有自己獨到的…

每天一道leetcode:1466. 重新規劃路線(圖論中等廣度優先遍歷)

今日份題目: n 座城市,從 0 到 n-1 編號,其間共有 n-1 條路線。因此,要想在兩座不同城市之間旅行只有唯一一條路線可供選擇(路線網形成一顆樹)。去年,交通運輸部決定重新規劃路線,以…

OpenCV-Python中的圖像處理-視頻分析

OpenCV-Python中的圖像處理-視頻分析 視頻分析Meanshift算法Camshift算法光流Lucas-Kanade Optical FlowDense Optical Flow 視頻分析 學習使用 Meanshift 和 Camshift 算法在視頻中找到并跟蹤目標對象: Meanshift算法 Meanshift 算法的基本原理是和很簡單的。假設我們有一堆…

Failed to init API, possibly an invalid tessdata path: ./ ubuntu

1、問題描述 Failed to init API, possibly an invalid tessdata path: ./2、解決方案: 添加“TESSDATA_PREFIX”到系統環境變量中,值為testdata的父路徑(一般就是 Tesseract-OCR 的安裝路徑)亦可解決。在~/.bashrc中添加 expo…

【學習日記】【FreeRTOS】空閑任務與阻塞延時

寫在前面 本文是基于野火 RTOS 教程對空閑任務和阻塞延時的詳解。 一、什么是任務中的阻塞延時 說到阻塞延時,筆者的第一反應就是在單片機的 while 循環中,使用一個 for 循環不斷遞減一個大數,通過 CPU 不斷執行一條指令的耗時進行延時。這…

python優雅地爬蟲!

背景 我需要獲得新聞,然后tts,在每天上班的路上可以聽一下。具體的方案后期我也會做一次分享。先看我喜歡的萬能的老路:獲得html內容-> python的工具庫解析,獲得元素中的內容,完成。 好家伙,我知道我爬…

視頻云存儲/安防監控/視頻匯聚EasyCVR平臺新增設備經緯度選取

視頻云存儲/安防監控EasyCVR視頻匯聚平臺基于云邊端智能協同,支持海量視頻的輕量化接入與匯聚、轉碼與處理、全網智能分發、視頻集中存儲等。音視頻流媒體視頻平臺EasyCVR拓展性強,視頻能力豐富,具體可實現視頻監控直播、視頻輪播、視頻錄像、…

公網遠程連接Redis數據庫「內網穿透」

文章目錄 1. Linux(centos8)安裝redis數據庫2. 配置redis數據庫3. 內網穿透3.1 安裝cpolar內網穿透3.2 創建隧道映射本地端口 4. 配置固定TCP端口地址4.1 保留一個固定tcp地址4.2 配置固定TCP地址4.3 使用固定的tcp地址連接 前言 潔潔的個人主頁 我就問你有沒有發揮&#xff0…

藍牙資訊|蘋果Apple Watch可手勢操控Mac和Apple TV等設備

根據美國商標和專利局(USPTO)公示的清單,蘋果公司近日獲得了一項技術專利,概述了未來的 Apple Watch 手表,使用手勢等操控 Mac 和 Apple TV 等設備。 該專利描述未來 Apple Watch 可以交互實現編輯圖像、繪圖、處理文…

02:STM32--EXTI外部中斷

目錄 一:中斷 1:簡歷 2:AFIO 3:EXTI ?編輯 4:NVIC基本結構 5:使用步驟 二:中斷的應用 A:對外式紅外傳感計數器 1:連接圖?編輯 2:函數介紹 3:硬件介紹 4:計數代碼 B;旋轉編碼計數器 1:連接圖 2:硬件介紹 3:旋轉編碼器代碼: 一:中斷 1:簡歷 中斷:在主程…

Flutter 測試小結

Flutter 項目結構 pubspec.yaml 類似于 RN 的 package.json,該文件分別在最外層及 example 中有,更新該文件后,需要執行的 Pub get lib 目錄下的 dart 文件為 Flutter 插件封裝后的接口源碼,方便在其他 dart 文件中調用 example 目…

python通過S7協議讀取西門子200smart數據

發現網上很多關于python通過s7協議控制200smart的代碼都失敗,我猜應該是版本的問題。自己搗鼓了半天,終于測試成功 from snap7 import util,clientmy_plc client.Client() #建立一個客戶端對象 my_plc.set_connection_type(3) #如果是200smart,必須有此…