Skip to main content

Mac OS X和OpenLDAP

索引

  • 导言
  • 打开目录
  • OpenLDAP的添加
  • 模式
  • 前交叉韧带
  • 添加容器
  • 让 Mac 通话 LDAP
  • 连接到OpenLDAP
  • 拒绝SASL机制
  • 映射属性

导言

互联网上有很多关于如何将Mac OS X客户端绑定到OpenLDAP服务器的文档。这份文件是我试图提供这些信息。

打开目录

Open Directory(opendirectoryd)是围绕几个信息存储的包装器,其中一个可以是LDAP服务器。如果应用程序需要知道用户的主目录,它会要求Open Directory获取该信息,因此Open Directory需要知道从哪里获取这些信息。这就是这份文件的内容。如何以这样一种方式共同配置Open Directory,使其知道在哪里检索数据,特别是如何告诉它从我们自己的OpenLDAP服务器获取数据,因为我们假设您一开始就已经有一个OpenLDAP基础设施。

关于假设,我们再做几个。我们假设您已经在LDAP服务器中包含thesamba.schemasamba.ldif模式文件。我们还假设您使用Simple Bind(-x)来访问您的LDAP服务器。

OpenLDAP的添加

模式

我们必须用一些额外的模式文件来扩展OpenLDAP。我们不会盲目添加苹果提供的Mac OS X apple.schema文件,但我们提供自己的版本。上述模式文件都可以从das.made-it.com下载。要以正确的顺序加载它们,请确保您的slapd.conf看起来像这样:

包括/etc/openldap/schema/core.schema包括/etc/openldap/schema/cosine.schema包括/etc/openldap/schema/inetorgperson.schema包括/etc/openldap/schema/rfc2307bis.schema包括/etc/openldap/schema/microsoft-ad.schema包括/etc/openldap/schema/asid-ldap-cache-draft.schema包括/etc/openldap/schema/samba.schema包括/etc/openldap/schema/apple-od.schema

如果您当前的slapd.conf包含nis.schema,您可以安全地将其替换为RFC2307bis模式,它包含相同的属性和类,以及更多内容。您可以从DAS项目下载的属性已经注释了uidNumber和gidNumber属性,因为这些是OpenLDAP内置。

 

前交叉韧带

Mac OS 10.9.2从LDAP服务器检索userPassword,这意味着slapd.conf中的ACL如下所示:

访问attrs=userPassword,sambaNTPassword,sambaLMPassword作者:dn="cn=manager,dc=example,dc=com" write由匿名授权由*无

不会起作用的。Mac应该能够读取用户密码字段,所以我最终做到了这一点:

访问attrs=userPassword,sambaNTPassword,sambaLMPassword作者:dn="cn=manager,dc=example,dc=com" write	作者:peername.ip=192.168.1.0%255.255.255.0 read由匿名授权	由*无

这允许整个本地网络读取密码字段的值。这并不理想,但至少让它发挥作用。

 

添加容器

Mac OS X使用base搜索LDAP树并过滤:(&(objectClass=organizationalUnit)(ou=macosxodconfig)),以支持在LDAP树中进行LDAP映射,我们添加以下内容:

dn:ou=macosxodconfig,ou=apps,dc=example,dc=comou:macosxodconfigobjectClass:顶部objectClass:组织单位

稍后,我们将用正确的数据填充。

 

让 Mac 通话 LDAP

连接到OpenLDAP

从“系统偏好设置”中选择“用户与群组”实用工具。点按“登录选项”,然后选择“加入...”按钮:

在服务器上:提示提供LDAP服务器的FQDN或IP地址。

如果您收到无法找到安全(SSL)连接的消息,请单击继续。在系统准备好检测LDAP服务器后,您应该会看到前面有一个绿点的网络帐户服务器。另请注意添加到允许网络用户登录的额外检查元素。

跑步:

sudo ls /库/首选项/OpenDirectory/配置/LDAPv3/

应该显示server-name.plist文件。

 

在“用户和组”实用工具中,点按“Web 帐户服务器”后面的“编辑...”。

选择服务器,然后单击打开目录实用程序...

双击LDAPv3行。将LDAP映射字段设置为RFC2307,并提供搜索基础后缀。

要完成此过程,请单击确定。

为了确保机器使用我们的LDAP服务器:

dscl localhost -列表 /LDAPv3

 

要查看用户列表,请按以下步骤操作:

dscl localhost -list /LDAPv3/<ldap-server>/用户

 

要确保SearchPath正确,请进行以下操作:

dscl /搜索 -read / CSPSearchPath

 

编辑/etc/auto_master并注释以/home开头的行,然后

killall autofsd

 

创建具有正确访问权限的LDAP用户的主目录,并使用以下内容进行测试:

su - <LDAP-user>pwd

 

如果您搞砸了,请从用户和组实用程序中删除网络帐户服务器并运行:

sudo rm /Library/Preferences/OpenDirectory/DynamicData/LDAPv3/<ldap-server>.plist

 

拒绝SASL机制

由于Mac OS X 10.7.2(狮子)Open Directory将尝试通过SASL机制连接到OpenLDAP。如果您的OpenLDAP服务器使用Simple Bind Lion,则不会回落到此状态,但会拒绝登录。10.7之前的版本仅使用Simple Bind,因此工作没有问题。

Wireshark显示,Mac做的第一件事是连接到LDAP服务器,要求服务器根过滤(objectClass=*),并请求支持的SASLMechanismsdefaultNamingContextschemaNamingContextsalRealm

如果我们用ldapsearch模仿支持SASLMechanisms,它看起来是这样的:

# ldapsearch -x -h localhost -b '' -D "cn=manager,dc=example,dc=com" -y /etc/secrets/ldap-manager.secret -s base -LLL "(objectclass=*)" 支持SASLMechanisms

这导致了这样的事情:

支持SASL机制:DIGEST-MD5支持SASL机制:GSSAPI支持SASL机制:CRAM-MD5支持SASL机制:NTLM

 

为了让Mac再次运行良好,我们必须在Mac上对LDAP服务器提供的每个机制运行以下命令(用LDAP服务器的名称替换yourldapserver):

/usr/libexec/PlistBuddy -c "add ':module options:ldap:Denied SASL Methods:' string DIGEST-MD5" /Library/Preferences/OpenDirectory/Configurations/LDAPv3/yourldapserver.plistOpendirectoryd.plist?

 

映射属性

返回目录实用程序,网址为:

选择新...

点按“搜索与映射”标签。使用Open Directory将访问此LDAPv3服务器设置为Open Directory。左列中的每个条目更正搜索库,以反映DLAP树。

之后,请确保用户使用:inetOrgPerson、posixAccount、shadowAccount和apple-user。

组应设置为:posixGroup和apple-group

如果您想进行更多调整,请继续。完成后,选择保存模板...

像这样创建一个LDIF文件:

dn:ou=macosxodconfig,ou=apps,dc=example,dc=com更改类型:修改添加:描述描述:< file:///home/admin/Documents/Template.plist

根据您的本地情况调整DN和文件路径。

 

使用:

ldapmodify -x -h ldap.example.com -D "cn=manager,dc=example,dc=com" -W -f macosxodconfig.ldif

将Template.plist添加到您的LDAP树中。

 

在其他客户端上,您现在可以将LDAP映射设置为From Server而不是RFC2307。


客户将请求搜索库,并找出其余部分。

 

原文链接