You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Solaris 11服务器getent passwd仅显示OpenLDAP中People OU下用户的问题求助

Solaris 11服务器getent passwd仅显示OpenLDAP中People OU下用户的问题求助

问题描述

我已经把Solaris 11服务器和OpenLDAP服务器连接成功了,连接状态正常——用ldaplist命令能看到搜索基准下的所有LDAP用户,输出如下:

dn: cn=user_1,dc=IT,dc=my-company,dc=com
dn: cn=user_2,dc=IT,dc=my-company,dc=com
dn: cn=user_3,dc=IT,dc=my-company,dc=com
dn: ou=People,dc=IT,dc=my-company,dc=com

getent passwd命令只返回ou=People下的用户,而且如果修改这个OU的名称,就完全返回不了用户了。我从来没配置过让ldapclient或者getent passwd限定在ou=People下,而且ldapclient生成的ldap_client_file配置文件里也没指定这个OU:

NS_LDAP_SERVERS= my-companies-ldap-server.com:636
NS_LDAP_SEARCH_BASEDN= dc=IT,dc=my-company,dc=com
NS_LDAP_AUTH= tls:simple
NS_LDAP_CACHETTL= 0
NS_LDAP_CREDENTIAL_LEVEL= proxy

有没有人能给我点排查思路?谢谢!

可能的排查方向和解决办法

我之前遇到过类似的问题,给你几个可以尝试的方向:

  • 检查nsswitch.conf配置getent是通过/etc/nsswitch.conf读取用户信息的,先看看里面passwd条目有没有针对LDAP的额外限制。比如有些情况下Solaris会默认给LDAP的passwd查询加上路径限定,你可以查看passwd行是否类似:

    passwd: files ldap
    

    如果有ldap:ou=People这类参数,那就是这里限制了范围;如果没有,接着往下排查。

  • 查看ldapclient完整配置ldap_client_file只是基础配置,你可以用ldapclient list命令查看更详细的客户端设置,重点看搜索路径(Search Path)和过滤器(Filter)相关参数。Solaris的LDAP客户端默认可能会对posixAccount(对应passwd的对象类)预设ou=People作为搜索范围,即使你没在基础配置里指定。如果发现有这样的默认配置,可以用ldapclient modify命令调整:

    ldapclient modify -a defaultSearchBase=dc=IT,dc=my-company,dc=com
    

    或者直接修改针对passwd的搜索过滤器,去掉ou=People的限定。

  • 用ldapsearch模拟查询:直接用ldapsearch命令模拟getent的查询逻辑,验证是否能返回所有用户:

    ldapsearch -x -b dc=IT,dc=my-company,dc=com -H ldaps://my-companies-ldap-server.com:636 '(objectClass=posixAccount)'
    

    如果这个命令能返回所有用户,说明问题出在Solaris的NSS(名称服务切换)配置上;如果只能返回ou=People下的用户,那可能是OpenLDAP服务器端的ACL限制,但你用ldaplist能看到所有用户,大概率还是客户端的问题。

  • 检查LDAP客户端profile配置:Solaris的ldapclient可能使用了默认profile(比如defaultnis),这些profile里可能预设了ou=People作为用户搜索路径。你可以用ldapclient show -v查看profile的详细设置,如果是这个原因,可以创建自定义profile,修改搜索路径后再应用。

希望这些思路能帮你解决问题!

备注:内容来源于stack exchange,提问作者Marvin Stelter

火山引擎 最新活动