AD环境中的Linux用户和权限pipe理

问题:通过Active Directory中的组成员身份,在Linux服务器上对资源(访问服务,主目录,join本地用户组,​​文件系统权限等)的用户访问需求进行集中用户pipe理用户权限pipe理。

背景:我们有一些Linux服务器,一些CentOS和其他Ubuntu,用于开发,虚拟主机,数据库托pipe,PXE服务等。我们也有一个集中的Active Directory环境,所有的用户都被添加到join该组织时的小组成员资格。

示例: Bob和Alicejoin组织,他们被添加到AD中相应的组中,现在他们可以在一台或多台Linux服务器上访问SSH或MySQL。 一旦Bob离开,我们将他从AD组中移除,他不再能够访问SSH,MySQL等的Linux服务器。

注:如何处理这样的任务? Linux中是否有一套可用的实用程序可用于此类操作? 我们需要授予用户的访问将取决于他们是Active Directory成员的用户组成员身份。 例如,AD开发组中的每个人都需要在Linux版本服务器1和2上具有SSH访问权限,MySQL访问权限和主目录。AD系统pipe理员组中的每个人都需要具有SSH访问权限,所有的Linux服务器的SU权限等。我已经浏览了一些在serverfault上的现有文章,并没有find任何符合这里列出的需求的东西。

有两个基本的技术我知道 –

方法一: Microsoft的UNIX身份pipe理 – 这允许您将ActiveDirectory作为NIS服务器公开。
这与几乎任何* NIX风格(他们都支持NIS)一起工作,并且具有NIS的所有好处(和缺点)。 它也得到了微软官方的支持,这意味着如果有东西被打破,你就有人打电话。

方法二: pam_ldap / nss_ldap (或类似,较新的系统)。
这适用于任何能够根据LDAP目录进行身份validation的现代* NIX风格,并且可能在Ubuntu和CentOS中默认包括在内。 它比方法一中的类似NIS的hackery更强大/更现代化,但不太可能得到Microsoft的正式支持。

这两种技术都要求您将AD用户和组扩展为POSIX用户和组,以便为​​您的* NIX系统提供可用的POSIX UID和GID – Microsoft在Active Directory中提供此function。
上面方法2的另一个好处是,您可以进一步扩展用户,使您能够使用OpenSSH LDAP公钥修补程序,它允许您将SSH密钥存储在LDAP中,并消除了在networking中同步authorized_keys文件的任务。

从我在这里读到的东西,你想要所有其他典型的Linux的东西存储在典型的Linux时尚,只是有组的成员来自公元?

你可以find的大多数例子都会讨论从AD / LDAP(可能是所有用户的Kerberosauthentication和LDAP),这听起来像你只是希望LDAP组的东西。 如果我错了,你还需要做一些PAM的东西。

根据版本的不同(版本5和版本6之间的CentOS / RHEL版本不同),您可以使用“nss_ldap”或“sssd”。 sssd更新。 很难说哪个更灵活,因为它们看起来灵活不同。 sssd似乎更灵活地configuration特定的部分来自特定的源,而nss_ldap似乎更灵活的LDAP模式正在使用。 您将需要安装适当的软件包。 sssd-clientsssd-toolssssdlibnss-ssslibnss-ldap和/或nss_ldap 。 (authentication的东西是pam_ldap或sssd)

AD中的组需要有一些唯一的数字ID。 基本上,您需要通过LDAP从AD获取组的全部定义,而不仅仅是组成员资格(整个组定义基本上是名称,唯一的数字ID和成员资格)。 可以用sssd来避免这种情况,并将其configuration为从LDAP中查找文件和组成员身份。 真正正确的做法是用适当的UNIX扩展扩展AD模式,以便它具有RFC2307或RFC2307bis用户/组数据。

在/etc/nsswitch.conf中你需要group: files ldap或者group: files sss 。 你可能想把“文件”放在第二位而不是第一位。

nss_ldap(nsswitch.conf中的“ldap”)通过/etc/ldap.confconfiguration,并logging在nss_ldap包中。 你需要设置uri,binddn,bindpw,nss_base_group,pam_member_attribute,nss_map_objectclass组,nss_map_attribute。

sssd是通过/etc/sssd/sssd.confconfiguration的。 集中精力于nss和id_provider的东西,而不是pam和auth_provider的东西。 阅读sssd.conf,sssd-ldap和sssd手册页。 你需要configuration一个“域”,并configuration一些“ldap_group”的东西,以及基本的id_provider和ldap_uritypes的东西。

注意:我对当前的OpenLDAP环境运行nss_ldap和sssd。 我用nss_ldap / pam_ldap和AD环境已经有好几年了。

也许值得研究Samba能做些什么。 它通常用于文件/打印共享,但login的东西和域控制器的东西可能可以configuration你所需要的东西。

看一下Likewise Open(或者现在称为PowerBroker身份服务开放版) 。 我曾经在以前的工作中使用过类似的工作,并且与Samba和我们的开发者合作愉快。