採用 active directory 進行 winbind 驗証
1. 描述
這個提示會描述如何設置 CentOS 的驗証設定,如讓它能使用 Windows Server 來進行驗証。我會描述如何在指令行中進項工作。這些指令行的內容可以行簡單地改在圖像版本中進行。我強烈建議你閱讀關於這方面的 samba 文檔,好讓你能理解 winbind 如何運作。
|
警告: 這裡所提供的指令會重新設置驗証的設定。在你未完全明白它們之先,請勿使用。如果你出錯,你可能會無法登入你的系統! |
2. 首要條件
在使用 winbind 之先,你必須安裝 samba-common 這個套件。
# yum install samba-common
要將 CentOS 這台電腦加入 Windows 的區域,你須要一個有效的區域管理員帳戶。
3. 實踐它
實際上真正要執行的是這樣一個長指令(你須要取替以 $ 起首的字串來配合你的本地設定):
# authconfig \ --update \ --kickstart \ --enablewinbind \ --enablewinbindauth \ --smbsecurity=ads \ --smbworkgroup=$ADSWorkgroup \ --smbrealm=$ADSDomain \ --smbservers=$ADSServer \ --winbindjoin=$AdminUser \ --winbindtemplatehomedir=/home/%U \ --winbindtemplateshell=/bin/bash \ --enablewinbindusedefaultdomain \ --enablelocauthorize
這的確是為數不少的參數,讓我們看看它們在做甚麼:
- --kickstart 它告訴 authconfig 不要執行任何使用者介面(文字介面 或 gtk)
- --enablewinbind 啟用透過 winbind 進行 nss 的查詢
- --enablewinbindauth 啟用透過 winbind 進行驗証
- --smbsecurity=ads 設定 samba 的安全性模式為 active directory 模式
- --smbworkgroup= 傳統(Windows 2003 Server 前)的域名
- --smbrealm= Active directory 區域(例如:yourcompany.com)
- --smbservers= 一個或多個要採用的 AD 伺服器名稱。請採用引號來列出多個伺服器(例如:"server1 server2 *"),其實 winbind 應該能夠自行透過 DNS 斷定正確的伺服器,但你或許會想設定它們。
- --winbindjoin= 用來驗証機器加入區域時用的區域管理員帳戶名稱。
- --winbindtemplatehomedir=/home/%U 用戶的主目錄的路徑範本。(%U 是 smb.conf 裡代表用戶名稱的符號)
- --winbindtemplateshell=/bin/bash 為用戶預設的指令殼。
--enablelocauthorize 亦會啟用對照 /etc/passwd 的本地驗証。 重要!
4. 額外參數
- --enablewinbindusedefaultdomain 如果你不加入這個設定,用戶名稱的格式將會是 WORKGROUPNAME\username。如果你啟用它,用戶名稱將會是較為普遍的 username 格式。
- --enablemkhomedir(只適用於 CentOS 5) 啟用 pam_mkhomedir,它會自動在首次登入時建立主目錄。這個只會當你使用網絡儲存器上的中央主目錄時才會有用。在 CentOS 4 上你可以手動地修改 pam 的 system-auth 設定,藉以啟用 pam_mkhomedirs,但這個檔案會在每次執行 authconfig 後重新被建立。
CentOS 內的 pam 採用堆疊方式,因此你可以在這裡放置其它驗証方法,有關各選項的詳情請參閱
# authconfig --help
或者 authconfig 的圖像介面。
5. 接著……
當你執行了那個指令後,它會重新寫入 pam 的 system-auth 設定,為你進行 net join ads,並要求你提供 --winbindjoin 所指定的區域管理員的密碼。之後,它會停用 nscd 及啟用 winbindd。如果成功的話,你可以利用 wbinfo 工具來檢查 winbind 的現況。要顯示用戶清單,執行
# wbinfo -u
詳情請參閱 wbinfo --help
6. 額外事項
6.1. kerberos 的 keytab
假如你的服務採用 kerberos keytab 檔(例如:httpd kerberos 驗証),你可以利用 net 這個指令來管理它。要建立一個 keytab 檔,你只需執行
# net ads keytab create
要將一個服務加進區域內(例如:HTTP)
# net ads keytab add HTTP
6.2. 限制存取權至某個群組
在 /etc/security/pam_winbind.conf 內,你可以透過 require_membership_of 這個參數來指定某個 windows 組別。一經設定,只有這個組別內的用戶才能驗証。如果你有其它方法(例如:kerberos 或 ldap)可以成功地驗証這些用戶,這個限制將不會生效。
6.3. 預定的 userid/groupid 對照
在上述/預設的設定下,winbind 會在每台機器上以動態形式進行 ActiveDirectory SID 到 unix UID/GID 的對照。當你需要在不同機器上有相同的 UID 時,這樣沒有幫助。典型的例子就是 NFS。winbind 提供了一個方法利用運算的方式來對照 UID/GID 及 SID。這是透過 idmap 的 rid 後端來達成的。要使用它,你必須以人手方式在 /etc/samba/smb.conf 內的 [global] 部份加入下列數行:
idmap domains = DOMAIN idmap config DOMAIN:backend = rid idmap config DOMAIN:base_rid = 0 idmap config DOMAIN:range = 20000 - 49999
當中 DOMAIN 是你的 ActiveDirectory 區域的 WINS 名稱。你也可以將另一個獲信任的區域內的用戶對照對其它範圍。詳情請查考 idmap_rid 的文檔:http://samba.org/samba/docs/man/manpages-3/idmap_rid.8.html。 在 CentOS 5 下,請確定你在採用以下方式標示的範圍外加入上述內容:
#--authconfig--start-line-- .. #--authconfig--end-line--
以避免 authconfig 更改它。
Translation of revision 8