针对 Active Directory 验证 CVS 用户

Pha*_*nto 2 linux active-directory authentication cvs pam

我有一个混合的 Linux/Windows 软件开发环境,其中 Linux 客户端正在迁移到他们能够针对 Active Directory 进行身份验证的系统。(那部分我想通了)

我们的实验室目前正在使用 CVS 对我们的源代码进行版本控制。在迁移过程中,我们需要用户能够对我们的 CVS 服务器进行身份验证。我已经计划好当迁移发生时,我们将设置 CVS 服务器,以针对 AD 对用户进行身份验证。

不幸的是,我对 CVS 没有很多经验。这项任务甚至可能吗?据我了解,它可以设置为基于系统上的本地用户对用户进行身份验证。但是,由于实际用户不会将他们的凭据存储在本地服务器上(因为它是从 AD 中提取的),是否可以将 CVS 指定为依赖pam进行身份验证?

我已阅读有关使用用户凭据通过 SSH 访问 CVS 的信息。这是发生这种情况的必要条件吗?如果是这样,如何设置?

我非常感谢您的帮助!

wol*_*gsz 5

这将是相当长的时间,但我们还是去做吧。首先,是的,这是可以做到的。我不能提供太多配置 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=用户,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(即没有 Unix 的 Windows 服务),但这将需要不同的属性映射。你可能需要在那里试验一下。

现在我们进入 PAM 配置。在 Debian 下,基本上有 4 个文件需要修改:

1.) 普通账户:

帐户需要 pam_unix.so 损坏的影子
帐户足够 pam_localuser.so
账户足够 pam_succeed_if.so uid 

2.) 共同认证:

需要身份验证 pam_env.so
验证足够的 pam_unix.so nullok try_first_pass
身份验证要求 pam_succeed_if.so uid >=500 安静
验证足够的 pam_ldap.so use_first_pass
需要身份验证 pam_deny.so

3.) 公共会议:

session 可选 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)。以上还有什么问题,再问。

我们在许多服务器上都使用它,就像一个魅力。