我将 ubuntu 16.04 服务器加入到我的 Windows AD 以进行 SSH 身份验证。它工作正常,直到我想使用 sssd 限制对特定组的访问
这是我的 /etc/sssd/sssd.conf 的内容
[sssd]
domains = my.domain.com
config_file_version = 2
services = nss, pam
[domain/my.domain.com]
ad_domain = my.domain.com
krb5_realm = MY.DOMAIN.COM
realmd_tags = joined-with-adcli
cache_credentials = True
id_provider = ad
krb5_store_password_if_offline = True
ad_gpo_access_control = permissive
default_shell = /bin/bash
ldap_id_mapping = True
use_fully_qualified_names = False
fallback_homedir = /home/%u
simple_allow_users = $
access_provider = ad
ad_access_filter = memberOf=CN=DockerLinuxUser,OU=DockerLinux,DC=my,DC=domain,DC=com
我也尝试过使用这个查询,但没有成功
ad_access_filter = (&(memberOf=CN=LinuxAdmins,OU=DockerLinux,DC=my,DC=domain,DC=com)(unixHomeDirectory=*))
当 ad_access-filter 被注释掉时,SSH 可以工作。启用后,我无法再通过 SSH 连接 Linux 服务器。
我基本上遵循了这个步骤:将 Ubuntu 16.04 加入 Active Directory 域
有什么帮助吗?
谢谢
答案1
我可以举个例子。在我们的 sssd.conf 中,我们从通用的 ldap_search_base 参数开始。您需要知道可接受的用户类别的名称,但假设这个类别允许您组织中的每个人进入
ldap_search_base = ou=friends,dc=ou,dc=edu???ou=groups,dc=ou,dc=edu??ldap_group_name = uid
这些话写得太长了。我不知道该怎么标点。
为了限制可以进入的用户范围,我们在末尾添加了额外的要求。这表示我们不想允许非当前员工(个人主要关联中没有 oldWorkers)的人进入,并且用户帐户必须位于以“grpname_”或“project_admin”开头的任何组中。
ldap_search_base = ou=friends,dc=ou,dc=edu??(!(personPrimaryAffiliation=oldWorkers))?ou=groups,dc=ou,dc=edu??(&(objectClass=posixGroup)(|(cn=grpname_*)(cn=project_admin)))
这里的关键是您需要知道组织服务器用来指代用户和组的魔法词。从允许所有人进入的一般内容开始,然后添加限制。
我们的配置文件中有与您的类似的 krb5_realm 和 krb5_server。这也许不会对您的情况有所帮助,但也许可以给您一些提示。