自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

通過Active Directory驗證Linux客戶端身份

系統(tǒng) Linux
長久以來Linux和Windows一直對立存在并快速發(fā)展著,企業(yè)中的應用也逐漸分為兩大陣營。它們彼此既不互相競爭,也不互相協(xié)作。雖然Windows與Linux之間的競爭水火不容,但目標都希望為公司提供高質量且經(jīng)濟高效的IT服務。作為企業(yè)IT管理者,實現(xiàn)此目標的方法之一是共享ActiveDirectory。

 長久以來Linux和Windows一直對立存在并快速發(fā)展著,企業(yè)中的應用也逐漸分為兩大陣營。它們彼此既不互相競爭,也不互相協(xié)作。雖然Windows與Linux之間的競爭水火不容,但目標都希望為公司提供高質量且經(jīng)濟高效的IT服務。作為企業(yè)IT管理者,實現(xiàn)此目標的方法之一是共享ActiveDirectory。幾乎所有的IT組織都采用ActiveDirectory,為它們的Windows桌面和服務器提供身份驗證服務。與其針對Linux環(huán)境維護一個不同的身份驗證基礎結構(加上一組不同的用戶名和密碼),還不如讓Linux計算機也采用ActiveDirectory,這樣豈不是更好?本文中向您介紹如何實現(xiàn)這一目的。

Windows身份驗證

Windows推出集成網(wǎng)絡身份驗證和單一登錄系統(tǒng)至今已有一段時間了。在Windows2000之前,WindowsNT域控制器(DC)使用NT LAN Manager(NTLM)協(xié)議為Windows客戶端提供身份驗證服務。雖然NTLM不像當初想象的那樣安全,但它還是非常有用的,它完美地解決了需要在網(wǎng)絡上跨多個服務器維護重復用戶帳戶的問題。

自Windows2000開始,Microsoft便從NTLM移到了ActiveDirectory及其集成Kerberos身份驗證服務。與NTLM相比,Kerberos更安全,而且更適合調整。此外,Kerberos更是Linux和UNIX系統(tǒng)早已采納的行業(yè)標準,從而為這些平臺打開了與Windows集成的大門。

Linux身份驗證

Linux(以及在其上面運行的GNU工具和庫)當初并不是以單一身份驗證機制的設計理念進行構建的。因此,Linux應用程序開發(fā)人員就逐漸養(yǎng)成了一種習慣,即創(chuàng)建屬于自己的身份驗證方案。他們設法通過在/etc/passwd中查詢名稱和密碼哈希,或者提供截然不同(和個別)的機制,來實現(xiàn)這一目標。

由此產(chǎn)生了很多身份驗證機制,以至于無法對其進行管理。1995年,Sun提出了稱為“可插入身份驗證模塊”(PluggableAuthenticationModules,PAM)的機制。PAM提供了一組所有應用程序開發(fā)人員都可以使用的通用身份驗證API,以及管理員配置的后端,允許多種“可插入”身份驗證方案。通過使用PAMAPI 進行身份驗證以及使用Name Server Switch(NSS)API來查詢用戶信息,Linux應用程序開發(fā)人員可以少編寫一些代碼,并且Linux管理員可從同一個地方配置和管理身份驗證過程。

大多數(shù)Linux發(fā)布版本都會隨附多個PAM身份驗證模塊,其中包括支持對LDAP目錄進行身份驗證和使用Kerberos進行身份驗證的模塊。用戶可以使用這些模塊對ActiveDirectory進行身份驗證,但這其中存在一些明顯的限制。

Samba和Winbind

Samba是一種開放源代碼項目,旨在在Windows與Linux環(huán)境之間提供集成。Samba包含的組件使Linux計算機有權訪問Windows文件和打印服務,同時還提供了基于Linux的服務來模擬WindowsNT4.0 DC。使用Samba客戶端組件,Linux計算機便可利用Windows NT和Active DirectoryDC所提供的Windows 身份驗證服務。

Samba在這個項目中對我們來說最有趣的一部分叫做Winbind。Winbind是在Samba客戶端上運行的后臺程序(在Windows中稱為服務),它的作用是充當在Linux計算機上運行的PAM和NSS與在DC上運行的ActiveDirectory之間通信的代理。具體來說,Winbind使用Kerberos來對ActiveDirectory和LDAP進行身份驗證,以檢索用戶和組信息。Winbind還提供其他服務,如使用類似于ActiveDirectory中DCLOCATOR的算法來查找DC的功能,以及通過使用RPC與DC進行通信來重置ActiveDirectory密碼的功能。

