GB | BIG5
|
| 首頁 > 應用技術 > 其它 > 正文 |
 |
| Samba-HOWTO最新匯集--7. 用Winbind在Windows NT與UNIX間進行統一登錄 |
| 本文出自: http://6bytes.com/meaculpa 編譯:meaculpa (2001-05-31 15:00:00) |
7.1. 概要
7.2. 介紹
7.3. Winbind的功能
7.3.1. 使用目標
7.4. winbind如何工作
7.4.1. Microsoft遠程過程調用
7.4.2. 名字服務切換
7.4.3. 可插式驗証模塊
7.4.4. 用戶及組ID的分配
7.4.5. 緩存結果
7.5. 安裝及配置
7.6. 限制
7.7. 結語
7.1. 概要
在異種計算機環境中通過統一登錄來集成UNIX和Windows NT系統長期以來一直是人們追求的目標。我們向你推薦一個稱為winbind的Samba組件來解決統一登錄的問題。它在UNIX上實現了微軟的RPC調用、可插式驗証模塊和名字服務切換,通過這些功能可以使NT域用戶能在UNIX主機上以UNIX用戶身份進行操作。本文對winbind系統進行了描述,解釋了它所提供的功能以及配置和內部工作原理方面的問題。
--------------------------------------------------------------------------------
7.2. 介紹
大家都知道UNIX和Windows NT系統使用不同的技術和方式來表示用戶和組信息。這就使得集成這兩種系統變得更加困難。
現在常用的方法之一,就是在兩種系統上創建相同的用戶賬號,並使用Samba在兩者之間提供文件和打印服務器。但是這種方法還不是很完美,因為在一大堆機器上維護賬號是件麻煩事兒,而且在兩種系統間使用兩套口令既容易引起同步問題,又使用戶感到很混亂。
是,我們就把UNIX主機的統一登錄問題劃分成三個小問題來看:
獲得Windows NT用戶和組信息
驗証Windows NT用戶
為Windows NT用戶更改口令
最理想的情況是,所使用的方法應該可以解決以上所有的問題,並且無須在UNIX主機上復制信息,也無須使系統管理員在維護這兩種系統的用戶及組信息時產生額外的負擔。winbind系統提供了一套解決上述三個問題簡單而漂亮的方案。
--------------------------------------------------------------------------------
7.3. Winbind的功能
winbind把一台UNIX主機變成一個完全的域成員,這樣就可以統一管理UNIX和NT上的賬號了。這時,這台UNIX主機將可以查看NT的用戶及組信息,就好象這些信息是UNIX本地的一樣,同時,使用戶可以在純UNIX環境裡象使用NIS+一樣的來使用NT域。
最實現的結果是,當UNIX主機向操作系統查詢任何用戶或組名時,該查詢都會被發往指定域中的NT域控制器。因為winbind通過系統低層(使用C庫中的NSS名字解析模塊)重定向了該查詢,而這對NT域控制器來說是完全透明的。
UNIX主機上的用戶可以把NT用戶及組名當作“本地”賬號來用,還可以把文件的屬主改成NT域用戶,甚至可以用一個域用戶的身份登錄到UNIX主機並運行一個X-Window會話。
使用winbind要當心的唯一問題,就是用戶名和組名使用DOMAIN\user和DOMAIN\group這樣的形式,這是winbind所必須的,因為它要用這種形式來檢測重定向查詢的目標域控制器,並考慮信任域的問題。
另外,winbind還利用了可插式驗証模塊(PAM)通過NT域向任何使用PAM的應用程序提供驗証服務。這就解決了系統間的口令同步問題,因為所有口令都保存在一個單一的位置上(域控制器中)。
--------------------------------------------------------------------------------
7.3.1. 使用目標
winbind的服務目標是那些要把UNIX工作站或服務器加到現有NT域結構的機構。這些機構可以利用winbind在無須維護單獨賬號結構的情況下配置UNIX工作站,這就減少了向NT結構中添加UNIX工作站的管理費用。還有,使用winbind可以把基UNIX的設備環境集成到基微軟系統的域結構中去。
--------------------------------------------------------------------------------
7.4. winbind如何工作
winbind系統是按客戶機/服務器結構設計的。一個持續運行的winbindd進程監聽一個UNIX套接字,並等待請求的到達。這些請求是由運行NSS和PAM的客戶機產生的,服務器按序對其進行處理。
下面詳細描述winbind的實現技術。
--------------------------------------------------------------------------------
7.4.1. Microsoft遠程過程調用
在過去的兩年中,Samba開發小組的各位成員已經對微軟的遠程過程調用系統(MSRPC)進行了分析!在Windows NT主機上,很多與網絡有關的操作都使用了這套系統,如遠程管理、用戶驗証以及打印假脫機。雖然,一開始對該系統的分析工作只是為了有助在Samba中實現主域控制器功能,但是,同時又產生了大量有其它用途的代碼。
winbind使用各種MSRPC調用來處理域用戶和組信息,並以此獲得個別用戶或組的詳細情況。MSRPC調用還可以用驗証NT域用戶並更改它們的口令。winbind向NT主域控制器直接查詢用戶及組信息,並把這些NT的賬號信息映射到UNIX的用戶名和組名上。
--------------------------------------------------------------------------------
7.4.2. 名字服務切換
名字服務切換(NSS)是很多UNIX操作系統所具有的功能。使用它可以從不同的資源中解析系統信息,如主機名、郵件別名和用戶信息等。例如,單獨的UNIX工作站可以從一系列保存在本地系統上的平面文件中解析系統信息;而網絡工作站則可以先從本地文件中獲得系統信息,再參考NIS數據庫查詢用戶信息或從DNS服務器查詢主機信息。
在解析UNIX用戶名和組時,使用NSS應用編程接口的winbind就象一個系統信息源。而另一方面,它通過使用MSRPC調用獲得NT服務器的信息,並使用上述接口提供一套新的賬號信息表。使用這套標準UNIX庫調用的好處是,只要在運行winbind的UNIX主機上查閱一次用戶和組信息,就可以象在本地一樣查看NT域及其受托域在內的所有用戶和組信息。
NSS主要的控制都包含在/etc/nsswitch.conf文件中。當一個UNIX應用程序產生一個查詢請求時,C庫就會在該文件中查找與所請求之服務類型相匹配的行。例如,當查詢用戶和組信息時,就使用“passwd”這個服務類型。對指定服務類型的進一步查找則按其配置次序進行,例如,如果passwd配置行為:
passwd: files example
那標準C庫首先裝入模塊/lib/libnss_files.so,然才是/lib/libnss_example.so。從這裡可以看出,它會依次動態地進行裝載,然使用模塊調用解析器功能來嘗試對請求進行解析,完成之就把結果返回給應用程序。
使用NSS接口,winbind可以很方便地與操作系統結合。我們要做的只是把libnss_winbind.so放到/lib/目錄中,並在/etc/nsswitch.conf文件的適當位置添加“winbind”,到時候C庫就會調用winbind去解析用戶名和組名了。
--------------------------------------------------------------------------------
7.4.3. 可插式驗証模塊
可插式驗証模塊(PAM)是一套對驗証和授權技術進行抽象化的系統。使用PAM模塊,可以為不同的系統應用指定不同的驗証方法,而無須重新編譯這些應用。另外,還可以使用PAM實現特殊的授權策略。例如,系統管理員可以限制用戶在登錄控制台時使用本地口令文件,在進行網絡登錄時使用NIS數據庫。
winbind使用驗証管理和口令管理這兩種PAM接口把NT用戶集成到UNIX系統中。這樣,NT用戶就可以由合適的主域控制器進行驗証,然登錄到UNIX主機中,之,這些用戶就可以更改他們的口令,並使更改立即在主域控制器上生效。
PAM的一組配置文件位/etc/pam.d/,它們用各種驗証服務。當應用程序產生一個驗証請求時,PAM代碼就會查找這些配置文件,以便決定按什樣的次序裝載哪些模塊來執行驗証核查。利用PAM的這種多接口形式可以很方便地為winbind添加新的驗証服務。只須把pam_winbind.so模塊拷貝到/lib/security/目錄中,並更新配置文件,使相關的服務通過winbind來進行驗証。詳情請參考PAM文檔。
--------------------------------------------------------------------------------
7.4.4. 用戶及組ID的分配
當在Windows NT中建立一個用戶或組賬號時,系統就為之分配一個數字關系符(RID),而UNIX則在一定的數字范圍內使用合適的值產生uid和gid。winbind要做的就是對這兩種標識符進行互相轉換,它在UNIX系統可用的uid和gid范圍中尋找可用保存NT用戶和組賬號的值。當首次解析NT用戶時,就把該范圍內可用的下一個uid值分配給他,對解析組賬號也是同樣操作。今,winbind就可以把NT賬號完全映射到UNIX賬號了。winbind把映射結果保存在tdb數據庫中,保証了映射操作的可靠性。
--------------------------------------------------------------------------------
7.4.5. 緩存結果
持續運行的系統會產生大量的用戶及組賬號查詢。為了使這些查詢不影響網絡流量,winbind使用了一種緩存機制,這種機制是基PDC所提供的SAM序列號的。winbind把PDC返回的用戶及組賬號信息和序列號一起緩存起來,只要修改了用戶或組賬號信息,NT就會把對應的序列號增值,如果winbind發現一個緩存過的序列號過期了,就再向PDC發出請求,並把返回結果與緩存項進行比較,如不匹配,就丟棄緩存信息,直接向PDC要求更新。
--------------------------------------------------------------------------------
7.5. 安裝及配置
安裝winbind最簡單的方法就是使用Samba鏡像站提供的工具包了,它位站點的pub/samba/appliance/目錄中。這些工具包向你提供了處snapshots階段的Samba源代碼,以及具備完整功能的winbind二進制程序。由winbind需要少量的Samba_TNG代碼,而Samba_TNG還處開發階段,因此安裝起來就要比普通的Samba版本稍微復雜一點。
完成安裝之最好讀一下winbindd(8)手冊頁,它提供了完整的配置信息及配置樣本。
--------------------------------------------------------------------------------
7.6. 限制
在當前版本中,winbind還存在一些限制,我們希望在將來的版本中克服這些限制:
winbind現在還只有Linux版,當然要把它移植到其它操作系統是完全可能。要實現這樣的目標,需要其它操作系統中的C庫支持“名字服務切換”和“可插式驗証模塊”,而對大多數UNIX系統來說,這兩樣通常都是可以獲得的。
winbind在對兩種系統的標識符進行映射時並沒有使用什更好的算法,它是根據未映射的用戶及組賬號的次序來看的。如果包含映射信息的文件有問題或被破壞的話,它很難對其進行恢復。
現在,winbind的PAM模塊還無法對NT用戶設置的可登錄工作站及登錄時間限制進行記賬。
在對winbind的源代碼進行編譯時要花很長時間,因為它要組合兩個Samba分支的源代碼。正在考慮的解決方法是,在主分支代碼中提供所有必須的功能。
--------------------------------------------------------------------------------
7.7. 結語
winbind系統通過使用“名字服務切換”、“可插式驗証模塊”以及適當的MSRPC調用向UNIX系統提供了對NT域用戶的無縫集成,減少了使用混合系統的網絡管理負擔。
(http://www.fanqiang.com)
進入【UNIX論壇】
|
|
| 相關文章 |
巧配samba實現WIN2000和Linux文件共享 (2001-12-23 08:30:00) Samba的圖形化配置工具-SWAT (2001-10-01 07:00:00) Samba的三種典型配置 (2001-09-30 13:05:00) 如何利用Samba實現Linux與Windows98的資源共享 (2001-09-30 09:05:00) Samba的簡介 (2001-09-30 08:05:01) Samba 和 Windows 的密碼處理認証方式 (2001-09-30 07:05:00) RedHat6.2服務器配置方案大全--第三章 DHCP,第四章 Samba (2001-09-28 09:00:00) 中文man手冊:smbstatus - 報告當前samba的聯接狀態 (2001-09-22 13:05:00) 中文man手冊:make_smbcodepage - 為Samba創建代碼頁文件 (2001-09-21 08:00:00) 尋找Linux下的網絡鄰居(圖形工具:gnomba,Tk Samba,xSMBrowser,LinNeighborhood) (2001-08-24 09:00:00)
|
===更多相關=== |
|
|
 |
★ 樊強制作 歡迎分享 ★ |