用LDAP聯合Samba為電子郵件和SSH提供單點登陸系統。歡迎來到如何實施一個單點登陸和企業目錄系統的第三部分,在這篇文章中,我們處理微軟windows客戶端的集成,有許多事情需要處理,因此戴上你的工作手套讓我們開始吧。
當你想將windows客戶端集成到一個異構環境中時,你有一些選擇,盡管你可以運行一個活動目錄(AD)服務器將你的linux和Apple客戶端與它綁定進行認證和身份管理,但是開銷卻不少,它也沒有在一個開源得的單點登陸和目錄實施文章有趣。
當你正在綁定windows客戶端到一個開源的解決方案時,你有兩個選擇,你是綁定它們到Kerberos范圍進行認證還是綁定到LDAP進行身份管理嗎?這是一個二者取其一的選擇,因為盡管windows客戶端知道如何與Kerberos和LDAP交流,它們知道當與一個AD服務器交流時,在同一時間如何與它們交流,換句話說,當用戶身份保存在本地時windows客戶端可以與一個非AD Kerberos服務器交流,同樣,windows客戶端可以通過Samba從LDAP獲取身份,但是僅當密碼也通過Samba提供時,現在Samba還不能通過Kerberos提供認證。
windows認證依靠我們的Kerberos認證更容易設置,但是它更難以維護,因為每個使用windows客戶端的用戶都需要在一個本地帳戶,如果你所有的只有一個windows客戶端需要維護就很好,但是如果你不止一個,你就需要給每個客戶端添加一個用戶,我不想繼續探究這個選擇,無論如何,如果你有興趣你可以看看Jason Garman關于Kerberos的著作:The Definitive Guide。
配置Samba
因為我們正在討論企業目錄,我假設在你的網絡中有不止一臺windows機器,為了盡可能無痛地將它們合并到一起,我們使用Samba聯合LDAP目錄作為一個后端,我們配置Samba將有一點不同,你應該先閱讀Craig Swanson和Matt Lung的“OpenLDAP Everywhere Revisited”,因為它將給你一個很好的基礎,我在名叫samba的目錄下創建了一個組織分支,列表1詳細展示了這些分支的層次結構,列表2展示了LDIF。
列表1.附加的組織單元
+ o=ci,dc=example,dc=com |- ou=samba |- ou=hosts |- ou=idmap |
列表2.附加組織單元的LDIF
dn: ou=samba,o=ci,dc=example,dc=com objectClass: organizationalUnit ou: samba dn: ou=hosts,ou=samba,o=ci,dc=example,dc=com objectClass: organizationalUnit ou: hosts dn: ou=idmap,ou=samba,o=ci,dc=example,dc=com objectClass: organizationalUnit objectClass: sambaUnixIdPool uidNumber: 15000 gidNumber: 15000 |
我沒有從IDEALX使用smbldap腳本創建必須的條目,因為我正在使用LDAP而不僅是Samba進行認證,一個不使用smbldap工具主要的原因是因為它假設Samba是唯一如增加用戶和組的點,在我的環境中,所有用戶都不能登陸到windows機器,一些用戶可能開始只作為linux用戶,但是后面需要給他們訪問windows機器的權限,smbldap工具也不能很好地完成這個工作,但是smbldap工具可以做好其他事情,如探測所有工具是否都可用并選擇出最好的適合你需要的。
我們需要幾個LDAP用戶來完成幾個任務,首先我們需要一個有寫目錄權限的用戶,如果你注意到在/etc/samba/smb.conf中有一個選項:ldap admin dn,它用來定義用戶的DN,這個叫做samba_server的用戶存儲在LDAP目錄中,它將是目錄中唯一一個與密碼關聯的用戶,因為這個用戶沒有posixAccouont對象類,這個帳戶在linux是不能識別的,要創建這個用戶,首先運行slappasswd生成hash密碼,然后用這個hash值創建一個與列表3類似的ldif文件。
列表3.Samba用戶的LDIF
dn: uid=samba_server,ou=people,o=ci,dc=example,dc=com objectClass: top objectClass: person objectClass: uidObject sn: samba_server cn: samba_server userPassword: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx uid: samba_server |
接下來,我們需要告訴Samba如何作為samba_server用戶訪問LDAP目錄,要使用到
smbpasswd命令:
# /usr/bin/smbpasswd -w |
為了增加安全性,你應該關閉你的shell歷史日志,因為在命令行中直接給出了密碼,smbpasswd命令給出了密碼并將其存儲在/var/lib/samba/private/secrets.tdb中,并插入了Samba域和管理員dn,因此如果這些值發生改變,你應該重新運行smbpasswd命令。
因為Samba使用這個用戶在目錄中查詢和修改值,我們需要允許samba管理員在目錄中有寫權限,因此務必增加適當的ACL到/etc/openldap/slapd.conf。
就此,我們可以獲取域的SID,要獲得域的SID,你需要作為root登陸到主域控制器(PDC),然后運行:
# net getlocalsid SID for domain CI-PDC is: ↪S-1-5-21-2162541494-3670296480-3949091320 |
如果你沒有使用smbldap工具來創建所有的Samba LDAP條目,當創建它們的時候你需要使用這個SID,我在ftp://ftp.ssc.com/pub/lj/listings/issue142/8376.tgz中提供了一個樣本LDIF文件包括你需要的所有條目。
Samba也需要一個在LDAP目錄中uid=0的臨時用戶來完成一些動作,不需要一個完整的posixAccount用戶,但是它應該象列表4列出的內容
共5頁: 1 [2] [3] [4] [5] 下一頁 | |||||||
|