我有一个庞大的用户基础(>> 1000)应该能够共同使用一些共享服务。
用户群正在缓慢但不断变化。
ESP。 我们对特权分离(所有用户都是平等的)并不感兴趣,所以从特权angular度他们可以共享一个帐户。 但是,出于安全原因,我们不能使用共享凭据。 幸运的是,所有用户都有自己的用户名/密码可通过LDAP。
所以我们已经实现了一个login服务器(Debian上的ssh),通过PAM和OpenLDAP进行身份validation。
现在LDAP服务器不提供很多信息,只有用户名和身份validation的能力。 特别是,它缺less一个objectClass: posixAccount和伴随的属性
uidNumber gidNumber loginShell homeDirectory 我对LDAP服务器的访问非常有限(尤其是我不能要求添加这些或任何其他属性),基本上它只允许我对用户进行身份validation。
现在好消息是,如果所有用户对这些属性具有相同的值,我并不在乎。
所以我最终实现了一个使用translucent叠加的代理ldap服务器来添加缺less的属性。 覆盖数据通过脚本生成,该脚本从上游LDAP数据创build剥离的LDIF文件,然后用于填充半透明数据库。
这工作正常,但我不喜欢它的可维护性POV:因为用户基础正在改变,我需要定期更新数据库手动(它几乎没有变化 – 每隔几个月 – 所以它没有太多的工作,但它也很容易忘记)。
因为覆盖数据是如此微不足道(它是所有对象的相同属性/值),我认为必须有更好的方法。 理想情况下,我想有一个覆盖,将这些属性添加到所有对象(匹配给定的searchterm)。
使事情变得复杂一点,我们还通过另一个提供posixAccount -data的LDAP服务器validation另一个用户基础; 这个群体的用户当然不应该受到其他群体所需要的叠加魔法的影响; 我认为这排除了在PAM方面所做的任何魔法。
原build议:
我build议使用nss-pam-ldapd软件包,并使用nslcd映射为没有值来自ldap的用户帐户提供默认值。
根据nslcd.conf的文档,uid / gid也可以派生出来:
密码和组映射中的uidNumber和gidNumber属性可以映射到objectSid,后跟域SID,从SID派生数字用户和组ID(例如,objectSid:S-1-5-21-3623811015-3361044348-30300820) 。
选项#2a:
所以根据你所提到的,似乎你需要保持目录的镜像。
你可以简单地更新你的脚本,使其非破坏性地工作(即只添加帐户/属性,它不会在本地find),并通过cron运行一次?
选项#2b
如果您可以设置本机1路LDAP复制(从上游目录到本地目录),然后使用覆盖或脚本(反过来执行本地ldapmodify)由事件触发日志,以提供缺less的属性?