我们的软件开发公司同时使用 Windows 和 Linux 服务器。
此设置的一个摩擦点是我们没有单点登录解决方案。作为微软商店而不是 Linux 商店,我们希望针对 AD 进行身份验证。
我在网上阅读了几篇文章,我理解这是可能的。
我们目前在需要身份验证的 Linux 上使用以下服务:
- git 服务器(通过 SSH)
- Sendmail
- 当前使用 .htaccess 文件的 Apache Web 服务器。
- SAMBA 文件共享
我想知道的是这种设置有多实用?它真的有效还是容易出错?
它并不难,而且非常实用。
我们有数百台使用 AD auth 的双启动台式机以及许多使用 AD auth 的服务器,以使 Windows 客户端无需用户明确的身份验证即可使用其 samba 共享。
SF 上有另一篇关于你需要做什么的文章。
基本上你需要配置 kerberos、winbind、nss 和 pam。
然后你做一个
kinit
和一个net ads join
和你的起来。如果需要,您可以将 pam 配置为使用多种身份验证方法,因此如果其中一个不起作用,它将退回到下一个。
我们通常使用文件、winbindd 和 ldap 来为 Windows 服务器提供文件共享服务。
如果可能的话,我会使用 LDAP 作为帐户信息,而 windbind 严格用于身份验证,但我相信你可以在我认为 /etc/ldap.conf 中映射属性,如果你需要的话。如果您最终使用 winbindd 获取帐户信息,则可以使用 RID(散列方法)生成 uids/gids,但也可以使用其他方法。我们在一个大型文件服务器上使用了 RID,这真的很痛苦,所以如果可能的话,我会尝试探索其他选项之一。在我们的例子中,所有 AD 用户和组都由上游 IDM 系统反映在 LDAP 中,因此我们使用 LDAP 获取较新服务器上的帐户信息,并仅使用 winbind 进行身份验证。
使用 Similar Open 进行身份验证非常简单。http://www.likewise.com/products/likewise_open/index.php
多亏了同样的开放,我的整个 Linux 基础架构几乎都具有集中式身份验证和用户管理。它的安装和实施非常简单。我不可能说得足够好。
需要注意的是,UID 和 GID 是根据哈希函数分配的,因此它们在整个基础架构中是相同的,因此 NFS 挂载可以完美运行。
我为 Unix 安装了 Windows 服务,并在 AD 中添加了一个名为“Unix Authenticator”的用户,然后在 linux 机器上进行了以下配置文件更改:
/etc/ldap.conf: /etc/ldap.secret: /etc/nsswitch.conf: /etc/nsswitch.ldap: /etc/pam.d/system-auth:希望这可以帮助。
让 Windows 用户针对 AD 进行身份验证,但我们的大多数服务器(公共驱动器等)都是 linux,并且它们是域的一部分。从 Windows PoV 没有人注意到。从我的角度来看,我的 Windows 用户名感觉有点果味 ssh'ing,但这就是它的大小。
只需使用普通的旧桑巴舞。
您不需要使用 Samba,AD 直接支持 Kerberos 和 LDAP。您没有理由在大多数发行版上使用任何外部软件。
对于 Debian/Ubuntu,您可以使用 libnss-ldap 和 libpam-krb5 来完成。有一些技巧可以100%获得它。这假设您为 Linux 用户填充了“unixHomeDirectory”,您的 Linux 机器使用 Windows 系统通用的 NTP(Kerberos 需要),并且您可以使用纯文本 NSS 查找(不是密码,而是组成员信息等) - 您也可以使用 TLS,但设置起来更复杂)。除非您设置为使用 TLS,否则不应将 pam_ldap 作为 PAM 中的密码或身份验证源。
/etc/ldap.conf
您不需要编辑 /etc/krb5.conf 假设您的 Linux 机器正在使用了解 AD 的 DNS 服务器(具有适当 SRV 记录的 _msdcs 区域是可解析的)
/etc/nsswitch.conf 应该有用户、组、影子的“文件 ldap”。
对于使用 SSSD 的红帽:
/etc/sssd/sssd.conf