技術討論區 > LDAP 討論區

[筆記]LDAP服務實做筆記! (二)

(1/7) > >>

日京三子:
歡迎轉載 . 轉載前請先以電子郵件或者書面方式告知. 如果有任何修改請來信通知小弟, 不得作為商業用途(包含轉變為任何形式的講義,書籍片段, 網頁文章, 或者教材, 本人會保留任何形式的訴訟權利), 轉載時並請保持此一宣告.

作者: 日京三子 <a843433{at}yahoo{dot}com>

在第一篇裡面, 小弟告訴大家, 如何建立一個LDAP系統的根本. 這次, 就把目標放在跟PAM系統, 包含Sendmail 與 dovecot 這兩部分.


在第一篇的時候, 已經告訴大家如何建立一個基礎的LDAP系統. 基本上, 如果你很完整的按照小弟的步驟匯入LDAP server, 並且也用ldapsearch檢查過資料內容, 那應該是OK了才對.

小弟建立了一個使用者, 他"長"的像下面這樣:
--- 代碼: ---dn: uid=abcd,ou=People,dc=your,dc=com
uid: abcd
cn: abcd
objectClass: account
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$1$ahz3dh5h$TrjekyZu/y5yKXwud5zWO/
shadowLastChange: 12481
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 514
gidNumber: 502
homeDirectory: /home/abcd
--- 程式碼結尾 ---
(沒錯! 就是在第一篇裡面的範例人物, abcd! )

接著, 我們要讓這個abcd能夠像一般利用useradd所新增的使用者一樣, 可以透過LDAP服務, 登入到Linux系統. 想當然爾, 第一步就是結合PAM系統! 首先, 先修改 /etc/openldap/ldap.conf 這個檔案:
--- 代碼: ---HOST 127.0.0.1
BASE dc=your,dc=com
URI     ldap://127.0.0.1
--- 程式碼結尾 ---
特別注意的是, HOST一定是你的正確IP, 或者是能透過DNS系統能夠找到的網域主機名稱. 如果這地方設定錯誤, 或者是一個不正確的IP, LDAP系統就跑不起來 ! 如果怕死, 請跟我一樣, 設定為127.0.0.1, 這樣最保險 :lol:

BASE 的設定值 則一定要跟你在 /etc/openldap/sldap.conf 裡面這段的設定相同:
--- 代碼: ---suffix          "dc=your,dc=com"
--- 程式碼結尾 ---


至於URI ldap://127.0.0.1 這部分的描述, 很抱歉, 小弟只是按照該檔案的說明照抄的, 並沒有去深刻的瞭解是甚麼作用, 還請知道的朋友告知一下 ^^"[/list]






再來, 是修改 /etc/ldap.conf 這個檔案:
--- 代碼: ---host 127.0.0.1
base dc=your,dc=com
--- 程式碼結尾 ---


此時, 請檢查一下, 因為我們要利用的是PAM系統, 而我們需要的pam_ldap模組是屬於nss_ldap的一部份, 所以請你用這個指令檢查一下(RedHat系的就不用檢查了, 一定有! ):
--- 代碼: ---rpm -qa|grep nss_ldap
--- 程式碼結尾 ---
像我的RedHat Fedora Core 2的版本裡面, 內建的是這個模組
--- 代碼: ---nss_ldap-217-1
--- 程式碼結尾 ---


當上面的部分修改完, 檢查OK的時候, 請深呼吸, 並先把/etc/pam.d/system-auth複製一份到其他地方. 因為這是系統最重要的檔案, 如果你改錯了, 很抱歉, 系統就不會讓你登入了(除了進入單機救援模式之外...但太嚴重也會讓Single mode起不來, 必須靠救援磁片或開機光碟來搶救, 千萬要小心!).... 在複製備份之後, 請把/etc/pam.d/system-auth修改成像下面一樣:
--- 代碼: ---#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      /lib/security/$ISA/pam_env.so
auth sufficient /lib/security/pam_winbind.so
auth        sufficient    /lib/security/$ISA/pam_unix.so likeauth nullok
#       ----------------------------
auth        sufficient    /lib/security/$ISA/pam_ldap.so use_first_pass
#       ----------------------------


auth        required      /lib/security/$ISA/pam_deny.so

account     required      /lib/security/$ISA/pam_unix.so
#       ----------------------------
account     [default=bad success=ok user_unknown=ignore service_err=ignore system_err=ignore] /lib/security/$ISA/pam_ldap.so
#       ----------------------------

