整理:debian 下samba用windows 2003 AD进行身份验证成功
参考:http://bbs2.chinaunix.net/thread-968948-1-1.html
前几天使用ubuntu8.04配置不成功,后来安装了debian,配置成功了。方法如下:
按照上面的参考文档我使用了第二种方法,也就是使用winbind。
1.实现环境
Debian4.2+Samba3.0+Krb5
2.软件包安装
Samba及Krb5都是用新立得安装
3.Kerberos配置
Win2003系统默认通过Kerberos做身份验证,Kerberos验证需要安装Krb5软件包。配置文件及测试都很简单。Krb5的配置文件为/etc/krb5.conf,配置如下
[logging]
default=FILE:/var/log/krb5libs.log
kdc=FILE:/var/log/krb5kdc.log
admin_server=FILE:/var/log/kadmind.log
[libdefaults]
default_realm=TEST.COM
dns_lookup_realm=false
dns_lookup_kdc=false
ticket_lifetime=24h
forwardable=yes
[realms]
TEST.COM={
kdc=dc.test.com:88
admin_server=dc.test.com:749
default_domain=TEST.COM
}
[domain_realm]
.test.com=TEST.COM
test.com=TEST.COM
[appdefaults]
pam={
debug=false
ticket_lifetime=36000
renew_lifetime=36000
forwardable=true
krb4_convert=false
}
4.SAMBA配置
[global]:
workgroup=TEST
netbiosname=debian
serverstring=Samba&ADSTestServer
security=domain
passwordserver=dc.test.com
preferredmaster=no
domainmaster=no
domainlogons=no
logfile=/var/log/samba.log
idmapuid=10000-20000
idmapgid=10000-20000
winbindenumgroups=no
winbindenumusers=no
注:此二行表示为是否在linux下添加AD帐号,只有加了此二行,在使用getentpasswd和gententgroup才能显示AD上面的帐号和组
winbindseparator=/
winbindusedefaultdomain=yes
templatehomedir=/home/test/%U注:此处可以自己设定在/home/%D/%U
templateshell=/bin/bash
[homes]
comment=User'sHomeDirectories
path=/home/test/%U和上面templatehomedir的值一样
browseable=no
validusers=%U
特别注意:此二处为一定要是%U,而不能使用%S,%U需要的客户端用户名即登录用户名,而%S是当前共享名
writable=yes
[A组]
comment=GroupA
path=/usr/keynetsamba/a
browseable=yes
vaildusers=@gpa
writable=yes
createmode=755
directorymode=0755
[B组]
comment=GroupB
path=/usr/keynetsamba/b
browseable=yes
vaildusers=@gpb
writable=yes
createmode=755
directorymode=0755
这些设置的一个简单的说明如下:
-idmapuid-指定一个uid范围,该范围内的uid被用来映射UNIX用户到windows用户SID,而且要确保这个id范围内没有被本地或者NIS用户占用,winbind启动以后,也不能在该ID范围内添加用户。
-idmapgid-指定一个gid范围,该范围内的gid被用来映射UNIX用户到windows的组SID,而且要确保这个id范围内没有被本地或者NIS组占用,winbind启动以后,也不能在该ID范围内添加新组。
-winbindseparator-指定一个字符作为分隔符,winbind将使用该分隔符来用户或组名。使用该配置将使得域用户表示为"MYDOMAIN+username",域组被表示为"MYDOMAIN+DomainUsers"
-winbindenumgroups和winbindenumusers-指定winbind是否在系统上创建域的组/用户,一般情况下都要设置为yes,除非你处于某种原因希望关闭该功能。
-templatehomedir-用来指定为域用户产生主目录。上面的示例中使用了变量替换,将使得winbind把用户主目录设置为/home/MYDOMAIN/username。
需要注意的是如果希望特定域或者所有域用户在samba目录有主目录,那么管理员必须手工创建,虽然templatehomedir控制samba在哪里寻找域用户的主目录,但是不会自动创建,所以要自己手动创建,并设定权限。
5.配制NSS
Nss为NameServiceSwitch,控制帐号的验证修改/etc/nsswitch.conf文件,这样winbind能实现使用域上的用户,内容如下:
passwd:fileswinbind
group:fileswinbind
shadow:fileswinbind
hosts:filesdnswins
bootparams:nisplus[NOTFOUND=retum]files
protocols:dbfiles
services:files
ethers:dbfiles
rpc:files
networks:filesdns
netmasks:files
netgroup:files
publickey:nisplus
automount:files
aliases:filesnisplus
6.重启samba与winbind服务
sudo/etc/init.d/sambarestart
sudo/etc/init.d/winbindrestart
7.将debian加入2003域
netrpcjoin-Sdc.test.com-Uadministrator
如果遇到错误提示类似为:Failedtoopen/var/lib/samba/secrets.tdb
请执行:sudochmod777/var/lib/samba/secrets.tdb
8.确认Samba主机帐号在AD中正确注册
wbinfo–t
checkingthetrustsecretviaRPCcallssucceeded
说明主机信任已成功建立
使用wbinfo-u列出AD中注册的帐号信息。Wbinfo–g可以返回AD中的组信息。
此时可以使用windows客户端来访问samba服务器了。
注:如果samba服务器上安装有iptables服务,而且filter链里的INPU为DROP,请打开以下端口,方能正常使用samba服务:
TCP:139,445
UDP:137,138
TCP:88(此为krb5验证端口)