「LDAP」:修訂間差異
跳至導覽
跳至搜尋
(未顯示同一使用者於中間所作的 1 次修訂) | |||
第114行: | 第114行: | ||
<syntaxhighlight lang="shell-session"> | <syntaxhighlight lang="shell-session"> | ||
$ ldapdelete -x -y ~/passwd-Manager.txt 'uid=gslin,ou=People,dc=example,dc=com' | $ ldapdelete -x -y ~/passwd-Manager.txt 'uid=gslin,ou=People,dc=example,dc=com' | ||
</syntaxhighlight> | |||
=== 修改使用者密碼 === | |||
在忘記密碼時可以用,這需要管理員權限才能改: | |||
<syntaxhighlight lang="shell-session"> | |||
$ ldappasswd -x -D 'cn=Manager,dc=example,dc=com' -W -S 'uid=gslin,ou=People,dc=example,dc=com' | |||
</syntaxhighlight> | </syntaxhighlight> | ||
== 相關連結 == | == 相關連結 == | ||
* [[OpenLDAP]] | * [[OpenLDAP]] |
於 2018年4月16日 (一) 07:24 的最新修訂
LDAP指的是Lightweight Directory Access Protocol,是一個開放標準。經常被用在管理使用者帳號及權限。
使用者操作
使用者最常用的操作應該就是修改密碼:
$ ldappasswd -x -D 'uid=gslin,ou=People,dc=example,dc=com' -W -S
系統操作
在Ubuntu上可以透過ldap-utils
裡面的軟體對LDAP伺服器操作,其中ldap*
系列指令有一些共通參數:
- 表示操作使用者的
-D
,通常會使用管理員帳號操作,像是-D 'cn=Manager,dc=example,dc=com'
或是-D 'cn=admin,dc=example,dc=com'
。 - 表示base的
-b
,像是-b 'dc=example,dc=com'
。
這些參數可以透過~/.ldaprc
的設定讓使用者不需要每次都輸入:
BASE dc=example,dc=com BINDDN cn=Manager,dc=example,dc=com
另外密碼是每次都得輸入的項目:
- 表示操作使用者密碼的
-y
,後面接檔案名稱,像是-y ~/passwd-Manager.txt
。另外一種輸入密碼的方式為-W
,表示程式執行時手動輸入密碼。
新增使用者
這邊是選用inetOrgPerson
處理,要給Unix-like系統帳號使用的,可以考慮用posixAccount
。
指令:
$ ldapmodify -x -y ~/passwd-Manager.txt -f user.ldif
對應的LDIF:
dn: uid=${USERNAME},ou=People,dc=example,dc=com changetype: add objectClass: inetOrgPerson cn: ${USERNAME} gn: ${FIRSTNAME} sn: ${LASTNAME} uid: ${USERNAME} userPassword: ${PASSWORD_APR1MD5}
上面的行為可以寫一隻script使用(需要自行修改BASEDN
):
#!/bin/bash
work() {
local BASEDN
BASEDN="dc=example,dc=com"
local MAILBASE
MAILBASE="example.com"
local BASEDIR
BASEDIR=$(dirname "${BASE_SOURCE}")
local DISPLAYNAME
local FIRSTNAME
local LASTNAME
local PASSWORD
local PASSWORD_APR1MD5
local USERNAME
read -p 'Username: ' -r USERNAME
read -p 'Display name: ' -r DISPLAYNAME
read -p 'First name: ' -r FIRSTNAME
read -p 'Last name: ' -r LASTNAME
stty -echo
read -p 'Password: ' -r PASSWORD
stty echo
PASSWORD_APR1MD5=$(slappasswd -h '{CRYPT}' -c '$1$%.8s' -s "${PASSWORD}")
cat <<EOF | ldapmodify -x -y "${BASEDIR}"/passwd-Manager.txt
dn: uid=${USERNAME},ou=People,${BASEDN}
changetype: add
objectClass: inetOrgPerson
cn: ${USERNAME}
displayName: ${DISPLAYNAME}
gn: ${FIRSTNAME}
mail: ${USERNAME}@${MAILBASE}
sn: ${LASTNAME}
uid: ${USERNAME}
userPassword: ${PASSWORD_APR1MD5}
EOF
}
work
查詢使用者
一般情況下,不需要拉出密碼欄位時可以用anonymous的方式列出(不指定密碼相關指令時會自動變成anonymous行為),像是這樣:
$ ldapsearch -x 'uid=gslin'
如果有需要拉出密碼欄位需求時,會需要登入(這邊有透過~/.ldaprc
減少輸入的參數):
$ ldapsearch -x -y ~/passwd-Manager.txt 'uid=gslin'
刪除使用者
刪除會透過有寫入權限(刪除權限)的帳號來處理,會需要指定dn
欄位,也就是完整的名稱:
$ ldapdelete -x -y ~/passwd-Manager.txt 'uid=gslin,ou=People,dc=example,dc=com'
修改使用者密碼
在忘記密碼時可以用,這需要管理員權限才能改:
$ ldappasswd -x -D 'cn=Manager,dc=example,dc=com' -W -S 'uid=gslin,ou=People,dc=example,dc=com'