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为测试机,但原理都是一样。