IT运维管理,创造商业价值!
中国IT运维网首页 | 资讯中心 | 运维管理 | 信息安全 | CIO视界 | 云计算 | 最佳案例 | 运维资源 | 专题策划 | 知识库 | 论坛

疯狂的企鹅系列 单点登录和企业目录(三)(1)

2008年03月21日
/

用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 
Setting stored password for
↪"uid=samba_server,ou=people,o=ci,dc=example,dc=com"
↪in secrets.tdb

为了增加安全性,你应该关闭你的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] 下一页
 第 1 页:  第 2 页:关于SID和RID的注解
 第 3 页:Samba权限  第 4 页:单点登陆和windows
 第 5 页:配置Eudora v6.2
发表评论请到:http://bbs.cnitom.com

相关阅读

图文热点

详细剖析:企业采用Linux系统注意事项
详细剖析:企业采用Linux系统注意事项你是否已经厌烦了整日为Windows Sever打补丁,是否已经开始怀疑Windows Sever 服...
揭穿零日漏洞的七大误区
揭穿零日漏洞的七大误区又过了一个月,又有一个零日漏洞被报告,而恶意攻击者借助恶意软件,发动了钻这个...

本类热点