AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 47810
In Process
SethG
SethG
Asked: 2009-07-30 14:28:14 +0800 CST2009-07-30 14:28:14 +0800 CST 2009-07-30 14:28:14 +0800 CST

linux 上针对 AD 的 LDAP 查询返回没有成员的组

  • 772

我正在使用 LDAP+kerberos 对 Windows 2003 R2 上的 Active Directory 进行身份验证。我的 krb5.conf 和 ldap.conf 似乎是正确的(根据我在网上找到的几乎所有样本)。我可以使用密码和 ssh 密钥登录主机。当我运行 getent passwd 时,我的所有 ldap 用户帐户都列出了所有重要属性。当我运行 getent 组时,列出了所有 ldap 组及其 gid,但没有组成员。如果我在任何组上运行 ldapsearch 和过滤器,则所有成员都与“成员”属性一起列出。所以数据是可以拿来的,只是没有被正确解析。看来我只是在 ldap.conf 中使用了不正确的映射,但我看不到它。我尝试了几种变体,并且都给出了相同的结果。

这是我当前的 ldap.conf:

host <ad-host1-ip> <ad-host2-ip>
base dc=my,dc=full,dc=dn
uri ldap://<ad-host1> ldap://<ad-host2>
ldap_version 3
binddn <mybinddn>
bindpw <mybindpw>
scope sub
bind_policy hard 
nss_reconnect_tries 3
nss_reconnect_sleeptime 1
nss_reconnect_maxsleeptime 8
nss_reconnect_maxconntries 3
nss_map_objectclass posixAccount User
nss_map_objectclass posixGroup Group
nss_map_attribute uid sAMAccountName
nss_map_attribute gidNumber msSFU30GidNumber
nss_map_attribute uidNumber msSFU30UidNumber
nss_map_attribute cn cn
nss_map_attribute gecos displayName
nss_map_attribute homeDirectory msSFU30HomeDirectory
nss_map_attribute loginShell msSFU30LoginShell
nss_map_attribute uniqueMember member
pam_filter objectcategory=User
pam_login_attribute sAMAccountName
pam_member_attribute member
pam_password ad

这是踢球者:此配置在具有不同发行版的不同 linux 机器上可以 100% 正常工作。它不适用于我打算切换到的发行版。我已经从源代码安装了新盒子的版本pam_ldap以nss_ldap匹配旧盒子,这解决了我在此设置中遇到的另一个问题。

其他相关信息是原来的 AD 框是 Windows 2003。它的镜像死于可怕的硬件死亡,所以我试图在镜像树中再添加两个 2003-R2 服务器并最终放弃旧的 2003 框。新的 R2 盒子似乎已经正确地加入了 DC 森林。

我需要做什么才能让小组工作?我已经用尽了我能找到的所有资源,需要一个不同的角度。任何输入表示赞赏。


状态更新,2009 年 7 月 31 日

我已经设法调整了我的配置文件以从 AD 中获取完整信息,并且性能很好而且很敏捷。我用我正在使用的发行版的当前版本替换了 back-rev'd 副本pam_ldap,nss_ldap所以它回到了标准的开箱即用安装。这是我当前的配置:

host <ad-host1-ip> <ad-host2-ip>
base dc=my,dc=full,dc=dn
uri ldap://<ad-host1> ldap://<ad-host2>
ldap_version 3
binddn <mybinddn>
bindpw <mybindpw>
scope sub
bind_policy soft 
nss_reconnect_tries 3
nss_reconnect_sleeptime 1
nss_reconnect_maxsleeptime 8
nss_reconnect_maxconntries 3
nss_connect_policy oneshot
referrals no
nss_map_objectclass posixAccount User
nss_map_objectclass posixGroup Group
nss_map_attribute uid sAMAccountName
nss_map_attribute gidNumber msSFU30GidNumber
nss_map_attribute uidNumber msSFU30UidNumber
nss_map_attribute cn cn
nss_map_attribute gecos displayName
nss_map_attribute homeDirectory msSFU30HomeDirectory
nss_map_attribute loginShell msSFU30LoginShell
nss_map_attribute uniqueMember member
pam_filter objectcategory=CN=Person,CN=Schema,CN=Configuration,DC=w2k,DC=cis,DC=ksu,DC=edu
pam_login_attribute sAMAccountName
pam_member_attribute member
pam_password ad
ssl off
tls_checkpeer no
sasl_secprops maxssf=0

现在剩下的问题是当您运行groups命令时,并未列出所有订阅的组。有些是(一两个),但不是全部。仍然尊重组成员身份,例如文件和打印机访问权限。 getent group foo仍然显示用户是组 foo 的成员。所以它似乎是一个演示错误,并且不会干扰正常操作。

即使列出了该组,某些(我还没有确定到底有多少)组搜索似乎也无法正确解析。例如,当您运行“ getent group bar”时,没有返回任何内容,但是如果您运行“ getent group|grep bar”或“ getent group|grep <bar_gid>”,您可以看到它确实列出了,并且您的组名和 gid 是正确的。

这似乎仍然是 LDAP 搜索或映射错误,但我不知道它是什么。我比本周早些时候更接近了,但我真的很想解决最后一个细节。

linux windows-server-2003 active-directory ldap groups
  • 2 2 个回答
  • 4417 Views

2 个回答

  • Voted
  1. kubanczyk
    2010-06-11T14:42:21+08:002010-06-11T14:42:21+08:00

    这可能是我不久前遇到的相同情况。如果您的 AD 组成员过多,则会在 Linux 中导致此类错误(在 getent 级别或之前的某个位置 - ldapsearch 工作正常)。

    更准确地说,错误不是关于特定数量的成员,而是关于每个“组行”的字符数(想想 /etc/group 中的行)大于 1023 个字符。我没有研究为什么有这个限制以及为什么有 1024。我刚刚创建了第二个组并将过多的成员移到那里。

    • 1
  2. JeremyinNC
    2012-05-25T09:30:21+08:002012-05-25T09:30:21+08:00

    这实际上是一件很容易解决的事情,您需要将以下内容添加到您的 ldap.conf 中:

    nss_schema rfc2307bis
    

    这告诉它枚举具有 DN 的组,而不仅仅是它们的 CN。另请注意,只要您拥有 2003R2 DC 或更新版本,您现在就可以使用 RFC2307 原生属性(gecos、uid 等)。

    • 1

相关问题

  • 更改 PHP 的默认配置设置?

  • 保护新的 Ubuntu 服务器 [关闭]

  • (软)Ubuntu 7.10 上的 RAID 6,我应该迁移到 8.10 吗?

  • 在 Windows Server 2003 下使用 wscipt 从 .asp 文件运行 .exe

  • 在 SQL Server 中,何时应将 PRIMARY Data FileGroup 拆分为辅助数据文件?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve