SSSD仅用于LDAP用户身份validation(只是绑定)在Ubuntu上,用于uid和组的本地数据库

每一个使用SSSD进行LDAPauthentication的指南到目前为止,我发现如何做更多的不仅仅是authentication一个用户,比如提供他们的shell,组等。我不知道如何删除这些function,有像SSSD,PAM和NSS这样的移动部件。

由于通过LDAP(不是AD)提供什么信息的限制,只能对用户进行authentication。 甚至没有可用的uid,因为通过LDAP提供的唯一id是格式一致的字母数字string(在linux上不起作用)。 基本上,如何在Ubuntu上将SSSDconfiguration为将“ldap”作为“影子”数据库,而从本地系统数据库(passwd,group)获取uid,组和shell。

目前,这是通过libpam-ldap完成的,但是我的理解是有更好的select,比如libpam-ldapd和sssd,后者是RHEL已经转移到的。 如果我不得不猜测,可以按照我们目前的做法,这是nss将首先检查本地数据库,如果用户没有阴影文件入口,请检查ldap。

总而言之,如果我可以使用SSSD或作为备份libpam-ldapd来validation以下方法:
uid – > / etc / passwd
validation – > ldap
shell – > / etc / passwd
组 – > / etc / group

如果可以阻止用户在本地创build密码,甚至更好,最终会在/ etc / shadow中导致它在将来的login尝试中检查ldap。 此外,所有本地和服务帐户不应受到影响,并且可以使用简单的正则expression式确定ldapauthentication的用户。 对于如何处理这个问题,我将非常感激。 谢谢!

使用id_provider = proxy和auth_provider = ldap的方法是绝对正确的。 你遇到的错误https://fedorahosted.org/sssd/ticket/2620 ,我们只在1.13版本中修复。 这是一个非常简单的修复,请求Ubuntu从上游挑选它。

控制每个search的哪个数据源联系人的文件是nsswitch.conf。 你需要的东西是:

passwd: compat group: compat shadow: compat sss 

passwd表示用户查询,group表示组查询,shadow表示authentication信息。

只要正常设置sssd,但用户查找它不会被使用。

身份validation源的顺序在pam文件中(下一个是common-auth):

 auth [success=2 default=ignore] pam_unix.so nullok_secure auth [success=1 default=ignore] pam_sss.so use_first_pass # here's the fallback if no module succeeds auth requisite pam_deny.so [...] 

因此,要确保本地/ etc / shadow文件不包含用于在LDAP上进行身份validation的用户的有效密码。