研究 LDAP 的便利工具也有一段時日了,
偏好使用純文字介面的我當然不太可能選擇 GUI client,
所以一開始是先挑了功能不太齊全的 ldapsh,
它提供了一個類似 shell 的介面讓人能編輯或刪除 LDAP 裡的資料,
不過似乎找不到新增資料的方式,
至於會啟動什麼編輯器則是看 EDITOR 這個環境變數決定;
最後相中的是 ldapscripts 這個 ports,
安裝完之後只要做一些簡單的設定就行了,
不過唯一的缺陷似乎是沒支援 starttls,
這樣可能會強迫我開 ldaps 協定吧,
不過目前我只把這個裝在 LDAP server 所在的機器上,
所以其實還算可接受的範圍內。
裝完它以後相關的設定檔會放在 /usr/local/etc/ldapscripts 下,
最主要是先修改 ldapscripts.conf 這個檔:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
SERVER="ldap://host.domain" BINDDN="cn=Manager,dc=xxx,dc=yyy" BINDPWDFILE="/usr/local/etc/ldap.secret" ... USHELL="/bin/tcsh" UHOMES="/home/%u" # You may use %u for username here CREATEHOMES="yes" # Create home directories and set rights ? HOMESKEL="/etc/skel" # Directory where the skeleton files are located. Ignored if undefined or nonexistant. HOMEPERMS="755" # Default permissions for home directories ... PASSWORDGEN="<ask>" ... ICONVBIN="/usr/local/bin/iconv" ICONVCHAR="BIG5" ... GETENTPWCMD="pw usershow" GETENTGRCMD="pw groupshow" ... GTEMPLATE="/usr/local/etc/ldapscripts/ldapaddgroup.template" UTEMPLATE="/usr/local/etc/ldapscripts/ldapadduser.template" |
BINDPWDFILE 的路徑我有改過,
讓它跟其它 LDAP clients 共用一個 manager 的密碼檔,
這樣也不用怕忘記調整讀取權限;
HOMESKEL 不能把它指到 /usr/share/skel 去,
因為 ldapscripts 是直接照著檔名 cp 而不會移除檔名前面的 "dot" 前綴字,
所以自己去掉 dot 以後丟到 /etc/skel 也不是壞事。
新增 user 的範本檔 ldapadduser.template 內容如下 (不用改裡面的字):
1 2 3 4 5 6 7 8 9 10 11 |
dn: uid=<user>,<usuffix>,<suffix> objectClass: inetOrgPerson objectClass: posixAccount objectClass: shadowAccount cn: <user> uid: <user> sn: <user> uidNumber: <uid> gidNumber: <gid> homeDirectory: <home> loginShell: <shell> |
新增 group 的範本檔 ldapaddgroup.template 內容則是:
1 2 3 4 5 |
dn: cn=<group>,<gsuffix>,<suffix> objectClass: posixGroup cn: <group> gidNumber: <gid> userPassword: {crypt}* |
ldapscripts 安裝的執行檔在 /usr/local/sbin 下,
好奇這些 scripts 怎麼實作的可以看看 /usr/local/lib/ldapscripts/runtime 這個檔;
執行檔裡有個 ldapinit 看起來實在太危險了我直接 rm 掉它,
這些 scripts 的缺點有兩個,
一個是指令能給的參數實在是不太多,
一個是砍東西的時候都不會要求確認就直接刪了,
不過也算是齊備了帳號管理的基本功能,
搭配 ldapsh 一起用更能達到相輔相成的效果。