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.schema或samba.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=*),并请求支持的SASLMechanisms、defaultNamingContext、schemaNamingContext和salRealm。
如果我们用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。
客户将请求搜索库,并找出其余部分。