![nslcd 中 pam_authz_search 选项的 SSSD 替代方案](https://linux22.com/image/775782/nslcd%20%E4%B8%AD%20pam_authz_search%20%E9%80%89%E9%A1%B9%E7%9A%84%20SSSD%20%E6%9B%BF%E4%BB%A3%E6%96%B9%E6%A1%88.png)
我有基于 RHEL 7 和 8 的服务器。RHEL 7 服务器使用 nslcd 与 LDAP 服务器协同工作,RHEL 8 使用 SSSD。
对于 RHEL 7,我可以仅向用户提供对允许的主机的访问权限。此功能由 nslcd.conf 中的选项涵盖:
pam_authz_search (&(objectClass=posixAccount)(uid=$uid)(|(host=$hostname.\*)(host=\\*)))
我使用选项“主机=$主机名.\* “对于拥有允许服务器列表的普通用户,”主机=\\*” 用于 ldap 主机属性为 * 的管理员。
SSSD 具有选项 ldap_access_filter 并具有以下设置:
ldap_access_filter = (objectClass=posixAccount)
所有用户都可以登录到所有 RHEL 8 机器,这是我想要避免的。
是否可以将主机选项添加到 ldap_access_filter,就像我在旧服务器上的 nslcd.conf 中所做的那样?
先感谢您。
更新:
ldap_access_filter = (&(objectClass=posixAccount)(host=\*))
适用于 ldapsearch 主机属性中带有 * 的管理员:
~$ ldapsearch -LLL -Q -Z uid=admin-user host
dn: uid=admin-user,ou=People,dc=my,dc=domain,dc=net
host: *
我也可以直接指定服务器名称:
ldap_access_filter = (&(objectClass=posixAccount)(host=servername.example.lan))
并且它也适用于列表中拥有此服务器的用户:
~$ ldapsearch -LLL -Q -Z uid=a-testuser host
dn: uid=a-testuser,ou=People,dc=my,dc=domain,dc=net
host: servername.example.lan
但是我怎样才能使用变量或特殊字符*或者\*?