工作需求,需要samba服务器使用Active Directory来进行身份认证。折腾了一段时间,终于配置起来了。
Windows 2003域环境的搭建不多说了,网上很多教程,而且都是点鼠标的操作,没啥技术含量,着重讨论Linux的Samba服务器支持域认证的配置过程。
Win 2003 Server作为域控制器,客户端提交的认证请求和授权的过程是通过Kerberos5协议来完成的,所以要让Linux的samba服务器支持域认证,首先需要将Kerberos配置好。看我的配置文件
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = MNKW.COM #指定域
dns_lookup_realm = false
dns_lookup_kdc = true
ticket_lifetime = 24h
forwardable = yes
[realms]
MNKW.COM = {
kdc = 192.168.6.37:88 #设置密钥分发中心的接口,即域控制器的IP
admin_server = 192.168.6.37:749
default_domain = MNKW.COM
}
[domain_realm]
.mnkw.com = MNKW.COM #指定域
mnkw.com = MNKW.COM #指定域
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
在配置好以上之后,需要执行kinit来验证和初始化kerberos协议是否可以正常运行。
遇到的一些问题:
一、
[root@Gh0st CentOS]# kinit test111@mnkw.com
kinit(v5): Cannot find KDC for requested realm while getting initial credentials
原因:客户端主DNS未指向域控制器
解决:
编辑文件/etc/resolv.conf,将nameserver的值修改成域控制器的IP地址。
二、
[root@Gh0st CentOS]# kinit test111@mnkw.com
Password for test111@mnkw.com:
kinit(v5): Clock skew too great while getting initial credentials
原因:
客户端与认证服务器的时间差距太大,将客户端与认证服务器的时间同步即可
解决:
安装ntp软件,执行ntpdate –b 192.168.6.37(域控制器的IP),时间被同步
[root@Gh0st CentOS]# ntpdate -b 192.168.6.37
17 Sep 12:32:05 ntpdate[10302]: step time server 192.168.6.37 offset 2537.194742 sec
三、
[root@Gh0st CentOS]# kinit test111@mnkw.com
Password for test111@mnkw.com:
kinit(v5): KDC reply did not match expectations while getting initial credentials
解决:使用大写的域名
[root@Gh0st CentOS]# kinit administrator@MNKW.COM
Password for administrator@MNKW.COM:
[root@Gh0st CentOS]#
至此,kerberos的协议已经配置完成。
下面,需要将samba服务器加入域,看配置过程:
首先配置/etc/nsswitch,使之作为winbind组建运行。
passwd: files winbind
shadow: files
group: files winbind
编辑samba服务的配置文件/etc/samba/smb.conf
[global]
workgroup = MNKW #指定工作组名
server string = Samba Server Version %v
# Insert Start –snowkey
display charset = gb2312
dos charset = gb2312
unix charset = gb2312
# Insert End –snowkey
# logs split per machine
log file = /var/log/samba/%m.log
# max 50KB per log file, then rotate
max log size = 50
# ———————– Domain Members Options ————————
#
# Security must be set to domain or ads
#
security = domain #设置安全等级,只能为domain或者ads
realm = MNKW.COM #认证服务器域名,所有认证信息都将由该服务器来提供。
password server = 192.168.6.37 #密码服务器地址,用于存放身份信息
encrypt passwords = yes
# ———————– Browser Control Options —————————-
os level = 20
#—————————– Name Resolution ——————————-
# DNS Proxy – tells Samba whether or not to try to resolve NetBIOS names
# via DNS nslookups.
dns proxy = no
# ————————— Printing Options —————————–
#
# Load Printers let you load automatically the list of printers rather
# than setting them up individually
#
load printers = yes
cups options = raw
# —————– winbind drinkey added—————-#
netbios name = KWSystem-S #设置NetBIOS名称,注意不能重名,其他都可使用如下值
idmap uid = 15000-20000
idmap gid = 15000-20000
winbind enum groups = yes
winbind enum users = yes
winbind separator = /
template homedir = /data1/file/smbs/%U
template shell = /bin/bash
#============= Share Definition================
[homes]
comment = Home Directories
path= /data1/%U #通过身份认证的用户的家目录
browseable = no #是否能够浏览其他用户的共享
writable = yes #是否可写
valid users = %D/%U #允许的用户
create mode = 0777
directory mode = 0777
root preexec = /shell/mkhome.sh %U %G #登录成功后,执行该脚本,用于给第一次登录成功的用户创建家目录。
打印机配置,可以不用管,不需要的话可以删掉 或者注释掉。
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
配置好这些,SAMBA可以支持域认证了,但是还是没有办法使用。
为了让用户在本地拥有对应的家目录,使用一个脚本来实现认证成功的用户创建目录。
#!/bin/bash
user=$1
group=$2
home=/data1/$1
if [ ! -d $home ];then
mkdir -p $home
chown $user $home
chgrp $group $home
chmod 777 $home
fi
重启smb和winbind
service smb restart
service winbind restart
接下来使samba加入域
[root@Gh0st samba]# net rpc join -U administrator
Password:
Joined domain MNKW.
测试加入域是否成功。
[root@Gh0st samba]# net rpc testjoin
Join to ‘MNKW’ is OK
建立主机信任关系。
#wbinfo -t
checking the trust secret via RPC calls failed
error code was (0×0)
Could not check secret
重新运行winbind即可
#wbinfo -u
Error looking up domain users
没有设置首选DNS
编辑/etc/reslov.conf
添加nameserver 192.168.6.37
最后,需要将winbind设为开机启动
chkconfig –level 3 winbind on
此后,重启了系统之后,winbind会初始化协议,加入域,并与域控制器建立信任关系即可成功使用域账号登陆系统。
91ri.org评:我今天折腾了一天的linux加入windows域,各种出错各种蛋疼,现在终于解决了,考的就是这篇文档,下载于百度文库,文章作者匿名,虽然不知道作者是谁但是还是特别感谢一下作者!同时刚才下载文档的时候遇到了没有百度积分的问题,发到几个群里有好多朋友很热情的就直接给我秒下来了,在这里感谢一下他们!表着人人为我 我为人人的口号 发文章出来与大家共享 希望能帮到跟我一样遇到这种蛋疼问题的人。
看不惯文字的朋友可以参考这篇文章:<<linux下利用samba加入windows域(图片版)>>
本文转自网络由网络安全攻防研究室(www.91ri.org)信息安全小组收集整理。
Copyright © hongdaChiaki. All Rights Reserved. 鸿大千秋 版权所有
联系方式:
地址: 深圳市南山区招商街道沿山社区沿山路43号创业壹号大楼A栋107室
邮箱:service@hongdaqianqiu.com
备案号:粤ICP备15078875号