linux下利用samba加入windows域(文字版)

工作需求,需要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 (0x0)
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)信息安全小组收集整理。