热门关键字:  ubuntu  分区  函数  linux系统进程  Fedora

ldap samba实现windows域管理

来源: 作者: 时间:2007-03-01 Tag: 点击:
0 ) 准备工作

1) 一个全新安装的debian sarge。1台或者多台Win 2k/xp测试电脑。
2) 至少懂一些LDAP和Samba。
3) 假设服务器的域名是abc.com,服务器的名称为test-server。

1 安装web服务器

# apt-get install apache2 php4 libapache2-mod-php4

等待安装完毕之后,用浏览器连接服务器的域名或者ip试试看。能显示web页就说明apache2没问题了。apache2的web的根目录在/var/www,配置文件在/etc/apache2。

此后需要验证php4是否安装妥当。在/var/www目录新建一个index.php文件,内容如下。

<?
   phpinfo();
?>

保存之后,再次连接服务器的 http://abc.com/index.php ,会看到一个php信息的网页,表示php安装成功。

2 安装Openldap和phpldapadmin

debian 里面的openldap的名字是slapd。ldap-utils包里包括了一些ldap有用的命令(都是以ldap开头的)。 phpldapadmin是ldap的一个web管理界面。de4.2-util是Berkeley V4.2 数据库工具包,ldap需要用到。

#apt-get install slapd ldap-utils phpldapadmin db4.2-util

下载完毕包之后,开始安装之前,会出来一些设置界面(请注意这里出现问题的数目和安装系统时的某个设置有关系)。

slapd的设置
1) DNS domain nam填写你的服务器的域名,此后会作为基准DN。例如我输入abc.com,此后的基准DN就是dc=abc,dc=com。
2) Name of your organization填写你的组织的名称,或者公司的名称。我输入test-org。
3) Admin password填写管理员的密码,这个用户是ldap最高权限的拥有者。
4) 确认密码。
5) Allow LDAPv2 protocol询问你是否允许LDAPv2协议。如果是新装选否就可以了。如果需要兼容以前的系统,选是。

phpldapadmin的设置
1) LDAP服务器的ip或者主机名。因为是管理本机的LDAP服务器,所以默认的127.0.0.1就可以。
2) 是否启用TLS,也就是是否使用加密协议。加密的话可能需要apache2也做配置支持。这里选择否。
3) 基准DN。根据你的情况输入,这里我输入dc=abc,dc=com。
4) 这一步选择phpldapadmin的认证方式,安装过phpmysqladmin的应该会比较熟悉。选择session是最保险的方式。
5) 输入登陆服务器的dn,默认即可。这里还要注意,默认的行字也就是最后登陆phpldapadmin的管理员的用户名,比较长。
6) 需要配置的服务器,这里只需要选择apache2就可以了。
7) 选择是,重启apache。

此后即开始安装。slapd的配置文件都在/etc/ldap。phpldapadmin的配置文件在/etc/phpldapadmin。用浏览器打开 http://abc.com/phpldapadmin ,会看到phpldapadmin的界面,使用cn=admin,dc=abc,dc=com登陆。

###如果是etch, phpldapadmin 0.8.8.1,登陆的时候会提示用户名或密码错误,不知道是不是phpldapadmin 0.9.8.1版本的bug。此版本还有一个问题就是登陆之后,不能新建entry。0.9.8.2版本就没有这个问题了。所以如果你也是0.9.8.1 版本的话,最好还是去http://phpldapadmin.sf.net下载一个新的版本,然后把其中的 phpldapadmin/htdocs/template_engine.php覆盖 /usr/share/phpldapadmin/htdocs/template_engine.php 即可,或者也可以直接全部覆盖,要注意保留config/config.php。

如果提示用户名密码错误,不用担心,还可以修改/etc/ldap/slapd.conf文件,在index后面添加两行

rootdn “cn=admin,dc=abc,dc=com”
rootpw pw

之后重启slapd(/etc/init.d/slapd restart)之后即可用密码pw登陆,登陆之后可以修改密码,修改之后可以去掉上面添加的两行(当然,不删也可以)。

debian中的admin的密码是存储在数据库里面的,而不是/etc/ldap/slapd.conf文件中,所以可以不需要rootdn和rootpw的设置。

使用下面的命令可以查看ldap中所有的条目

#ldapsearch -x -b ‘dc=abc,dc=com’ ‘(objectclass=*)’

修改/etc/syslog.conf,增加下面一行。

local4.*         /var/log/ldap.log

这样ldap生成的日志就会在/var/log/ldap.log里面出现。此外还需要设置/etc/ldap/slapd.conf的loglevel。

