安装 samba 以及所需组件依赖
yum install -y samba samba-common samba-client samba-winbind* krb5-workstation ntp
停止防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭 selinux
setenforce 0 # 临时关闭
sed -i s/enforcing/disabled/g /etc/selinux/config # 永久关闭
getenforce # 查看状态
设置开机启动
systemctl enable smb
systemctl enable winbind
修改 hosts
vim /etc/resolv.conf
serach yeah.local # 域名
nameserver 172.16.252.110 # DC的IP地址
修改网卡配置
echo "SEARCH="YEAH.LOCAL"" >> /etc/sysconfig/network-scripts/ifcfg-ens33 # 添加搜索域
修改 winbind 配置
# 编辑/etc/nsswitch.conf文件,这样winbind能实现使用域上的用户。
vim /etc/nsswitch.conf
# 找到如下几行,修改
passwd: file winbind #sss
shadow: file winbind #sss
group: file winbind #sss
修改 krb 配置
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 = YEAH.LOCAL # 此处填写windows ad域名必须大写
[realms]
YEAH.LOCAL = { # 此处填写windows ad域名必须大写
kdc = 172.16.252.110 # AD服务器的IP
admin_server = 172.16.252.110 # AD服务器的IP
}
[domain_realm]
.yeah.local = YEAH.LOCAL # 填写windows ad域名必须大写
yeah.local = YEAH.LOCAL # 填写windows ad域名必须大写
修改 smb 配置
vim /etc/samba/smb.conf
[global]
workgroup = YEAH #windows域名不带后缀
password server = dc.yeah.local # DC服务器FQDN名称
realm = YEAH.LOCAL # windows 域名
security = domain # 验证方式域验证,使用windows ad域验证权限
idmap config * : range = 16777216-33554431 # 为windows域中的用户添加gid与uid的范围
template shell = /sbin/nologin # 域中的用户是否启用登录samba服务器shell,此处不登录
kerberos method = secrets only
winbind use default domain = false
winbind offline logon = false
winbind separator = + # 定义windows域跟组名的分隔符,如YEAH\admin 在linux中转换定义为YEAH+admin
encrypt passwords = yes
winbind enum users = yes
winbind enum groups = yes
#template homedir = /home/%U
# idmap uid - 指定一个uid范围,该范围内的uid被用来映射UNIX用户到windows用户SID,
# 而且要确保这个id范围内没有被本地或者NIS用户占用,winbind启动以后,也不能在该ID范围内添加用户。
# idmap gid - 指定一个gid范围,该范围内的gid被用来映射UNIX用户到windows的组SID,
# 而且要确保这个id范围内没有被本地或者NIS组占用,winbind启动以后,也不能在该ID范围内添加新组。
# winbind enum groups和winbind enum users - 指定winbind是否在系统上创建域的组/用户
#,一般情况下都要设置为yes,除非你处于某种原因希望关闭该功能。
# 很多域组包括空格,这时要确保在chown命令或smb.conf中使用域用户时要包包含空格的组名用引号括起来。
# chown :"MYDOMAIN+Domain Users" thisfile
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
# 也可以像nginx配置文件一样,全局配置与共享配置文件分开
include = /etc/samba/share.conf
# 共享的配置内容写入到/etc/samba/share.conf中
[Data] # 访问共享时显示的文件夹名称
comment = Share data file # 共享文件夹描述
path = /share # 需要共享的文件夹目录
public = no # 是否所有人可见
browseable = yes # 是否允许浏览
writable = yes # 是否允许写入
write list = @YEAH+it-service-group # 允许写入的组,为ad中的用户组,如需多个使用空格或者逗号分开
force group = YEAH+it-service-group # 归属组,如需多个使用空格或者逗号分开
valid users = @YEAH+it-service-group # 允许的组,如需多个使用空格或者逗号分开
read list = @share only read # 只读用户组,需先将用户加入允许的组,再加入只读清单
force create mode = 0664 # 在linux中权限
force directory mode = 0775 # 在linux中权限
测试配置是否正确,能否加入域
# 使用有权限将客户端加入域的账号测试
kinit yeah-admin@yeah.local
# 加入域,使用有权限将客户端加入域的账号,输入密码
net ads join -U yeah-admin
# 测试是否成功加入域
wbinfo -t
# 出现如下则表示加域成功
checking the trust secret for domain TEST via RPC calls succeeded
wbinfo -g # 查看获取AD域中的用户组
wbinfo -u # 查看获取AD域中的用户
getent group # 查看能否获取AD中的用户组
getent passwd # 查看获取AD域中的用户
重启服务
systemctl restart smb
systemctl restart winbind
创建共享目录
mkdir /share
# 给共享目录添加权限
chown -R root:YEAH+it-service-group /share
# chmod -R g+w+r+x /share
测试访问 OK