背景:我们有许多Linux服务器,一些CentOS和其他Ubuntu,用于开发,虚拟主机,数据库托管,PXE服务等.我们还有一个集中的Active Directory环境,所有用户都被添加到并提供加入组织时的组成员身份.
示例:Bob和Alice加入组织,他们被添加到AD中的相应组中,现在他们可以访问我们的一个或多个Linux服务器上的SSH或MySQL.一旦Bob离开,我们将他从AD组中移除,并且他不再能够访问用于SSH,MysqL等的Linux服务器.
注意:如何处理这样的任务? Linux中是否有一组可用于实现此类操作的实用程序?我们需要授予用户的访问权限取决于他们是Active Directory成员的用户组成员身份.例如,AD Group of Development中的每个人都需要具有SSH访问权限,MysqL访问权限以及Linux版本控制服务器1和2上的主目录.系统管理员AD组中的每个人都需要具有SSH访问权限.所有Linux服务器的SU权限等.我查看了serverfault上的一些现有文章,但没有找到符合此处列出的需求的任何内容.
解决方法
方法一:Microsoft的Identity Management for UNIX – 这允许您将ActiveDirectory公开为NIS服务器.
这适用于任何* NIX风格(它们都支持NIS),并且具有NIS的所有好处(和缺点).它也得到了微软的正式支持,这意味着如果有东西中断,你可以打电话给某人.
方法二:pam_ldap/nss_ldap(或类似的,较新的系统).
这适用于任何能够对LDAP目录进行身份验证的现代* NIX风格,并且最近可能包含在Ubuntu和CentOS中.它比方法一中的类似NIS的hackery更强大/更现代,但不太可能得到微软的正式支持.
这两种技术都要求您将AD用户和组扩展为POSIX Users&分别为您的* NIX系统提供可用的POSIX UID和GID – Microsoft在Active Directory中提供此功能.
上面方法二的另一个好处是,您可以进一步扩展用户,使您能够使用OpenSSH LDAP Public Key补丁,该补丁允许您将SSH密钥存储在LDAP中,并消除了在网络中同步authorized_keys文件的任务.