說一說個人openldap配置,因爲個人虛擬機操做系統是銀河麒麟(內核是ubuntu),所以,沒法實現openldap的yum安裝,結果致使了不知爲什麼與網上大部分的文章所描述的文件結構不一致(slapd.d這個文件我搜了全部文件都沒找見,只能去/usr/local/openldap/etc/openldap/slapd.conf來進行配置),畢竟我是開發人員,最後的目的是寫出實現的代碼,功力仍是有些生疏。下面開始個人配置
首先進入上面的配置文件中,原文件如圖
html
將此配置文件下的schema/文件打開,將.schema文件都包含進去,而後再進入配置文件往下看,
apache
接下來添加ubuntu
loglevel 256 logfile /usr/local/openldap/var/slapd.log
用來生成日誌(挺重要的,它可讓你更清晰它的運行流程及原理)。
接下來很重要,就是更改用戶名及密碼suffix,rootdn
windows
這兩個至關與你的用戶名,它們的重要性不言而喻。
rootpw 至關於你的密碼,建議不要用明文,改成密文更安全,這裏說一下,更改密碼的url是在/usr/local/openldap/sbin中,由於在/usr/local/openldap/bin中也有類似的文件,當時一直在提示報錯沒找到緣由(原諒個人生疏......).這種東西是搜不到的,切記切記。
更改密碼命令
在sbin目錄下安全
./slappasswd -h{SSHA} 輸入密碼(已翻譯成中文...) 確認新密碼(已翻譯成中文...)
將{SSHA}的密文密碼複製到配置文件中。
基本上配置就這樣了,之後進行同步配置時再單獨說。app
說一下使用
配置完以後,啓動slapd文件dom
/usr/local/openldap/libexec/slapd -d 256
這個圖片表示服務端啓動成功
爲了方便
能夠下載一個客戶端軟件
我下的是ApacheDirectoryStudio 網址:http://directory.apache.org/s...
還挺好用
輸入主機地址、用戶、密碼,檢測鏈接,若沒有問題,在服務端建立一個test.ldif文件。(注意網上添加這個文件數據是直接運行,當時想不通究竟是在哪一個目錄下建立,後來敲了下面的ldapadd命令後頓悟應該與命令文件在同一目錄下,即 /usr/local/openldap/bin下建立這個文件)url
dn: dc=mydomain,dc=com objectClass: dcObject objectClass: organization dc: mydomain o: mydomain.Inc dn: cn=Manager,dc=mydomain,dc=com objectClass: organizationalRole cn: Manager dn: ou=itsection,dc=mydomain,dc=com ou: itsection objectClass: organizationalUnit dn: cn=sean,ou=itsection,dc=mydomain,dc=com ou: itsection cn: sean sn: zhouxiao objectClass: inetOrgPerson objectClass: organizationalPerson
插入數據spa
./ldapadd -x -D "cn=Manager,dc=mydomain,dc=com" -W -f test.ldif
服務端要你輸入密碼
只要不報錯,服務端就沒有問題。
而後觀察客戶端是否顯示,若沒問題,說明你的openldap運行無誤。操作系統
這個真是一個坑,我剛開始只是單純的覺得只須要擴展個.schema文件,而後在openldap配置文件中給它include進去就好了,事實上真正定義.schema文件後就不這樣想了,我先拿我配置的schema文件說一下:
attributetype ( 2017.1.4.1.0.1.1 NAME 'servId' DESC 'RFC2256: servId' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) attributetype ( 2017.1.4.1.0.1.2 NAME 'servName' DESC 'RFC2256: servName' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) attributetype ( 2017.1.4.1.0.1.3 NAME 'servIp' DESC 'RFC2256: servIp' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) attributetype ( 2017.1.4.1.0.1.4 NAME 'servPid' DESC 'RFC2256: servPid' EQUALITY caseIgnoreMatch SUBSTR caseIgnoreSubstringsMatch SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 SINGLE-VALUE ) objectclass ( 2017.1.4.1.0.1 NAME 'globalserver' DESC 'RFC2798: globalserver' SUP top STRUCTURAL MUST servId MAY ( servName $ servIp $ servPid) )
第一個坑:就是你的SYNTAX、EQUALITY、SUBSTR必定要與標準匹配,實在不行網上搜去查找(爲了這個匹配不知道我是怎麼到網上一個一個的文件試的....說多了都是淚)。網上的不少都是錯誤的,總之要勤快一點。第二個坑:就是你自定義的屬性必定不能跟內置的屬性有重複,切記切記!由於你最後真的有可能由於這個而瘋掉,明明什麼都是對的......還有一個不太肯定,就是OID號的問題,網上說最好能夠去本身申請一個,我這個是在網上抄的,目前沒什麼影響.....