CentOS7.6 Samba使用AD域控认证(winbind),亲测有效。

centos7:

https://www.freesion.com/article/44621398696/

cetnos6

https://blog.51cto.com/icedot/1293327

本文档参考上面技术文档

由于公司信息保密,测试机信息和AD服务器信息保密,使用test.com替代,网段IP也是替代

一、测试机:centos 7.6

主机名:study.test.com

IP: 192.168.10.10

使用VMWARE的桥接模式

二、AD域控:windows server 2016

主机名:gd

域名:test.com

IP:192.168.10.20

下面是操作步骤

一、安装需求套件及关闭防火墙和selinux

yum install -y samba samba-common samba-client samba-winbind* krb5-workstation ntp
    
systemctl stop firewalld
setenforce 0

二、设置开机启动

systemctl enable smb
systemctl enable winbind

三、修改hosts文件

vim /etc/hosts

在下面添加AD域控的IP和主机名

192.168.10.20 gd gd.test.com

四、在/etc/hosts

127.0.0.1 study study.test.com

五、添加DNS地址,网卡配置文件添加。

vim /etc/sysconfig/network-scripts/ifcfg-ens32
DNS1=192.168.10.20  #一般跟AD的地址一样

六、编制/etc/resolv.conf配置文件

search test.com          #域名
nameserver 192.168.10.20 #AD的DNS
nameserver *.*.*.*       #加域时的DNS,本人公司有,视个人公司情况添加

注:一般在公司网络条件下,虚拟机选择桥接模式,/etc/resolv.conf会自动配置公司的AD服务器的DNS,此时检查一下是否与公司内一致即可。

七、设置主机名

hostnamectl set-hostname study.test.com

八、用setup命令来快速设置winbind

setup

此处参考https://www.freesion.com/article/44621398696/的图片

九、设置samba

[global]
   workgroup = BAONENGMOTOR
   password server = bqszad0002.baonengmotor.com
   realm = BAONENGMOTOR.COM
   security = domain
   idmap config * : range = 16777216-33554431
   template shell = /bin/bash
   kerberos method = secrets only
   winbind use default domain = false
   winbind offline logon = false
   encrypt passwords = yes
   winbind enum users = yes
   winbind enum groups = yes
   template homedir = /home/%U

#--authconfig--end-line--
;       workgroup = SAMBA
;       security = user

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
[share]
        comment = Share Directories
        path = /share
        public = yes
;       valid users = %U
        browseable = yes
        writable = yes
        create mask = 0664
        directory mask = 0775

其它[homes]、[printers]保持默认不变

十、设置nsswitch

vim /etc/nsswitch.conf

找到以下三行并将winbind移至sss前面
passwd: files winbind sss
shadow: files winbind sss
group: files winbind sss

十一、设置kerberos

vim /etc/krb5.conf

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 dns_lookup_realm = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 rdns = false
 pkinit_anchors = FILE:/etc/pki/tls/certs/ca-bundle.crt
# default_realm = EXAMPLE.COM
 default_ccache_name = KEYRING:persistent:%{uid}

 default_realm = TEST.COM                 <-----------域名,必须大写
[realms]
 TEST.COM = {                             <-----------域名,必须大写
  kdc = 192.168.10.20                     <-----------AD服务器的IP
  admin_server = 192.168.10.20            <-----------AD服务器的IP
 }

#注:上面还有default选项,注释掉。

[domain_realm]               
  .test.com = TEST.COM                    <-----------域名,必须大写
  test.com = TEST.COM                     <-----------域名,必须大写

测试

kinit admin@test.com

#admin是AD的管理员账号,不一定要是administrator,其它具有域控管理权限的账号也可以。
#输入上面命令后,会提示输入admin密码,输入密码后回到shell,代表kerberos配置成功。

十二、加域及验证,其中administrator是域控管理员账号,其它具有域控管理权限账号也行

net ads join -U administrator
出现以下提示
Using short domain name -- TEST        
Joined 'STUDY' to realm 'test.com' 
No DNS domain configured for pmsamba. Unable to perform DNS Update.     
DNS update failed: NT_STATUS_INVALID_PARAMETER
并不表示加域成功,需要用到下面命令验证。

wbinfo -t
出现如下则表示加域成功
checking the trust secret for domain TEST via RPC calls succeeded

十三、重启smb和winbind

systemctl restart smb
systemctl restart winbind

此时在运行里输入\192.168.10.20,会提示输入账号和密码对话框,使用AD域账号登录就可以。

十四、关于加域错误提示

参考以下技术文档

https://blog.51cto.com/icedot/1293327

上面技术档以centos6为测试机,但原理都是一样。