环境:
- 全新 Debian 10 Samba 4.9.5-Debian 作为 AD-DC,使用内部 LDAP、内部 DNS、启用 RFC2307、启用并配置 libnss-winbind、启用并配置 libpam-winbind
- 全新 Debian 10 Samba 4.9.5-Debian 作为文件服务器,已加入 AD 域,已启用 RFC2307,已启用并配置 libnss-winbind,已启用并配置 libpam-winbind
- Windows 7 和 Windows 10 客户端
- 各种 Linux 服务器将加入 AD 域
- 在 Windows 7 上安装用于管理的 Microsoft RSAT 工具
AD 用户和 AD 组仅在 Windows 上运行,并且都分配有 NIS 用户/组 ID。
getent passwd
在文件服务器上显示所有 AD 用户。getent group
在文件服务器上显示所有 AD 组,但在 Linux 上所有 AD 组都显示为空。Windows RSAT 工具按预期显示组成员。
输出是somegroup:x:23456:
。
预期输出为somegroup:x:23456:joe.user,tim.trouble,n.o.clue
。
似乎我遗漏了需要配置的一个小细节。
答案1
解决方案是 smb.conf 中缺少一个参数,如下所示使用 winbind 的 Linux 嵌套组
winbind expand groups
自 Samba 4.2 起默认为 0,必须非零才能列出用户成员getent group
。
我已经winbind expand groups = 10
在文件服务器上设置了 smb.conf,它适用于我们的小型 Samba-AD。
答案2
看一下winbind 枚举用户+winbind 枚举组。它们默认no
在 smb.conf 中。
引用winbind enum users
:
如果 winbind enum users 参数为 no,则对 getpwent 系统调用的调用将不会返回任何数据。
和winbind enum groups
:
如果 winbind enum groups 参数为 no,则对 getgrent() 系统调用的调用将不会返回任何数据。
也就是说,您不需要启用设置。可以通过wbinfo -u
和枚举用户和组wbinfo -g
。