Winbind解決了多個僅使用Kerberos和PAM無法解決的問題。具體來說,Winbind并不是將DC進行硬編碼以便按照PAMKerberos模塊的方式進行身份驗證,而是以類似于MicrosoftDC LOCATOR模塊運行的方式通過搜索 DNS定位程序記錄來選擇DC。

三種身份驗證策略

假設Linux計算機上提供了LDAP、Kerberos 和Winbind三種身份驗證,我們可以采用三種不同的實現(xiàn)策略允許Linux計算機使用ActiveDirectory來進行身份驗證。

使用LDAP身份驗證使用Active Directory進行身份驗證的最簡單但成效最低的方法是,將PAM 配置為使用LDAP身份驗證,如圖1 所示。雖然 Active Directory 屬于 LDAPv3 服務,但Windows客戶端使用Kerberos(回退到 NTLM)而不是 LDAP 進行身份驗證。

LDAP身份驗證(稱為LDAP綁定)通過網(wǎng)絡以明文形式傳遞用戶名和密碼。對于大多數(shù)用途來說,這不僅不安全,而且也是無法接受的。

使用 LDAP 對 Active Directory 進行身份驗證

降低以明文形式傳遞憑據(jù)的風險的唯一方法是使用類似于SSL 的協(xié)議加密客戶端與ActiveDirectory進行通信所使用的通道。這絕對可行,但會增加在DC和Linux計算機上管理 SSL 證書的負擔。此外,使用 PAMLDAP模塊并不支持更改已重置的或過期的密碼。

使用 LDAP 和 Kerberos 利用 Active Directory 進行 Linux 身份驗證的另一種策略是,將PAM配置為使用 Kerberos 身份驗證,以及將 NSS 配置為使用 LDAP 查找用戶和組信息,如圖2所示。此方案的優(yōu)點是,它相對來說比較安全,而且它利用的是 Linux 的“內(nèi)置”功能。但是它不利用 ActiveDirectoryDC 發(fā)布的 DNS 服務位置 (SRV) 記錄,所以您會被迫挑選一組特定的 DC來進行身份驗證。對于管理即將過期的 ActiveDirectory密碼或是直至最近的適當組成員身份查詢,它提供的方法也不是很直觀。

使用LDAP和Kerberos對Active Directory進行身份驗證

使用Winbind、 Active Directory進行Linux身份驗證的第三種方法是,將PAM和NSS配置為調用Winbind后臺程序。Winbind 將使用LDAP、Kerberos或RPC(使用其中最合適的一個),將不同的PAM和NSS請求轉換為相應的ActiveDirectory調用。圖3說明了這一策略。

使用 Winbind 對 Active Directory 進行身份驗證

實施計劃

由于與Active Directory 的集成的增強,我選擇在Red Hat Enterprise Linux 5(RHEL5)上使用Winbind 來進行我的Linux與Active Directory 集成項目。RHEL5是最新的商用RedHatLinux 發(fā)布版本,而且它在企業(yè)數(shù)據(jù)中心中相當受歡迎。

使RHEL5 對 Active Directory 進行身份驗證基本上需要下列五個不同的步驟:

·查找并下載適當?shù)?Samba 以及其他依存組件。

·構建 Samba。

·安裝并配置 Samba。

·配置 Linux,特別是 PAM 和 NSS。

·配置 Active Directory。

本文的下面幾節(jié)將詳細介紹這些步驟。

#p#

查找適當?shù)能浖?/STRONG>

Linux 與 Windows之間最大的區(qū)別之一是,Linux由一個小型操作系統(tǒng)內(nèi)核和大型的可單獨下載和安裝的組件集構成。這雖然可以創(chuàng)建為某些任務而進行優(yōu)化的特定Linux配置,但也會使服務器的配置和管理變得極為復雜。不同的發(fā)布版本處理這種情況的方式也不一樣。RedHat(及其非商用版Fedora)使用 Red Hat Package Manager (RPM) 來安裝和管理這些組件。

適用于 Red Hat 的 Linux 組件包含兩種形式。RPM 文件包含針對組件版本、Linux 發(fā)布版本和CPU體系結構的特定組合而預先編譯和構建的二進制文件。因此,您可以下載和安裝二進制文件,例如,針對在 Intel x86 體系結構CPU上運行的 Fedora 版本 10 構建的通用 UNIX 打印系統(tǒng) (Common UNIX PrintingSystem,CUPS) 的 1.3.8-5 版本。假如有十多種不同的 CPU 體系結構、100 多個Linux發(fā)布版本,還有上千個程序包和版本,則要選擇的二進制 RPM 的數(shù)量之多便可想而知。

