Linux

針對 Active Directory 對 CVS 使用者進行身份驗證

  • August 23, 2010

我有一個混合的 Linux/Windows 軟體開發環境,其中 Linux 客戶端正在遷移到能夠針對 Active Directory 進行身份驗證的系統。(那部分我想通了)

我們的實驗室目前正在使用 CVS 對我們的原始碼進行版本控制。在遷移中,我們需要使用者能夠對我們的 CVS 伺服器進行身份驗證。我有這樣的計劃,當遷移發生時,我們將設置 CVS 伺服器來針對 AD 對使用者進行身份驗證。

不幸的是,我對 CVS 沒有很多經驗。這個任務甚至可能嗎?據我了解,可以設置為根據系統上的本地使用者對使用者進行身份驗證。但是,由於實際使用者不會將其憑據本地儲存在伺服器上(因為它從 AD 中提取它們),是否可以指向 CVS 依賴於pam身份驗證?

我已閱讀有關使用使用者憑據通過 SSH 訪問 CVS 的資訊。這是發生這種情況的必要條件嗎?如果是這樣,如何設置?

我非常感謝您的幫助!

事實證明,CVS 只使用 PAM。因此,如果您的伺服器已經配置為向 AD 進行身份驗證,CVS 也會收到身份驗證資訊。

wolfgangsz 的建議對於完成第一步非常有幫助(通過 LDAP 對 AD 進行伺服器身份驗證

$$ you could also use Winbind $$).

這將是相當長的,但無論如何讓我們這樣做。首先,是的,這是可以做到的。我不能提供太多關於配置 CVS 的方法,但是我可以提供你需要的所有東西,讓 linux 伺服器根據 Active Directory 對使用者進行身份驗證。

這一切都從 /etc/nsswitch.conf 開始。以下是相關部分:

passwd: files ldap compat shadow: files ldap compat group: files ldap compat

現在,根據您使用的發行版,您將需要安裝一些 ldap 包。在 Redhat/Fedora/CentOS 下,這將是 nss_ldap,在 Debian/Ubuntu 等下,您將需要 libnss-ldap 和 libpam-ldap。我還會推荐一些 ldap-utils 進行調試。

有了上面你的名字服務將嘗試使用 LDAP,所以現在你需要配置各種 LDAP 包來使用你的 AD 伺服器。搜尋庫應該是base cn=Users,dc=aminocom,dc=com,綁定 DN 應該是binddn cn=LDAPsearch,cn=Users,dc=aminocom,dc=com。您將需要定義一個特定的使用者以允許瀏覽 AD。我們創建了一個名為 LDAPSearch 的使用者,並將其憑據放入名為 .secret 的單獨文件中。閱讀這些包的文件以獲取更多詳細資訊。此外,我會推荐一個軟綁定策略和以下屬性映射:

# UNIX 3.5 映射服務
nss_base_passwd cn=Users,dc=aminocom,dc=com?sub
nss_base_shadow cn=使用者,dc=aminocom,dc=com?sub
nss_base_group cn=使用者,dc=aminocom,dc=com?sub
nss_map_objectclass posixAccount 使用者
nss_map_objectclass shadowAccount 使用者
nss_map_attribute uid sAMAccountName
nss_map_attribute uidNumber msSFU30UidNumber
nss_map_attribute gidNumber msSFU30GidNumber
nss_map_attribute loginShell msSFU30LoginShell
nss_map_attribute gecos 名稱
nss_map_attribute userPassword msSFU30Password
nss_map_attribute homeDirectory msSFU30HomeDirectory
nss_map_objectclass posixGroup 組
nss_map_attribute uniqueMember msSFU30PosixMember
nss_map_attribute cn cn
pam_login_attribute sAMAccountName
pam_filter 對像類=使用者
pam_member_attribute msSFU30PosixMember
pam_groupdn cn=nixUsers,cn=Users,dc=aminocom,dc=com
pam_password 廣告

所有這些都假定您在域控制器上安裝了適用於 Unix 的 Windows 服務。在 AD 中,您需要配置一個主要的 Unix 組(在我們的例子中稱為 nixUsers)並將每個 CVS 使用者添加到該組中。

您應該可以直接使用 AD(即沒有 Windows Unix 服務),但這需要不同的屬性映射。您可能需要在那裡進行一些實驗。

現在我們進入 PAM 配置。在 Debian 下,基本上有 4 個文件需要修改:

1.) 普通賬戶:

需要帳戶 pam_unix.so broken_shadow
帳戶足夠 pam_localuser.so
帳戶足夠 pam_succeed_if.so uid

2.) 普通認證:

需要驗證 pam_env.so 驗證足夠 pam_unix.so nullok try_first_pass auth 必需 pam_succeed_if.so uid >=500 安靜 驗證足夠的 pam_ldap.so use_first_pass 需要驗證 pam_deny.so



3.) 普通會議:

會話可選 pam_keyinit.so 撤銷 會話需要 pam_limits.so session [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid 會話需要 pam_unix.so 會話可選 pam_ldap.so



4.) 通用密碼




密碼足夠 pam_unix.so md5 shadow nullok try_first_pass
密碼足夠 pam_ldap.so
需要密碼 pam_deny.so

在 Redhat(及其衍生產品)下,所有必要的更改都應進入 /etc/pam.d/system-auth 和 /etc/pam.d/system-auth-ac 中的相關部分。

以上將允許使用者使用 AD 憑據登錄。但是,這不會自動為他們創建一個主目錄(除非您圍繞該目錄編寫更多腳本),並且不允許他們通過 linux 更改密碼。這也可以做到,但需要修改他們的工作站(如果他們使用 Linux)。以上還有什麼問題,直接問吧。

我們在我們的許多伺服器上使用它,就像一個魅力。

引用自:https://serverfault.com/questions/170274