3 安装samba

samba-doc包含了和ldap一起工作的samba schema,这个是我们需要的。

#apt-get install samba samba-doc

samba的设置
1) Workgroup/Domain Name这里输入工作组名称或者域名称。我这里输入test-domain。
2) 是否使用加密密码。windows默认都是这个。选是。
3) 修改smb.conf使用DHCP设置的WINS。选否。
4) 选daemons。
5) 是否建立samba密码数据库,选是。

复制ldap需要的samba的schema。

#cp /usr/share/doc/samba-doc/examples/LDAP/samba.schema.gz /etc/ldap/schema
#cd /etc/ldap/schema/
#gzip -d samba.schema.gz

修改/etc/ldap/slapd.conf,在include后面加上一行。

include         /etc/ldap/schema/samba.schema

重启slapd。配置samba使用ldap来验证。修改/etc/samba/smb.conf文件。

找到passdb backend = tdbsam,将其替换为下面内容。

passdb backend = ldapsam:ldap://127.0.0.1
ldap suffix = dc=abc,dc=com
ldap machine suffix = ou=machines
ldap user suffix = ou=users
ldap group suffix = ou=groups
ldap admin dn = cn=admin,dc=abc,dc=com
ldap delete dn = no

# 服务器配置为主域控制器
domain logons = yes

# allow user privileges
enable privileges = yes

设置之后可以使用testparm命令测试。

为samba提供LDAP rootdn的密码。

# smbpasswd -w your_passwd
Setting stored password for “cn=admin,dc=abc,dc=com” in secrets.tdb

重启samba。打开phpldapadmin看看,可以看到dc=abc,dc=com下面已经多出来一个entry。我这里是 sambaDomainName=TEST-DOMAIN。查看其属性,可以看到最下面的sambaSID,这个后面的操作会用到。也可以使用net getlocalsid命令得到。

4 安装smbldap-tools

perl脚本,用来更加方便管理用户。主要使用他来初始化LDAP中samba中的部分。

#apt-get install smbldap-tools

配置smbldap-tools。

#cd /etc/smbldap-tools
#cp /usr/share/doc/smbldap-tools/examples/smbldap{.conf.gz,_bind.conf} ./
#gzip -d smbldap.conf.gz

之后修改下面几个文件以符合你的情况。

/etc/smbldap-tools/smbldap.conf

SID=”S-1-5-21-3248317815-3353503310-553435137″
suffix=”dc=abc,dc=com”
usersdn=”ou=users,${suffix}”
computersdn=”ou=machines,${suffix}”
groupsdn=”ou=groups,${suffix}”
sambaUnixIdPooldn=”sambaDomainName=TEST-DOMAIN,${suffix}”
hash_encrypt=”MD5″

/etc/smbldap-tools/smbldap_bind.conf:

slaveDN=”cn=admin,dc=abc,dc=com”
slavePw=”password”
masterDN=”cn=admin,dc=abc,dc=com”
masterPw=”password”

要注意这个文件里面的密码要添明文,所以最好为这个文件设置合适的权限。

执行smbldap-populate命令

# smbldap-populate
Using workgroup name from sambaUnixIdPooldn (smbldap.conf): sambaDomainName=TEST-DOMAIN
Using builtin directory structure
entry dc=abc,dc=com already exist.
adding new entry: ou=Users,dc=abc,dc=com
adding new entry: ou=Groups,dc=abc,dc=com
adding new entry: ou=Computers,dc=abc,dc=com
adding new entry: ou=Idmap,dc=abc,dc=com
entry sambaDomainName=TEST-DOMAIN,dc=abc,dc=com already exist. Updating it…
adding new entry: uid=Administrator,ou=Users,dc=abc,dc=com
adding new entry: uid=nobody,ou=Users,dc=abc,dc=com
adding new entry: cn=Domain Admins,ou=Groups,dc=abc,dc=com
adding new entry: cn=Domain Users,ou=Groups,dc=abc,dc=com
adding new entry: cn=Domain Guests,ou=Groups,dc=abc,dc=com
adding new entry: cn=Domain Computers,ou=Groups,dc=abc,dc=com
adding new entry: cn=Administrators,ou=Groups,dc=abc,dc=com
adding new entry: cn=Print Operators,ou=Groups,dc=abc,dc=com
adding new entry: cn=Backup Operators,ou=Groups,dc=abc,dc=com
adding new entry: cn=Replicators,ou=Groups,dc=abc,dc=com

此后,可以查看一下phpldapadmin,已经新加了几个entry。

5 安装mkntpwd

最新评论共有 4 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册