我需要将Linux客户端绑定到Windows Server 2012 Active Directory。我有一个测试环境,我用samba-winbind-kerberos和nslcd成功地使用用户进行身份验证。但是,当使用samba-winbind-kerberos时,我能够实现这一点而无需扩展AD模式以包含UNIX属性(UID / GID,主目录,shell),因为smb.conf有一个idmap选项,指定起始范围
idmap config *:range = 11000-20000
这将负责AD用户的UID / GID的unix映射。
如果我没有在AD中启用UNIX属性,我将在nslcd调试日志中出现错误,即
uidNumber: missing
有没有办法在nslcd / libnss_ldap中使用相同的功能,这样我就不必在Windows服务器2012上扩展AD架构了?由于其远程代码执行漏洞,我不喜欢在生产环境中使用samba。
答案 0 :(得分:3)
现在这是不可能的。 nslcd根据其文档没有可用的id映射,这需要扩展AD模式以具有unix属性。
答案 1 :(得分:2)
使用CentOS Linux版本7.4.1708(Core)和nslcd版本0.8.13对抗Windows 2016 AD而没有任何架构扩展,我能够配置它并使其在今天正常工作。
我主要关注Serverfault文章“LDAP authentication on CentOS 7”,并且必须在/etc/nslcd.conf
部分Alternative mappings for Active Directory
和replace the SIDs in the objectSid mappings with the value for your domain
中使用。
要“Get SID by its objectSid using ldapsearch”我已使用linked script。
其他映射设置为
filter passwd (&(objectClass=user)(objectClass=person)(!(objectClass=computer)))
map passwd uid sAMAccountName
map passwd uidNumber objectSid:<yourValue>
map passwd gidNumber primaryGroupID
map passwd homeDirectory "/home/$sAMAccountName"
map passwd gecos displayName
map passwd loginShell "/bin/bash"
map group gidNumber primaryGroupID