password    required      /lib/security/$ISA/pam_cracklib.so retry=3 type=
password    sufficient    /lib/security/$ISA/pam_unix.so nullok use_authtok md5 shadow

#       ----------------------------
password    sufficient    /lib/security/$ISA/pam_ldap.so use_authtok
#       ----------------------------

password    required      /lib/security/$ISA/pam_deny.so

session     required      /lib/security/$ISA/pam_limits.so
session     required      /lib/security/$ISA/pam_unix.so
#       ----------------------------
session     optional      /lib/security/$ISA/pam_ldap.so

--- 程式碼結尾 ---
中間有四個地方被新增進來(看到pam_ldap.so就是新增的啦~), 再次叮嚀, 要注意, 要小心, 有大小寫之分, 空格跟TAB沒關係. 但小心打錯字!

最後的一個部分, 就是修改系統認證的順序. 請開啟/etc/nsswitch.conf,找到符合描述的片段並修改成像下面這樣
--- 代碼: ---passwd:     ldap files
shadow:     ldap files
group:      ldap files
--- 程式碼結尾 ---
在這步驟完成之後, 請再次確認與檢查 /etc/pam.d/system-auth這個檔案, 確保沒有問題, 然後重新開機....

--- 代碼: ---
#---------------------------------------#

                  驚險刺激的冒險....

                  驚心動魄的期待....


                  電腦順利重新

                          ^_^"

#---------------------------------------#

--- 程式碼結尾 ---


過了幾分鐘的開機等候, 應該很順利的成功開機, 並且在那邊等著你輸入帳號密碼. 請嘗試一下我們所建立的abcd與他的密碼. 按照常理來說, 你應該可以快樂的登入系統. 但會遇到下面這個訊息:
--- 代碼: ---No directory /home/abcd!
Logging in with home = "/".
-bash-2.05b$
--- 程式碼結尾 ---
(註)這是因為我們並沒有為這個使用者建立家目錄所引發的系統警告. 請做下面三行指令以建立abcd的家目錄:
--- 代碼: ---mkdir /home/abcd
chown 514.502 /home/abcd
chmod 700 /home/abcd
--- 程式碼結尾 ---
順便, 為了讓這個abcd使用者能收發信件, 所以我順手幫他建立信箱:
--- 代碼: ---touch /var/spool/mail/abcd
chown 514.mail /var/spool/mail/abcd
--- 程式碼結尾 ---



這一切都OK之後, 再次登入時應該就不會有系統警告了! 此時也可以快樂的利用這個abcd帳號進行收信(當然, 前提是你有正確的設定Sendmail服務!), 但發信的部分會遭遇到問題! 請編輯/etc/dovecot.conf, 並修改這幾個標題的敘述如下面所示:
--- 代碼: ---protocols = imap pop3
...
...
auth_userdb = ldap /etc/dovecot-ldap.conf
auth_passdb = ldap /etc/dovecot-ldap.conf

--- 程式碼結尾 ---
(大約分別在15, 384, 與400行的地方)

並且, 自己新增一個檔案, 為/etc/dovecot-ldap.conf, 內容如下:
--- 代碼: ---hosts = 127.0.0.1

dn = uid=root,ou=People,dc=your,dc=com

# Password for LDAP server
dnpass = your-dn-root-passwd

# LDAP protocol version to use. Likely 2 or 3.
ldap_version = 3

# LDAP base
base = dc=your,dc=com
--- 程式碼結尾 ---
在重新執行dovecot之後, 去看看 /var/log/message 裡面有沒有任何的錯誤訊息

當然, 你應該也會像我一樣, 採用sasl認證機制, 你也會遇到像我一樣的問題, 請看小弟發問的問題






如果一切都很順利,  恭喜! 你已經完成 LDAP + Mail 的艱難任務了!






#--------------------------------------#
註: 事實上, 我沒遇到那個錯誤訊息. 我是從Linux網路管理實務(施威銘出版社 著)P4-38上面抄來的.
#--------------------------------------#

本篇資料來源:1. Linux網路管理實務(施威銘出版社 著), ISBN 957-442-111-2

2. www.idealx.org[/list]

-------------
期待 samba 篇吧 ^O^

damon:
1.發信跟dovecot有甚麼關係?
2.dovecot還是有支援pam的,不需要自己在這樣搞

天線:

