針對 Active Directory 對 CVS 使用者進行身份驗證
我有一個混合的 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)。以上還有什麼問題,直接問吧。
我們在我們的許多伺服器上使用它,就像一個魅力。