LDAP 基礎教程
LDAP 全稱輕量級目錄訪問協議(英文:Lightweight Directory Access Protocol),是一個運行在 TCP/IP 上的目錄訪問協議。LDAP實現提供被稱爲目錄服務的信息服務,可以看做是一張特殊的數據庫系統。可以有效的解決衆多網絡服務的用戶賬戶問題,規定了統一的身份信息數據庫、身份認證機制和接口,實現了資源和信息的統一管理,保證了數據的一致性和完整性。
使用場景
有兩個系統A,B;需要把A系統創建的用戶同步到B中,而B是個apache 開源項目,此時需要藉助LDAP來解決。首先在A中建用戶的同時,同步更新到LDAP中,然後B系統從LDAP中同步到自己的系統中,這樣就實現了A中的用戶到B系統的同步。
LDAP理解
在LDAP中,信息以樹狀方式組織,基本數據單元是條目,而每個條目由屬性構成,屬性由類型(Type)和一個或多個值(Value)組成。
Entry
包含的信息描述了現實世界中的一個真實的對象,在目錄系統中可以理解爲一個節點。在目錄中添加一個Entry時,該Entry必須屬於一個或者多個對象類(Oject Class),Entry的類型由屬性Object Class規定。每個Entry都有一個唯一的DN(distinguished name)來標識Entry在directory中的位置。用Java的方式Entry相當於一個Instances,而Ojbect class自然就是Class。
根節點DN的命名有多種方法,其中之一就是域名命名法,例如sohu.com根階節點的DN應該是DN:dc=sohu,dc=com,People節點的DN:ou=People,dc=example,dc=com,RDN是目錄樹中節點的相對標識,例如People節點的RDN:ou=people。
Attribute
每個Entry都是由許多Attribute組成,每個屬性描述的是對象的一個特徵,每個屬性由一個類型和一個或多個值Value組成。
每個屬性類型有所對應的語法和匹配規則;對象類和屬性類型的定義均可以使用繼承的概念。每個條目創建時,必須定義所屬的對象類,必須提供對象類中的必選屬性類型的屬性值,在LDAP中一個屬性類型可以對應多個值。
常見屬性:
屬性名 | 是否必填 | 描述 |
---|---|---|
c | 否 | 國家 |
dc | 是 | domain component,常用來指一個域名的一部分 |
o | 否 | 該條目所屬的組織名(Organization Name) |
ou | 否 | 一個組織單元的名字 |
cn | 是 | common name,一個對象的名字,如果指人,使用全名 |
sn | 是 | Surname,一個人的姓 |
uid | 是 | Userid,某個用戶的登錄名,與Linux系統中用戶的uid不同 |
userPassword | 否 | 登陸密碼 |
否 | 郵箱 | |
givenName | 否 | 一個人的名 |
displayName | 否 | 顯示條目時要使用的首選名稱 |
uidNumber | 否 | 賬號的UID |
gidNumber | 否 | 賬號的GID |
homeDirectory | 否 | 用戶的家目錄指定 |
loginShell | 否 | 用戶登錄的SHELL |
employeeNumber | 否 | 工號相關信息 |
homePhone | 否 | 家庭電話 |
mobile | 否 | 該條目的手機號碼 |
description | 否 | 該條目的描述信息 |
Object class
在LDAP中,一個條目必須包含一個Oject class屬性,且需要賦予至少一個值。每個值將用作一條LDAP條目進行數據存儲的模板,模板中包含了一個條目必須被賦值的屬性和可選的屬性。
Object分爲三類,結構型(Structural),如Person和orginzationUnit,輔助型(Auxiliary),如extensibeObject,抽象型(Abstract):如top,抽象型的ObjectClass不能直接使用。
下面部分常用的ObjectClass,定義在/etc/openldap/schema/core.schema文件中
名稱 | 描述 | 必要屬性 |
---|---|---|
domain | ||
organization | o | |
organizationalUnit | ou | |
person | sn,cn | |
organizationPerson | cn,sn | |
top | 抽象型,頂級ObjectClass | |
posixAccount | Linux用戶 | cn,gidNumber,homeDirectory,uid,uidNumber |
posixGroup | Linux用戶組 | cn,gidNumber |
- Entry必須僅包含一個Structural類型的OjectClass,其他兩種類型可包括0或者多個。
LDAP 功能模型
描述LDAP 協議可以採用的相關操作,來訪問存儲在目錄樹中的數據,可以將操作分
成三組:
(1) 更新操作 包括添加,刪除,重命名,修改Entry
(2) Interrogation Operation 用於數據的查詢
(3) 認證和控制 (bind unbind abandon)
LDAP 安全模型
(1) 提供一個框架,包含目錄中的信息不被非法訪問,LDAP 的安全模型主要是通過身份認
證、安全通道和訪問控制(ACL)來實現。
(2) LDAP 是一個面向連接的協議,在能夠對LDAP 目錄進行任何操作之前,LDAP 客戶端
端必須獲得一個到LDAP 服務端的一個連接,在這個過程中需要對LDAP 客戶端的身份進
行驗證(可以理解爲用戶綁定)。
(3) 在用戶通過驗證之後,爲用戶分配附加的權限,比如一些用戶只能查看特定的Entry,而不能修改。一些用戶可以查看並且修改所有的Entry等。
下面是一個典型的 LDAP 目錄樹結構,其中每個節點表示一個條目。在下一節中,我們將按照這個結構來配置一個簡單的 LDAP 服務。
本文僅涉及沒有SSL的OpenLDAP配置。
一、環境準備
兩臺虛擬機
IP | hostname | 說明 |
---|---|---|
192.168.1.101 | openldap-server | server端 |
192.168.1.102 | openldap-client | client端 |
關閉SELinux
查看SELinux狀態:getenforce, 或/usr/sbin/sestatus
臨時關閉:
setenforce 0
永久關閉:
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/selinux/config
grep SELINUX=disabled /etc/selinux/config
關閉iptables
chkconfig iptables off
/etc/init.d/iptables stop
/etc/init.d/iptables status
官方文檔:
http://www.openldap.org/doc/admin24/
步驟
分爲server端操作和client端操作
二、server端安裝OpenLDAP
1. yum安裝OpenLDAP
[root@openldap-server ~]# yum install openldap openldap-servers openldap-servers-sql openldap-clients openldap-devel compat-openldap -y
OpenLDAP的相關配置文件信息
- /etc/openldap/slapd.conf:OpenLDAP的主配置文件,記錄根域信息,管理員名稱,密碼,日誌,權限等
- /etc/openldap/slapd.d/*:這下面是/etc/openldap/slapd.conf配置信息生成的文件,每修改一次配置信息,這裏的東西就要重新生成
- /etc/openldap/schema/*:OpenLDAP的schema存放的地方
- /var/lib/ldap/*:OpenLDAP的數據文件
- /usr/share/openldap-servers/slapd.conf.obsolete 模板配置文件
- /usr/share/openldap-servers/DB_CONFIG.example 模板數據庫配置文件
OpenLDAP監聽的端口:
- 默認監聽端口:389(明文數據傳輸)
- 加密監聽端口:636(密文數據傳輸)
2. 複製ldap配置文件到/etc
[root@openldap-server ~]# cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf
3. 生成ldap管理員密碼(把ldappassword改爲自己的管理員密碼)
[root@openldap-server ~]# slappasswd -s ldappassword
{SSHA}b6YpCvRFWAWQdJpueuyzk79VXlikj4Z1
4. 修改slapd.conf
修改其中cn,dc相關內容,及rootpw密文密碼,rootpw配置上面設置的密碼
(rootpw必須頂格寫,與密碼Tab鍵分開)
[root@openldap-server ~]# cp /etc/openldap/slapd.conf /etc/openldap/slapd.conf.bak
[root@openldap-server ~]# vim /etc/openldap/slapd.conf
......
database bdb
suffix "dc=qq,dc=com"
checkpoint 1024 15
rootdn "cn=Manager,dc=qq,dc=com" #管理LDAP中信息的最高權限,即管理員權限,登陸時用。
......
rootpw {SSHA}b6YpCvRFWAWQdJpueuyzk79VXlikj4Z1
檢測/etc/openldap/slapd.conf是否有錯誤
[root@openldap-server ~]# slaptest -f /etc/openldap/slapd.conf
config file testing succeeded
5. 檢測並重新生成ldap數據庫
[root@openldap-server ~]# cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG # 拷貝DB_CONFIG文件
[root@openldap-server ~]# cd /etc/openldap/
[root@openldap-server openldap]# ls -l slapd.d/
drwxr-x--- 3 ldap ldap 4096 7月 13 13:59 cn=config
-rw-r----- 1 ldap ldap 1281 7月 13 13:50 cn=config.ldif
[root@openldap-server openldap]# rm -rf slapd.d/* # 刪除默認配置 (否則添加ldap用戶時會報錯)
[root@openldap-server openldap]#
官方對於OpenLDAP2.4 ,不推薦使用 slapd.conf 作爲配置文件。從這個版本開始所有配置數據都保存在 /etc/openldap/slapd.d/中
[root@openldap-server openldap]# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
5b02d207 bdb_db_open: database "dc=qq,dc=com": db_open(/var/lib/ldap/id2entry.bdb) failed: No such file or directory (2).
5b02d207 backend_startup_one (type=bdb, suffix="dc=qq,dc=com"): bi_db_open failed! (2)
slap_startup failed (test would succeed using the -u switch)
[root@openldap-server openldap]# slaptest -u
config file testing succeeded
出現succeed繼續
6. 修改相關ldap文件權限
[root@openldap-server openldap]# chown -R ldap:ldap /var/lib/ldap/
[root@openldap-server openldap]# chown -R ldap:ldap /etc/openldap/
7. 啓動slapd服務
[root@openldap-server openldap]# service slapd start
Starting slapd: [ OK ]
[root@openldap-server openldap]# service slapd status
slapd (pid 12896) is running...
[root@openldap-server openldap]# chkconfig slapd on
[root@openldap-server openldap]# lsof -i:389
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
slapd 12896 ldap 7u IPv4 702934 0t0 TCP *:ldap (LISTEN)
slapd 12896 ldap 8u IPv6 702935 0t0 TCP *:ldap (LISTEN)
三、OpenLDAP日誌功能開啓
1. slapd.conf配置文件里加上日誌行
這裏的日誌級別有很多種,這裏選擇256這個值的級別(主從節點都要打開openldap日誌功能)
[root@openldap-master ~]# cp /etc/openldap/slapd.conf{,.bak3}
[root@openldap-master ~]# vim /etc/openldap/slapd.conf #中間的空格用tab鍵分開
....... # 最後添加
loglevel 256
2. 修改了配置文件,所有得重新生成配置文件的信息
[root@openldap-master ~]# rm -rf /etc/openldap/slapd.d/*
[root@openldap-master ~]# slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/
config file testing succeeded
[root@openldap-master ~]# slaptest -u
config file testing succeeded
[root@openldap-master ~]# chown -R ldap:ldap /var/lib/ldap/
[root@openldap-master ~]# chown -R ldap:ldap /etc/openldap/
3. 修改/etc/rsyslog.conf文件,加上下面內容
[root@openldap-master ~]# cp /etc/rsyslog.conf{,.bak}
[root@openldap-master ~]# vim /etc/rsyslog.conf
........ # 最後添加
local4.* /var/log/slapd/slapd.log
4. 創建日誌文件目錄,授權
[root@openldap-master ~]# mkdir /var/log/slapd
[root@openldap-master ~]# chmod 755 /var/log/slapd/
[root@openldap-master ~]# chown ldap.ldap /var/log/slapd/
5. 重啓syslog服務和slapd服務
[root@openldap-master ~]# /etc/init.d/rsyslog restart
Shutting down system logger: [ OK ]
Starting system logger: [ OK ]
[root@openldap-master ~]# /etc/init.d/slapd restart
Stopping slapd: [ OK ]
Starting slapd: [ OK ]
[root@openldap-master ~]# lsof -i:389
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
slapd 13773 ldap 7u IPv4 840484 0t0 TCP *:ldap (LISTEN)
slapd 13773 ldap 8u IPv6 840485 0t0 TCP *:ldap (LISTEN)
6. 查看openldap日誌信息
[root@openldap-master ~]# tail -f /var/log/slapd/slapd.log
四、server端安裝migrationtools,創建根域條目(可選)
參考:http://book.51cto.com/art/201602/505737.htm
1. 安裝migrationtools 工具
migrationtools 實現OpenLDAP 用戶及用戶組的添加。
[root@openldap-server openldap]# yum install migrationtools -y
2. 編輯/usr/share/migrationtools/migrate_common.ph並修改相關配置
[root@openldap-server openldap]# cp /usr/share/migrationtools/migrate_common.ph{,.bak}
[root@openldap-server openldap]# vim /usr/share/migrationtools/migrate_common.ph
# 搜索”dc=”,值改爲與slapd.conf一致內容
......
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "qq.com";
# Default base
$DEFAULT_BASE = "dc=qq,dc=com";
3. 創建OpenLDAP 根域條目,base.ldif
[root@openldap-server openldap]# /usr/share/migrationtools/migrate_base.pl > base.ldif
[root@openldap-server openldap]# cat base.ldif
dn: dc=qq,dc=com
dc: qq
objectClass: top
objectClass: domain
dn: ou=Hosts,dc=qq,dc=com
ou: Hosts
objectClass: top
objectClass: organizationalUnit
dn: ou=Rpc,dc=qq,dc=com
ou: Rpc
objectClass: top
objectClass: organizationalUnit
dn: ou=Services,dc=qq,dc=com
ou: Services
objectClass: top
objectClass: organizationalUnit
dn: nisMapName=netgroup.byuser,dc=qq,dc=com
nismapname: netgroup.byuser
objectClass: top
objectClass: nisMap
dn: ou=Mounts,dc=qq,dc=com
ou: Mounts
objectClass: top
objectClass: organizationalUnit
dn: ou=Networks,dc=qq,dc=com
ou: Networks
objectClass: top
objectClass: organizationalUnit
dn: ou=People,dc=qq,dc=com
ou: People
objectClass: top
objectClass: organizationalUnit
dn: ou=Group,dc=qq,dc=com
ou: Group
objectClass: top
objectClass: organizationalUnit
dn: ou=Netgroup,dc=qq,dc=com
ou: Netgroup
objectClass: top
objectClass: organizationalUnit
dn: ou=Protocols,dc=qq,dc=com
ou: Protocols
objectClass: top
objectClass: organizationalUnit
dn: ou=Aliases,dc=qq,dc=com
ou: Aliases
objectClass: top
objectClass: organizationalUnit
dn: nisMapName=netgroup.byhost,dc=qq,dc=com
nismapname: netgroup.byhost
objectClass: top
objectClass: nisMap
可以編輯base.ldif 進行修改,將不需要的條目刪除,然後通過ldapadd 導入至OpenLDAP目錄樹。
4. 添加base.ldif到ldap(輸入密碼爲上面創建的:ldappassword)
[root@openldap-server openldap]# ldapadd -x -D "cn=Manager,dc=qq,dc=com" -w ldappassword -f ./base.ldif
Enter LDAP Password:
ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1) '
出現這個錯誤的時候,查看服務和端口都已經開啓了,需要你手動指定主機名和你的端口號(ldap端口號爲389),使用-h 加上主機名。
[root@openldap-server openldap]# ldapadd -x -D "cn=Manager,dc=qq,dc=com" -w ldappassword -f ./base.ldif -h openldap-server -p 389
adding new entry "dc=qq,dc=com"
adding new entry "ou=Hosts,dc=qq,dc=com"
adding new entry "ou=Rpc,dc=qq,dc=com"
adding new entry "ou=Services,dc=qq,dc=com"
adding new entry "nisMapName=netgroup.byuser,dc=qq,dc=com"
adding new entry "ou=Mounts,dc=qq,dc=com"
adding new entry "ou=Networks,dc=qq,dc=com"
adding new entry "ou=People,dc=qq,dc=com"
adding new entry "ou=Group,dc=qq,dc=com"
adding new entry "ou=Netgroup,dc=qq,dc=com"
adding new entry "ou=Protocols,dc=qq,dc=com"
adding new entry "ou=Aliases,dc=qq,dc=com"
adding new entry "nisMapName=netgroup.byhost,dc=qq,dc=com"
5. 檢查ldapadd是否成功(密碼爲上面創建的:ldappassword)(必須檢查確認Manager數據添加了,才能通過phpldapAdmin登錄)
[root@openldap-server openldap]# ldapsearch -x -D "cn=Manager,dc=qq,dc=com" -b "ou=Aliases,dc=qq,dc=com" -w ldappassword
# extended LDIF
#
# LDAPv3
# base <ou=Aliases,dc=qq,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# Aliases, qq.com
dn: ou=Aliases,dc=qq,dc=com
ou: Aliases
objectClass: top
objectClass: organizationalUnit
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
六、安裝openLdap桌面服務
1. yum安裝httpd及PhpLdapAdmin
[root@openldap-server openldap]# rpm -ivh http://mirrors.ukfast.co.uk/sites/dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@openldap-server openldap]# yum install httpd phpldapadmin -y
2. 配置/etc/httpd/conf.d/phpldapadmin.conf允許從遠程訪問
[root@openldap-server openldap]# cp -a /etc/httpd/conf.d/phpldapadmin.conf{,.bak} #可以先把此文件cp備份一份
[root@openldap-server openldap]# vim /etc/httpd/conf.d/phpldapadmin.conf
Alias /phpldapadmin /usr/share/phpldapadmin/htdocs
Alias /ldapadmin /usr/share/phpldapadmin/htdocs
<Directory /usr/share/phpldapadmin/htdocs>
Order Deny,Allow
Allow from all
Allow from 127.0.0.1 #或者去掉下面這三行內容,表示運行所有客戶機訪問(本測試案例就去掉了這三行)
Allow from ::1
Allow from all #允許哪些IP地址訪問phpldapadmin,我寫的全部。
</Directory>
3. 修改/etc/phpldapadmin/config.php配置用DN登錄
[root@openldap-server openldap]# cp /etc/phpldapadmin/config.php{,.bak}
[root@openldap-server openldap]# vim /etc/phpldapadmin/config.php
.......
//$servers->setValue('login','attr','uid'); #註釋掉這一行
$servers->setValue('login','attr','dn'); #添加這一行
[root@openldap-server openldap]# diff /etc/phpldapadmin/config.php /etc/phpldapadmin/config.php.bak
398,399c398,399
< //$servers->setValue('login','attr','uid');
< $servers->setValue('login','attr','dn');
---
> $servers->setValue('login','attr','uid');
>
4. 啓動httpd服務
[root@openldap-server openldap]# chkconfig httpd on
[root@openldap-server openldap]# service httpd start
Starting httpd: httpd: apr_sockaddr_info_get() failed for openldap-server
httpd: Could not reliably determine the server's' fully qualified domain name, using 127.0.0.1 for ServerName
[ OK ]
[root@openldap-server openldap]# service httpd status
httpd (pid 13010) is running...
[root@openldap-server openldap]# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
httpd 13010 root 4u IPv6 757231 0t0 TCP *:http (LISTEN)
httpd 13012 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN)
httpd 13013 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN)
httpd 13014 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN)
httpd 13015 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN)
httpd 13016 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN)
httpd 13017 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN)
httpd 13018 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN)
httpd 13019 apache 4u IPv6 757231 0t0 TCP *:http (LISTEN)
5. 打開Web UI並登錄LDAP
URL: $IP/phpldapadmin
用戶名 "cn=Manager,dc=qq,dc=com"
密碼 "ldappassword"
七、新建組織(公司)、管理員、組及用戶
添加用戶和用戶組的方式有兩種。一種是將系統用戶通過migrationtools 工具生成LDIF 文件並結合ldapadd 命令導入OpenLDAP 目錄樹中,生成OpenLDAP 用戶。另一種通過自定義LDIF 文件並通過OpenLDAP 命令進行添加或者修改操作。本文主要介紹第二種來完成OpenLDAP用戶的添加。
1. 組織
創建組織:
[root@openldap-server data]# vim o.ldif #在根目錄下建立不同組織
dn: o=tengxun,dc=qq,dc=com
objectclass: top
objectclass: dcobject
objectclass: organization
dc: qq
o: tengxun
description: 騰訊
street: 深圳騰訊大廈
此LDIF 文件中存在中文字符,建議使用Linux dos2unix 命令進行轉換,例如dos2unix -k –n filenew_file。作者建議儘可能不要使用中文字符進行添加,而使用英文添加。
導入組織數據
[root@openldap-server data]# ldapadd -x -D "cn=Manager,dc=qq,dc=com" -w ldappassword -f ./o.ldif -h openldap-server -p 389
adding new entry "o=tengxun,dc=qq,dc=com"
============================================================
如果報錯:
[root@openldap-server data]# ldapadd -x -D "cn=Manager,dc=qq,dc=com" -w ldappassword -f ./o.ldif -h openldap-server -p 389
ldapadd: attributeDescription "dn": (possible missing newline after line 3, entry "o=tengxun,dc=qq,dc=com"?)
adding new entry "o=tengxun,dc=qq,dc=com"
ldap_add: Type or value exists (20)
additional info: ou: value #0 provided more than once
產生原因:o.ldif文件中的不規範的空格所致!!即導入的數據含有空格所致!
糾錯如下:
dn:(空格)o=tengxun,dc=qq,dc=com
changetype:(空格)add(結尾無空格)
objectclass:(空格)top(結尾無空格)
objectclass:(空格)organizationalUnit(結尾無空格)
ou:(空格)echnology(結尾無空格)
(1空行,空行必須要定格,不能留空格)(結尾無空格)
........(後面的配置內容糾正方法同樣)
===========================================================
查詢剛導入數據
[root@openldap-server data]# ldapsearch -x -D "cn=Manager,dc=qq,dc=com" -b "o=tengxun,dc=qq,dc=com" -w ldappassword -h openldap-server -p 389
# extended LDIF
#
# LDAPv3
# base <o=tengxun,dc=qq,dc=com> with scope subtree
# filter: (objectclass=*)
# requesting: ALL
#
# tengxun, qq.com
dn: o=tengxun,dc=qq,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
dc: qq
o: tengxun
description:: 572R5biF
street:: 5YyX5Lqs5biC5a6J57+U5YyX6YeM55SyMTHlj7fljJfkuqzliJvkuJrlpKfljqZC5bqnN
zAx5a6k
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
2. 管理員及組
在新建組織下創建管理員及組
在tengxun組織下創建一個 Manager 的組織角色(該角色內的用戶具有管理整個 LDAP 的權限)和 People 和 Group 兩個組織單元:
[root@openldap-server data]# vim admin_group.ldif
# admin
dn: cn=Manager,o=tengxun,dc=qq,dc=com
objectClass: organizationalRole
cn: Manager
# Group組
dn: ou=Group,o=tengxun,dc=qq,dc=com
ou: Group
objectClass: organizationalUnit
# People組
dn: ou=People,o=tengxun,dc=qq,dc=com
ou: People
objectClass: organizationalUnit
導入組數據
[root@openldap-server data]# ldapadd -x -D "cn=Manager,dc=qq,dc=com" -w ldappassword -f ./admin_group.ldif -h openldap-server -p 389
adding new entry "cn=Manager,o=tengxun,dc=qq,dc=com"
adding new entry "ou=Group,o=tengxun,dc=qq,dc=com"
adding new entry "ou=People,o=tengxun,dc=qq,dc=com"
通過以上的所有步驟,我們就設置好了一個 LDAP 目錄樹:其中基準 dn: o=tengxun,dc=qq,dc=com 是該樹的根節點,其下有一個管理域 cn=Manager,o=tengxun,dc=qq,dc=com 和兩個組織單元 ou=People,o=tengxun,dc=qq,dc=com 及 ou=Group,o=tengxun,dc=qq,dc=com。
3. 用戶
創建用戶及部門(cn組)
[root@openldap-server data]# vim adduser.ldif
# create new
# replace to your own domain name for "dc=***,dc=***" section
dn: uid=huateng.ma,ou=People,o=tengxun,dc=qq,dc=com
objectClass: top
objectclass: person
#objectclass: organizationalPerson
objectclass: inetOrgPerson
objectClass: shadowAccount
uid: huateng.ma
cn: huateng.ma
sn: ma
displayName: 馬化騰
ou: People
description: 可視化
#userPassword: ldappassword
userPassword: {SSHA}b6YpCvRFWAWQdJpueuyzk79VXlikj4Z1
mail: [email protected]
dn: cn=kaifa,ou=Group,o=tengxun,dc=qq,dc=com
objectClass: top
objectClass: groupOfUniqueNames
cn: kaifa
uniquemember: uid=huateng.ma,ou=People,o=tengxun,dc=qq,dc=com
導入用戶數據
[root@openldap-server data]# ldapadd -x -D "cn=Manager,dc=qq,dc=com" -w ldappassword -f ./adduser.ldif -h openldap-server -p 389
adding new entry "uid=huateng.ma,ou=People,o=tengxun,dc=qq,dc=com"
adding new entry "cn=kaifa,ou=Group,o=tengxun,dc=qq,dc=com"
可以登陸phpLDAPadmin的web界面查詢新導入的數據
添加其它用戶
[root@openldap-server data]# vim adduser.ldif
# create new
# replace to your own domain name for "dc=***,dc=***" section
dn: uid=san.zhang,ou=People,o=tengxun,dc=qq,dc=com
objectClass: top
objectclass: person
#objectclass: organizationalPerson
objectclass: inetOrgPerson
objectClass: shadowAccount
uid: san.zhang
cn: san.zhang
sn: zhang
displayName: 張三
ou: People
description: 可視化
#userPassword: ldappassword
userPassword: {SSHA}b6YpCvRFWAWQdJpueuyzk79VXlikj4Z1
mail: [email protected]
把san.zhang用戶加入到kaifa組中(沒驗證)
dn: cn=kaifa,ou=Group,o=tengxun,dc=qq,dc=com
changetype: modify
add: memberuid
memberuid: san.zhang
或者
通過OpenLDAP界面把san.zhang用戶添加到kaifa組中
點擊左側相應組織下的"ou=Group" --> "cn=kaifa" --> "uniqueMember" --> 點擊下面的賦值,複製上面一行,然後修改uid保存即可。
八、參考:
http://book.51cto.com/art/201602/505669.htm
https://www.cnblogs.com/kevingrace/p/9052669.html
https://www.cnblogs.com/AloneSword/p/4758814.html
當你發現自己的才華撐不起野心時,就請安靜下來學習吧