另一方面,源RPM文件包含給定程序包的實際源代碼。但您需要自己下載和安裝源、配置構建選項,以及編譯和鏈接二進制文件。構建您自己的操作系統(tǒng)組件這一想法使習慣于Microsoft在 Windows 安裝 CD 上提供什么就安裝什么的Windows用戶十分畏怯,但是程序包管理器可使整個過程相當輕松,而且非??煽俊amba 小組發(fā)布更新和安全修補程序的速度驚人,僅在2008年七、八月兩個月內(nèi),就發(fā)布了四個版本的 Samba 3.2,總共包含 100多個錯誤和安全修補程序。對于此項目,我下載了最新的Samba 穩(wěn)定版本 3.0.31 版的源。

為什么要下載Samba源,而不下載預先編譯的二進制文件集呢?當然,我剛開始也嘗試過這么做,但在調試器上花了數(shù)小時之后,我發(fā)現(xiàn)下載的二進制文件并不是使用支持ActiveDirectory 身份驗證的正確選項構建而成的。具體來說,在 Active Directory 中支持 LinuxID映射的代碼在默認版本中被關閉了,因此我必須使用適當?shù)臉嫿ㄟx項重建 Samba。稍后,我將在本文中詳細討論 ID 映射。

雖然 Linux 原本是小型內(nèi)核,但 Red HatEnterprise發(fā)布版本預先安裝了許多程序包。這通常會使生活變得更輕松,因為您從完全正常運行的操作系統(tǒng)開始著手,但預先安裝的程序包有時會與您以后想要安裝的軟件發(fā)生沖突。

我在安裝 Red Hat 時,因為想要使用較新的版本,所以并沒有包含 Samba(通常會默認安裝Samba)。但是,較新版本的Samba 要求已安裝的幾個其他庫和實用工具也要使用新版本。這類的依賴問題非常煩人,不過,使用 RPM就可以輕松解決。

承載二進制 RPM 程序包的網(wǎng)站很多。我使用的網(wǎng)站(勿庸置疑,是我找到的第一個網(wǎng)站)稱為PBONE,網(wǎng)址為rpm.pbone.net。該網(wǎng)站提供了搜索程序包的簡便方法,并且具有我的 CPU 體系結構 (i386)和操作系統(tǒng)發(fā)布版本(Red Hat Enterprise Linux 5/Fedora 7&8)所需的所有二進制文件。

我必須下載和更新程序包來構建和安裝最新的 3.0 版 Samba(但我從未嘗試過較新的 3.2版)。請注意,這些程序包主要針對Fedora Core (fc) 發(fā)布版本。Red Hat 以 Fedora使用的相同源為基礎,而且完全可與它交互。針對Fedora Core 7 及更高版本構建的程序包,不需要任何修改即可在 RHEL5上運行。請將下載的 RPM 文件放在/usr/src/redhat/RPMS 目錄中。

構建和安裝 Samba 3.0.31 所需的程序包:

samba-3.031-0.fc8.src.rpmSamba 3.0.31 源 RPM

gnutls1.6.3-3.fc7.i386GNU 傳輸層安全性 (TLS) 庫

gnutils-devel-1.6.3-3.fc7.i386GNU TLS 開發(fā)文件

popt-1.12-3.fc8.i386命令行參數(shù)分析庫

popt-devel-1.12-3.fc8.i386命令行參數(shù)分析開發(fā)文件

cups-libs-1.2.12-11.fc7.i386通用 UNIX 打印機系統(tǒng)庫

cups-devel-1.2.12-11.fc7.i386通用 UNIX 打印機系統(tǒng)開發(fā)文件

cups-1.2.12.11.fc7.i386通用 UNIX 打印機系統(tǒng)二進制文件

構建Samba

構建 Samba 的第一歩是下載適當?shù)脑?RPM。我從 PBONE 站點下載了 Samba 3.0.31的源RPM。然后,將下載的源 RPM 文件放到 /usr/src/redhat/SRPMS 中,這是構建過程中用于源RPM的標準目錄。

打開終端會話(在 Windows 中稱為命令行窗口)并移至 SRPMS文件夾。完成后,使用該命令安裝源程序包,如圖4所示。

安裝 Samba 源 RPM

如果您看到“用戶 mockbuild 不存在,請使用根”錯誤警告,請不要擔心。這個錯誤指出尚未安裝Mock構建實用工具,但沒有這些實用工具,構建過程也可以進行。

然后,移至 /usr/src/redhat/SPECS 目錄并編輯文件 SAMBA.SPEC,該文件包含了Samba構建選項。搜索以“CFLAGS=”開頭的那一行,并確保存在“--with-shared-modules=idmap_ad,idmap_rid”選項。此選項可確保構建過程包含將LinuxUID(唯一標識符)適當轉換到 Active Directory 的代碼。圖5顯示了此選項。

