- 建立你的 LDAP 相關節點如下:
- baseDN 設定為: dc=example,dc=dic
- RootDN 設定為: cn=Manager,dc=example,dc=dic
- RootDN 的密碼設定為: 2727175
mkdir ldap
cd ldap
vim basedn.ldif
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=example,dc=dic
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=example,dc=dic
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootPW
olcRootPW: 2727175 //可使用 slappasswd 設定加密密碼
ldapmodify -Y EXTERNAL -H ldapi:/// -f basedn.ldif
cat /etc/openldap/slapd.d/cn=config //查詢內容是否修改
- 因為預計要作為 Linux 的帳號驗證功能,因此請載入與 Linux 帳號相關的三個主要綱要檔 (schema)
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap:ldap /var/lib/ldap/DB_CONFIG
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
slaptest -u
- 基礎 LDAP 資料庫節點設計中,至少應具有底下的節點存在,請將這些節點匯入到資料庫內:
- dn: dc=example,dc=dic
- dn: cn=Manager,dc=example,dc=dic
- dn: ou=People,dc=example,dc=dic
- dn: ou=Group,dc=example,dc=dic
vim base.ldif
dn: dc=example,dc=dic
objectClass: top
objectClass: dcObject
objectclass: organization
o: example dic
dc: example
dn: cn=Manager,dc=example,dc=dic
objectClass: organizationalRole
cn: Manager
description: Directory Manager
dn: ou=People,dc=example,dc=dic
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=example,dc=dic
objectClass: organizationalUnit
ou: Group
ldapadd -x -W -D "cn=Manager,dc=example,dc=dic" -f /root/ldap/base.ldif
- 建立 10 個 LDAP 所管理的相關帳號,帳號相關資訊如下,請將該資訊匯入 LDAP 資料庫中:
- 假設使用者名稱為 webuser1 ~ webuser10
- 預設使用者密碼為 webpasswd 這個密碼
- 假設使用者的 UID 從 8001 開始編號
- 假設使用者的 GID 也是從 8001 開始編號,且有對應的私有群組
- 假設使用者的預設家目錄在 /rhome/ 底下
- 承上,這 10 個用戶的家目錄亦請自行設定好相關的位置與權限
mkdir /rhome
useradd -d /rhome/webuser1 -u 8001 webuser1
useradd -d /rhome/webuser2 -u 8002 webuser2
echo "webpasswd" | passwd --stdin webuser1
echo "webpasswd" | passwd --stdin webuser2
vim /usr/share/migrationtools/migrate_common.ph
$DEFAULT_MAIL_DOMAIN = "dc=example,dc=dic"; # 71 行左右
$DEFAULT_BASE = "dc=example,dc=dic"; # 74 行左右
$EXTENDED_SCHEMA = 1; # 90 行左右
grep webuser /etc/passwd > user.txt
grep webuser /etc/group > group.txt
/usr/share/migrationtools/migrate_passwd.pl user.txt > user.ldif
/usr/share/migrationtools/migrate_group.pl group.txt > group.ldif
vim /root/ldap/"腳本名稱".sh
#!/bin/bash
minuid=8000
home=/rhome
[ ! -d "${home}" ] && mkdir ${home}
date=$( echo $(( $(date +%s)/60/60/24 + 1)) )
ufile=/root/ldap/webuser.ldif
gfile=/root/ldap/webgroup.ldif
[ -f "${ufile}" ] && mv ${ufile} ${ufile}.backup
[ -f "${gfile}" ] && mv ${gfile} ${gfile}.backup
for i in $( seq 1 10)
do
username="webuser${i}"
userid=$( echo $(( ${minuid} + ${i} )) )
echo "${這裡加上 user.ldif 的內容
homeDirectory: /rhome/${username}
" >> ${ufile}
echo "${這裡加上 group.ldif 的內容
gidNumber: ${userid}
" >> ${gfile}
cp -a /etc/skel ${home}/${username}
chown ${userid}:${userid} -R ${home}/${username}
chmod 700 ${home}/${username}
done
ldapadd -x -W -D "cn=Manager,dc=example,dc=dic" -f /root/ldap/webuser.ldif
ldapadd -x -W -D "cn=Manager,dc=example,dc=dic" -f /root/ldap/webgroup.ldif
- 使用非加密的 LDAP 傳輸行為,因此請完成底下工作:
- 讓 server 自己可以使用 ldapsearch 查詢 ldap:// 的資料
- 讓 server 自己可以使用 LDAP 的帳號登入 Server 本身的系統 (請使用 ldap:// 網址)
ldapsearch -x -H ldap://127.0.0.1 -b "dc=example,dc=dic"
第二個步驟太複雜 在 例題 7.3.H 到 例題 7.3.J