--- 引述: "日京三子" ---歡迎轉載 . 轉載前請先以電子郵件或者書面方式告知. 如果有任何修改請來信通知小弟, 不得作為商業用途(包含轉變為任何形式的講義,書籍片段, 網頁文章, 或者教材, 本人會保留任何形式的訴訟權利), 轉載時並請保持此一宣告.

作者: 日京三子 <a843433{at}yahoo{dot}com>


接著, 我們要讓這個abcd能夠像一般利用useradd所新增的使用者一樣, 可以透過LDAP服務, 登入到Linux系統. 想當然爾, 第一步就是結合PAM系統! 首先, 先修改 /etc/openldap/ldap.conf 這個檔案:
--- 代碼: ---HOST 127.0.0.1
BASE dc=your,dc=com
URI     ldap://127.0.0.1
--- 程式碼結尾 ---
特別注意的是, HOST一定是你的正確IP, 或者是能透過DNS系統能夠找到的網域主機名稱. 如果這地方設定錯誤, 或者是一個不正確的IP, LDAP系統就跑不起來 ! 如果怕死, 請跟我一樣, 設定為127.0.0.1, 這樣最保險 :lol:

BASE 的設定值 則一定要跟你在 /etc/openldap/sldap.conf 裡面這段的設定相同:
--- 代碼: ---suffix          "dc=your,dc=com"
--- 程式碼結尾 ---


至於URI ldap://127.0.0.1 這部分的描述, 很抱歉, 小弟只是按照該檔案的說明照抄的, 並沒有去深刻的瞭解是甚麼作用, 還請知道的朋友告知一下 ^^"[/list]

------------
期待 samba 篇吧 ^O^
--- 引用結尾 ---



/etc/openldap/ldap.conf
這個設定檔並非提供slapd使用,所以有沒有設定好並不會影響slapd的啟動
slapd 啟動只會去查詢 slapd.conf

這個設定檔是提供slapdadd.......這類工具使用的
免除下指令時還要打一大堆參數

日京三子:
話說, 各位前輩提點了之後, 經過用力的翻書, 我找到正確設定pam系統的設定方法......

就smtp方面, 請打開/etc/pam.d/smtp, 並修改為下面的樣子:
--- 代碼: ---auth    sufficient      pam_ldap.so
auth       required     pam_stack.so service=system-auth
account sufficient      pam_ldap.so
account    required     pam_stack.so service=system-auth
--- 程式碼結尾 ---


如果要讓ldap支援ftp程式, 以vsftpd為例, 請打開 /etc/pam.d/vsftpd, 修改為下面這樣:
--- 代碼: ---auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd.ftpusers onerr=succeed
auth    sufficient      pam_ldap.so
auth       required     pam_stack.so service=system-auth
auth       required     pam_shells.so
account sufficient      pam_ldap.so
account    required     pam_stack.so service=system-auth
session    required     pam_stack.so service=system-auth
--- 程式碼結尾 ---
至於大家愛用的proftpd, 很抱歉, 小弟不知道怎麼設定, 還希望各位前輩指點一下^^"

cktan981212:
i had follow the exact setting in /etc/pam.d/system-auth

but when i try to login using the account in LDAP, i can't do that!!
(lucky i still can login as root).
when use outlook to receive mails (my ipop is dovecot), i always getting passwd error... this is the maillog:


Nov 15 17:33:44 mail1 dovecot-auth: PAM (system-auth) no module name supplied
Nov 15 17:33:44 mail1 dovecot-auth: PAM unable to dlopen(<*unknown module path*>)
Nov 15 17:33:44 mail1 dovecot-auth: PAM [dlerror: <*unknown module path*>: cannot open shared object file: No such file or directory]
Nov 15 17:33:44 mail1 dovecot-auth: PAM adding faulty module: <*unknown module path*>
Nov 15 17:33:44 mail1 dovecot-auth: PAM (system-auth) illegal module type: system_err=ignore]
Nov 15 17:33:44 mail1 dovecot-auth: PAM pam_parse: expecting return value; [.../lib/security/$ISA/pam_ldap.so]
Nov 15 17:33:44 mail1 dovecot-auth: PAM (system-auth) no module name supplied
Nov 15 17:33:44 mail1 pop3-login: Disconnected [192.168.1.254]

another thing is my pam_ldap.so is locate in /lib/security/, why the path is system-auth have to use as below? can i just change it to my path?

session     optional      /lib/security/$ISA/pam_ldap.so
[/quote]

導覽

[0] 文章列表

[#] 下頁

前往完整版本