with-shared-modules 構建選項

接下來,您可能必須更新計算機上的一些庫,才能適當構建和安裝Samba,具體取決于您安裝的是哪個版本的庫。在我的例子中,我必須使用rpm --install 命令安裝圖 4中列出的程序包;在某些情況下,我必須使用 --force 選項來克服一些依賴問題。

要構建 Samba,請移至 /usr/src/redhat 目錄,并運行命令 rpmbuild–bbSPECS/samba.spec,如圖6所示。此過程將新的 samba-3.0.31-0.i386 RPM文件留在/usr/src/redhat/RPMS 目錄中。我們稍后將在此項目中安裝這個 RPM 文件。

創(chuàng)建 Samba 二進制 RPM 文件

#p#

配置 Linux 網(wǎng)絡

為了使用 Active Directory 進行身份驗證,您的 Linux 計算機必須能夠與DC通信。您必須配置三個網(wǎng)絡設置才能與 DC 通信。

首先,重要的是通過使用動態(tài)主機配置協(xié)議 (DHCP) 或使用 ifconfig 命令為 Linux 計算機分配適當?shù)腎P地址和網(wǎng)絡掩碼,來確保適當配置該計算機的網(wǎng)絡接口。在RHEL5下,通過從“系統(tǒng)”“管理”菜單中選擇“網(wǎng)絡”來配置網(wǎng)絡,如圖7所示。

配置網(wǎng)絡

接著,確保將 Linux 計算機的 DNS 解析程序設置為與 DC 使用相同的 DNS名稱服務器;在大多數(shù)情況下,假定您要使用Active Directory 集成的 DNS,則該 DC 是您想要加入 Linux計算機的域中的DC。在用于配置網(wǎng)絡的相同網(wǎng)絡配置實用工具的 DNS 選項卡上,配置 DNS 解析程序,如圖8所示。

設置主 DNS 解析程序

最后,完成上述步驟后,您必須設置Linux計算機的主機名稱以反映它在域中的名稱。雖然您可以使用網(wǎng)絡配置應用程序設置主機名稱,但這一方法不一定始終適用。

但是,可直接編輯 /etc/hosts 文件,并在具有 <主機名稱> 形式的localhost.localdomain條目下添加條目。(例如,“10.7.5.2rhel5.linuxauth.locallinuxauth”)。請注意,如果不這么做,當您將 Linux計算機加入到域后,會在目錄中創(chuàng)建錯誤的計算機對象。

配置Linux 時間同步

Kerberos 協(xié)議需要身份驗證系統(tǒng)具有能在相對較小的時間內(nèi)同步的時鐘。默認情況下,ActiveDirectory可允許的偏差時間最長為五分鐘。為了確保您的 Linux 系統(tǒng)與 DC 的系統(tǒng)時鐘維持在這個時間內(nèi),您應該將Linux 系統(tǒng)配置為使用DC 的網(wǎng)絡時間協(xié)議 (NTP) 服務。

然后,在Linux服務器上,從“系統(tǒng)”“管理”菜單中運行日期與時間實用工具,然后單擊“網(wǎng)絡時間協(xié)議”選項卡。選中“啟用網(wǎng)絡時間協(xié)議”框,然后添加您要用作網(wǎng)絡時間源的DC的 IP 地址。請注意,這通常應該是在域中擔任主域控制器 (PDC) 仿真器靈活單主機操作 (FSMO)角色的DC。圖9顯示了如何設置 Linux 網(wǎng)絡時間源的一個示例。

配置網(wǎng)絡時間協(xié)議

配置PAM和NSS

PAM和NSS提供Linux 應用程序(如桌面)與Winbind之間的聯(lián)系媒介。與許多Linux服務一樣,您可以通過文本文件來配置PAM 和 NSS。我們先來討論一下如何配置 PAM。

PAM為使用它的應用程序提供了四個與身份驗證相關的功能。身份驗證設施允許應用程序確定使用它的用戶。帳戶設施提供的帳戶管理功能(如登錄時間限制)與身份驗證并不是特別相關。密碼設施提供請求和管理密碼的機制。會話設施執(zhí)行與用戶相關的安裝和應用程序的拆卸任務,例如,在用戶特定的目錄中記錄或創(chuàng)建文件。

Red Hat 下的 PAM 將它的配置文件存儲在 /etc/pam.d 目錄中,其中包含使用PAM進行身份驗證的每個應用程序的文本文件。例如,文件 /etc/pam.d/gdm 包含 Gnome DesktopManager(GDM) 的 PAM 配置信息,即 Red Hat 的默認窗口運行環(huán)境。每個 PAM配置文件都包含多行內(nèi)容,其中每行分別定義PAM 身份驗證過程的某個方面。圖10顯示了 GDM 的 PAM 配置文件的內(nèi)容。

