用LDAP联合Samba为电子邮件和SSH提供单点登陆系统。欢迎来到如何实施一个单点登陆和企业目录系统的第三部分,在这篇文章中,我们处理微软windows客户端的集成,有许多事情需要处理,因此戴上你的工作手套让我们开始吧。
当你想将windows客户端集成到一个异构环境中时,你有一些选择,尽管你可以运行一个活动目录(AD)服务器将你的linux和Apple客户端与它绑定进行认证和身份管理,但是开销却不少,它也没有在一个开源得的单点登陆和目录实施文章有趣。
当你正在绑定windows客户端到一个开源的解决方案时,你有两个选择,你是绑定它们到Kerberos范围进行认证还是绑定到LDAP进行身份管理吗?这是一个二者取其一的选择,因为尽管windows客户端知道如何与Kerberos和LDAP交流,它们知道当与一个AD服务器交流时,在同一时间如何与它们交流,换句话说,当用户身份保存在本地时windows客户端可以与一个非AD Kerberos服务器交流,同样,windows客户端可以通过Samba从LDAP获取身份,但是仅当密码也通过Samba提供时,现在Samba还不能通过Kerberos提供认证。
windows认证依靠我们的Kerberos认证更容易设置,但是它更难以维护,因为每个使用windows客户端的用户都需要在一个本地帐户,如果你所有的只有一个windows客户端需要维护就很好,但是如果你不止一个,你就需要给每个客户端添加一个用户,我不想继续探究这个选择,无论如何,如果你有兴趣你可以看看Jason Garman关于Kerberos的著作:The Definitive Guide。
配置Samba
因为我们正在讨论企业目录,我假设在你的网络中有不止一台windows机器,为了尽可能无痛地将它们合并到一起,我们使用Samba联合LDAP目录作为一个后端,我们配置Samba将有一点不同,你应该先阅读Craig Swanson和Matt Lung的“OpenLDAP Everywhere Revisited”,因为它将给你一个很好的基础,我在名叫samba的目录下创建了一个组织分支,列表1详细展示了这些分支的层次结构,列表2展示了LDIF。
列表1.附加的组织单元
+ o=ci,dc=example,dc=com |- ou=samba |- ou=hosts |- ou=idmap |
列表2.附加组织单元的LDIF
dn: ou=samba,o=ci,dc=example,dc=com objectClass: organizationalUnit ou: samba dn: ou=hosts,ou=samba,o=ci,dc=example,dc=com objectClass: organizationalUnit ou: hosts dn: ou=idmap,ou=samba,o=ci,dc=example,dc=com objectClass: organizationalUnit objectClass: sambaUnixIdPool uidNumber: 15000 gidNumber: 15000 |
我没有从IDEALX使用smbldap脚本创建必须的条目,因为我正在使用LDAP而不仅是Samba进行认证,一个不使用smbldap工具主要的原因是因为它假设Samba是唯一如增加用户和组的点,在我的环境中,所有用户都不能登陆到windows机器,一些用户可能开始只作为linux用户,但是后面需要给他们访问windows机器的权限,smbldap工具也不能很好地完成这个工作,但是smbldap工具可以做好其他事情,如探测所有工具是否都可用并选择出最好的适合你需要的。
我们需要几个LDAP用户来完成几个任务,首先我们需要一个有写目录权限的用户,如果你注意到在/etc/samba/smb.conf中有一个选项:ldap admin dn,它用来定义用户的DN,这个叫做samba_server的用户存储在LDAP目录中,它将是目录中唯一一个与密码关联的用户,因为这个用户没有posixAccouont对象类,这个帐户在linux是不能识别的,要创建这个用户,首先运行slappasswd生成hash密码,然后用这个hash值创建一个与列表3类似的ldif文件。
列表3.Samba用户的LDIF
dn: uid=samba_server,ou=people,o=ci,dc=example,dc=com objectClass: top objectClass: person objectClass: uidObject sn: samba_server cn: samba_server userPassword: {SSHA}xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx uid: samba_server |
接下来,我们需要告诉Samba如何作为samba_server用户访问LDAP目录,要使用到
smbpasswd命令:
# /usr/bin/smbpasswd -w |
为了增加安全性,你应该关闭你的shell历史日志,因为在命令行中直接给出了密码,smbpasswd命令给出了密码并将其存储在/var/lib/samba/private/secrets.tdb中,并插入了Samba域和管理员dn,因此如果这些值发生改变,你应该重新运行smbpasswd命令。
因为Samba使用这个用户在目录中查询和修改值,我们需要允许samba管理员在目录中有写权限,因此务必增加适当的ACL到/etc/openldap/slapd.conf。
就此,我们可以获取域的SID,要获得域的SID,你需要作为root登陆到主域控制器(PDC),然后运行:
# net getlocalsid SID for domain CI-PDC is: ↪S-1-5-21-2162541494-3670296480-3949091320 |
如果你没有使用smbldap工具来创建所有的Samba LDAP条目,当创建它们的时候你需要使用这个SID,我在ftp://ftp.ssc.com/pub/lj/listings/issue142/8376.tgz中提供了一个样本LDIF文件包括你需要的所有条目。
Samba也需要一个在LDAP目录中uid=0的临时用户来完成一些动作,不需要一个完整的posixAccount用户,但是它应该象列表4列出的内容
共5页: 1 [2] [3] [4] [5] 下一页 | |||||||
|