Gnome Desktop Manager 的 PAM 配置文件

PAM 配置文件中的每個項目都具有 <管理組> <控制> <模塊><參數(shù)>的形式,其中 <管理組>對應于配置條目所屬的設施:身份驗證、帳戶、密碼或會話。該文件的第三欄包含/lib/security 目錄中的 PAM共享庫的名稱。共享庫包含可動態(tài)加載的可執(zhí)行代碼,類似于 Windows 中的DLL。模塊名稱后的其他術語都是 PAM傳遞到共享庫的參數(shù)。

PAM 控制關鍵字

Required如果模塊成功,則 PAM將繼續(xù)評估管理組的其余項目,并且結果將由其余模塊的結果決定。如果模塊失敗,PAM將繼續(xù)評估,但向調用應用程序返回失敗消息。

Requisite如果模塊成功,PAM將繼續(xù)評估管理組條目。如果模塊失敗,PAM將返回到調用應用程序,并且不做進一步處理。

Sufficient如果模塊成功,PAM將向調用應用程序返回成功消息。如果模塊失敗,PAM會繼續(xù)評估,但結果將由后續(xù)模塊決定。

Optional除非模塊是為管理組指定的唯一模塊,否則 PAM 將忽略模塊的結果。

IncludePAM包括引用的 PAM 配置文件的內(nèi)容,并且還會處理該配置文件包含的條目。

您可以看到每個管理組都包含多個條目。PAM 按照調用命名的模塊的順序處理條目。然后,該模塊返回成功或失敗消息,而PAM將繼續(xù)根據(jù)控制關鍵字進行評估。

您可能會注意到,GDM 的 PAM 配置文件在它的所有管理組中都包含系統(tǒng)身份驗證。這正是 PAM 為GDM建立默認身份驗證行為的方式。通過修改系統(tǒng)身份驗證,您可以修改在其PAM配置中包含系統(tǒng)身份驗證文件的所有應用程序的身份驗證行為。圖11中介紹了默認系統(tǒng)身份驗證文件。

PAM 系統(tǒng)身份驗證文件

Name Service Switch (NSS) 模塊將隱藏系統(tǒng)數(shù)據(jù)存儲的詳細信息以防應用程序開發(fā)人員看見,這與PAM隱藏身份驗證的詳細信息的方式大體相似。NSS允許管理員指定存儲系統(tǒng)數(shù)據(jù)庫的方式。具體來說,管理員可以指定如何存儲用戶名和密碼信息。因為我們希望應用程序使用Winbind 在Active Directory 中查詢用戶信息,所以我們必須修改 NSS 配置文件才能顯示此信息。

Red Hat 包含一個小型的圖形小程序,可用來配置 PAM 和NSS,稱為system-config-authentication。它負責管理您需要對系統(tǒng)身份驗證和nss.conf文件進行的大部分(而非全部)更改。

運行 system-config-authentication應用程序后,您會看到如圖12所示的對話框。選中“用戶信息”(用于配置 nss.conf文件)和“身份驗證”(用于修改系統(tǒng)身份驗證文件)這兩個選項卡上的Winbind 選項。

systemconfig-authentication 對話框

單擊“配置 Winbind”按鈕,您將看到如圖13所示的對話框。在Winbind域字段中輸入要對用戶進行身份驗證的域的名稱,并選擇“ads”作為安全模式。在 Winbind ADS 領域字段中輸入ActiveDirectory 域的 DNS 域名稱。在 Winbind 域控制器字段中,輸入您希望該 Linux系統(tǒng)對其進行身份驗證的 DC的名稱,也可以輸入星號,表明 Winbind 應通過查詢 DNS SRV 記錄來選擇 DC。

配置 Winbind 對話框

選擇您的 Active Directory 用戶應該具有的適當默認命令行界面,在本例中,我選擇的是Bourne-againShell 或 BASH。此時,不要按下“加入域”按鈕,稍后,再將此計算機加入到域。

在將 /etc/pam.d/system-auth 文件修改為支持 Winbind 后,還需要對其進行另一個更改。當Linux用戶登錄時,系統(tǒng)要求該用戶必須擁有主目錄。主目錄包含許多用戶特定的首選項和配置條目,與Windows注冊表非常相似。問題在于,因為您要在 Active Directory 中創(chuàng)建用戶,所以Linux不會自動為用戶創(chuàng)建主目錄。幸運的是,您可以將 PAM 配置為在其會話配置期間為用戶創(chuàng)建主目錄。

打開 /etc/pam.d/system-auth 文件,然后向下滾動到底部,在標有“sessionoptionalmap_mkhomedir.soskel=/etc/skelumask=0644”會話部分中的最后一行之前插入一行(請參見圖14)。這一行將PAM配置為創(chuàng)建用戶的主目錄(如果用戶沒有主目錄)。它將目錄 /etc/skel用作“框架”或模板,而且將權限掩碼0644(所有者具有的讀寫權限、主要組具有的讀取權限,以及其他人具有的讀取權限)分配給新文件夾。

為用戶創(chuàng)建主目錄

安裝和配置Samba

要安裝您剛剛創(chuàng)建的 Samba 二進制文件,請轉至 /usr/src/redhat/RPMS 目錄。由rpmbuild命令創(chuàng)建的所有 RPM 文件都會顯示在此目錄中。請記住,Samba 包括允許 Linux 客戶端訪問Windows(或Samba)文件共享的二進制文件,以及允許 Linux 系統(tǒng)充當 Windows 文件服務器、Windows打印機服務器和Windows NT 4.0-style DC 角色的代碼。

要讓 Linux 對 Active Directory 進行身份驗證,我們根本用不到這么多角色,其實我們只需要使用Samba公共文件和 Samba 客戶端二進制文件就可以了。為了方便起見,這些文件可為兩個RPM文件:samba-client-3.0.31-0.i386.rpm和samba-common-3.0.31-0.i386.rpm。使用 rpm --install 命令安裝RPM文件,請看下面的示例:rpm --installsamba-common-3.0.31-0.i386.rpm。(請注意,您需要先安裝–common RPM 文件。)

安裝了Samba 客戶端二進制文件后,您必須修改默認 Samba 配置,以確保 Winbind 使用ActiveDirectory 適當處理身份驗證。所有 Samba 配置信息(包括客戶端和服務器)都可以在smb.conf文本文件中找到,該文件在默認情況下位于 /etc/samba目錄中。Smb.conf可能包含大量配置選項,本文只會對其內(nèi)容進行簡要介紹。samba.org 網(wǎng)站和 Linux 主頁簡要討論了smb.conf。

第一步是將 Winbind 配置為使用 Active Directory 進行身份驗證。您必須將smb.conf中的安全模式設置為“ads”。system-config-authentication實用工具應該已經(jīng)幫您設置好了,但檢查一下總是比較保險。編輯smb.conf文件,并搜索標有“域成員選項”的部分。找出以“security”開頭的那一行,并確定它的內(nèi)容是“security=ads”。下一個配置步驟是確定 Winbind 如何將 Windows 安全主體(如用戶和組)映射到Linux標識符,這需要進行進一步的說明。

#p#

ID 映射問題

通過 Active Directory 對 Linux 用戶進行身份驗證時有個大問題我還沒有提到,那就是用戶和組的UID問題。Linux 和 Windows 在內(nèi)部都不是根據(jù)用戶名來引用用戶的,而是使用唯一的內(nèi)部標識符。Windows使用安全標識符(即SID),它能夠唯一標識 Windows 域中的每個用戶,其結構長度可以變化。SID 也包含唯一域標識符,以便Windows區(qū)別不同域中的用戶。

Linux 的方案則簡單得多,Linux 計算機上的每個用戶都有一個 UID,而此 UID 只是一個 32 位的整數(shù)。但是UID的范圍受限于計算機本身。在某臺 Linux 計算機上具有 UID 436 的用戶,不一定與另一臺 Linux 計算機上具有UID436 的用戶相同。因此,用戶必須登錄他需要訪問的每臺計算機,這顯然不是理想的情況。

Linux 網(wǎng)絡管理員解決此問題的常用方法是,使用 Network Information System (NIS)或共享LDAP 目錄來提供網(wǎng)絡身份驗證。網(wǎng)絡身份驗證系統(tǒng)提供用戶的 UID,而使用該身份驗證系統(tǒng)的所有Linux計算機都將共享相同的用戶和組標識符。在這種情況下,我將使用 Active Directory來提供唯一的用戶和組標識符。

要解決此問題,我可以采用兩種策略。第一個(也是最明顯的)策略是,為每個用戶和組創(chuàng)建UID,并將該標識符與各自的對象一起存儲到Active Directory 中。這樣一來,當 Winbind對用戶進行身份驗證時,它就可以查詢該用戶的 UID,然后將它提供給Linux 作為該用戶的內(nèi)部標識符。Winbind 將此方案稱為Active Directory ID 映射,或idmap_ad。圖15介紹了 Active Directory ID映射的過程。

Active Directory ID 映射

Active DirectoryID映射的唯一缺點是,我們必須提供一種機制來確保每個用戶和組都擁有標識符,而且這些標識符在林中都是唯一的。有關詳細信息,請參閱“針對ActiveDirectory ID 映射配置 Active Directory”邊欄。

幸好,還有另外一種 ID 映射策略,這種策略的管理負荷要少得多?;叵胍幌?,我們在前面曾提到過 WindowsSID可以唯一標識域中的用戶和域本身。SID 中能唯一標識域中用戶的部分稱為相對標識符(或 RID),而且這部分事實上是一個32位的整數(shù)。因此,Winbind 可在用戶登錄時直接從 SID 中提取 RID,然后將該 RID 用作唯一的內(nèi)部UID。Winbind將此策略稱為 RID 映射,或 idmap_rid。圖 18 描述了 RID 映射的實際工作方式。

RID 映射

RID 映射具有零管理負荷的優(yōu)點,但是您不能將它用在多域的環(huán)境中,因為不同域中的用戶可能擁有相同的 RID值。但是,如果您擁有單個Active Directory 域,則可以使用 RID 映射。

要配置 Winbind ID 映射策略,請再次編輯 /etc/samba/smb.conf文件,并且添加“idmapbackend = ad”行來使用 Active Directory 映射策略;如果您要使用 RID映射策略,請?zhí)砑印癷dmapbackend = rid”行。確保該文件中不存在任何其他指定映射策略的行。

對于 Winbind,我們還需要在 smb.conf 文件中添加其他配置選項。雖然我們已將PAM設置為在每個用戶登錄時為其創(chuàng)建主目錄,但是還需要告訴 Winbind主目錄的名稱是什么。我們可以通過將“templatehomedir = /home/%U”行添加到 smb.conf來執(zhí)行此操作(請參見圖17)。這會告訴 Winbind,使用Active Directory 進行身份驗證的每個用戶的主目錄都將是/home/<用戶名>。但務必要先創(chuàng)建好/home 目錄。

指定主目錄的名稱

加入域并登錄

既然網(wǎng)絡、PAM、NSS 和 Samba Winbind 都已配置成功,現(xiàn)在應該將 Linux 計算機加入到域中??墒褂肧ambaNET 命令來執(zhí)行此操作。在外殼程序提示符下,運行“net ads join–U<管理員名稱>”。使用具有足夠權限來將計算機加入到域的帳戶名稱替換 <管理員名稱>。

net 命令會提示您輸入用戶的密碼。如果一切運行正常,net 命令會將您的計算機加入到域中。您可以使用ActiveDirectory 用戶和計算機來查找剛剛創(chuàng)建的計算機帳戶。

您可以使用稱為 wbinfo 的 Winbind 測試工具來測試加入的狀態(tài)。運行 wbinfo–t將測試計算機與域之間的信任關系。運行 wbinfo –u 將列出域中的所有用戶,而運行 wbinfo–g將列出域中的所有組。

如果您成功將 Linux 計算機加入到域中,則下一步是嘗試使用 Active Directory用戶帳戶和密碼登錄。注銷Linux 計算機,然后使用 Active Directory用戶名登錄。如果一切運行正常,您應該能夠登錄。

要是行不通怎么辦?

使用Winbind 設置Linux 計算機以便使用ActiveDirectory進行身份驗證并非易事。要配置的東西有很多,而且很多地方都可能會出錯,而 Linux 的每個版本和Samba的每個版本之間又都存在一些細微差別,這更是雪上加霜。但是您可以查找?guī)讉€地方,以幫助確定怎樣操作。

首先是Linux 系統(tǒng)日志文件,它保存在 /var/log/messages中。Samba將重大事件的消息(例如,丟失文件或配置失敗)存儲在這個文件中。除了系統(tǒng)日志文件外,還有 Samba 和Winbind的日志文件。您可以在 /var/log/samba 中找到這些文件,而且它們還會為您提供一些其他信息。

您可以通過修改Winbind 的啟動腳本來設置調試級別,來提高 Winbind發(fā)出的日志消息的詳細程度(和數(shù)量)。編輯/etc/init.d/winbind 外殼腳本,然后在 windbindd 命令中添加“-d5”。這可將調試級別增加到5(允許的值范圍為 1 至 10),使 Winbind 生成更詳細的錯誤消息。

如果Winbind 最后可與 DC 通信,您可以運行網(wǎng)絡數(shù)據(jù)包捕獲實用工具,如 Netmon3.1。這使您可以精確分析Winbind 要進行的操作。而且,您還可以檢查 DC 上的 Windows安全日志,此日志會顯示身份驗證嘗試。

如果行得通,您又應該做些什么呢?

如果一切都能順利進行,現(xiàn)在您就可以使用在 Active Directory 中保存的憑據(jù)登錄 Linux 系統(tǒng)中了。與在Linux計算機上本地管理標識,或與使用諸如NIS之類的不安全系統(tǒng)相比,這是一項重大改進。它使您可以將您的用戶管理任務集中到一個標識存儲上:ActiveDirectory。

但是,要讓這套解決方案真正具備實際用途,還缺幾樣東西。首先,無法保證能獲得技術支持,有點像撞大運。大多數(shù) Linux組織對于Active Directory 都不是很了解,而且您可以從Linux社區(qū)獲得的支持完全取決于誰剛好讀到您的帖子以及他們當天的心情。

Samba 也沒有遷移或部署工具。如果您具有現(xiàn)有的 Linux 帳戶及其相關的用戶 ID 和權限,則您在將它們遷移至ActiveDirectory 時,必須手動確保它們維護其 UID。

最后,Samba 仍然無法使用最重要的 ActiveDirectory應用程序之一,即組策略,盡管已經(jīng)實施了此策略。雖然您可以使用 Samba 將 Linux 系統(tǒng)加入到 ActiveDirectory中,但無法使用組策略來管理它。

#p#

第三方解決方案

使用Active Directory 對 Linux 計算機進行身份驗證顯然是件好事,但使用 SambaWinbind推出您自己的解決方案,即使不把您累死,也會讓您感到枯燥無味。您可能會想,一些創(chuàng)新的軟件供應商可能會提出易于使用的解決方案,您猜得沒錯。

對于我在本文中演示的版本,有四家商用軟件供應商已經(jīng)開發(fā)了易于安裝和使用的相應版本。它們幾乎為每個受歡迎的 Linux、UNIX和Macintoshes 版本都提供了代碼和遷移工具,另外也支持使用組策略管理 Linux 計算機。

這四家公司分別為Centrify、Likewise Software、Quest Software和Symark。這四家供應商都提供了相似的功能,其中包括跨越各個 Linux 發(fā)布版本的組策略管理。LikewiseSoftware最近還公開了它實現(xiàn)的開放源代碼,稱為 Likewise Open,但它的組策略組件仍舊是商用產(chǎn)品。LikewiseOpen將可用于多個主要的 Linux 發(fā)布版本。

有了可用的商用產(chǎn)品后,還有必要使用 Samba 和Winbind來構建自己的身份驗證系統(tǒng)嗎?如果花錢購買集成軟件不在預算之內(nèi),則可以利用免費的Samba開放源代碼路由。您還可以獲得所有的源代碼,這樣的好處真是令人難以抗拒。但是,遷移現(xiàn)有的 Linux 計算機及其現(xiàn)有的UID是非常棘手的問題。

另一方面,假如您想要省下安裝和實現(xiàn)的時間、需要遷移現(xiàn)有的Linux計算機,或是希望有人對您的問題提供權威性的解答,那么尋求其中的一種商用解決方案比較劃算。另外,如果您需要使用組策略管理功能,那么商用產(chǎn)品是您唯一的選擇。

但是,無論您采取哪種方式,將Linux 身份驗證與 ActiveDirectory集成都可以減少您為管理多用戶帳戶投入的精力、增強系統(tǒng)安全性,并為您提供單一的標識存儲來進行管理和審核,而這些全都是相當吸引人的理由,值得試一試。

 

【編輯推薦】

  1. Linux技術專題
  2. 用Wubi安裝 Ubuntu 出現(xiàn)(Initranfs)問題的解決方案
  3. 五個頂級Linux安全工具
責任編輯:龐桂玉 來源: CBI
相關推薦

2010-02-23 09:58:21

WCF客戶端驗證

2011-03-21 14:53:36

Nagios監(jiān)控Linux

2011-04-06 14:24:20

Nagios監(jiān)控Linux

2012-11-06 10:56:41

戴爾

2012-01-13 10:29:37

ibmdw

2009-02-16 18:50:08

WindowsXmanagerLinux

2011-08-17 10:10:59

2022-11-28 14:15:03

2010-11-01 05:54:41

2021-09-22 15:46:29

虛擬桌面瘦客戶端胖客戶端

2010-05-31 10:11:32

瘦客戶端

2011-10-26 13:17:05

2020-12-04 19:18:03

LinuxMySQLDBeaver

2010-06-01 09:54:23

SVN客戶端安裝

2010-06-01 10:28:14

安裝SVN客戶端

2011-03-02 14:36:24

Filezilla客戶端

2010-12-21 11:03:15

獲取客戶端證書

2011-03-24 13:00:31

配置nagios客戶端

2021-03-12 16:21:02

LinuxEvernote客戶端

2011-07-15 10:01:02

Active DireADMT
點贊
收藏

51CTO技術棧公眾號