Centos 7+Samba +winbind+Windows 2012 AD (Samba加入WINDOWS AD域)
公司办公系统采用windows系统,有大量的数据需要共享。其中需要把办公数、生产数据分开保存。
我打算采用Samba管理,便有以下的使用过程。在此过程中有参阅以下samba文档:
http://www.mamicode.com/info-detail-2306907.html
https://www.jianshu.com/p/f2fd9e88077c
https://www.cnblogs.com/Ericshang/p/9070978.html
https://www.cnblogs.com/rusking/p/3993148.html
https://blog.csdn.net/QTM_Gitee/article/details/84060845#3__Samba__288
https://xz.aliyun.com/t/5004#toc-16
https://www.cnblogs.com/fatt/p/5856892.html
概念:
SRV:服务器定位资源记录,要使活动目录正常工作,DNS必须支持SRV。活动目录客户端和域控制器使用SRV记录决定域控制器的ip地址。使用SRV记录决定域控制器的ip地址
samba简介
Samba,是种用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协定做连结的自由软件。
目前samba不仅可存取及分享SMB的资料夹及打印机,本身还可以整合入Windows Server的网域,扮演为网域控制站(Domain Controller)以及加入Active Directory成员。简而言之,此软件在Windows与UNIX系列OS之间搭起一座桥梁,让两者的资源可互通有无。
1.基础准备:
A .修改hosts: # vim /etc/hosts
B. 修改dns:# vim /etc/resolv.conf
C.修改selinux : # vim /etc/sysconfig/selinux
修改内存中设定,让其立即生效: setenforce 0
D. 修改防火墙:# systemctl stop firewalld && systemctl disable firewalld
2. yum安装samba所需软件:
yum -y install pam_krb5* krb5-libs* krb5-workstation* krb5-devel* samba samba-winbind* samba-client* samba-swat*
安装完成后,请启动相关服务:
systemctl start smb nmb
systemctl start winbind
3. 配置文件说明:
kerberos :
配置文件:# /etc/krb5.conf
作用:一种网络认证协议,其设计目标是通过客户端+KDC+服务端提供强大的认证服务。
samba:
配置文件:# /etc/samba/smb.conf
作用:samba的配置文件,通过该文件来管理文件共享、用户权限,samba服务设置、与winbind交互等。
winbind:
配置文件:
作用:Samba作为域成员运行,则winbindd服务将负责向域操作系统(AD)提供有关域用户和组的信息。
winbindd服务为用户和组提供唯一的ID给Linux,必须在samba配置文件(/etc/samba/smb.conf)中配置ID映射。
samba winbind包里包含上面说的做映射的服务库(NSS library)和客户端工具。
samba winbind clients包里只含有客户端工具(wbinfo , ntlm_auth)。
nssiwtch:
配置文件:# /etc/nsswitch.conf
作用: Nsswitch.conf文件通常控制着用户(在passwd中)、口令(在shadow中)、主机IP和组信息(在group中)的搜索。
PAM模块接口(模块管理组)
PAM为认证任务提供四种类型可用的模块接口,它们分别提供不同的认证服务:
单个PAM库模块可以提供给任何或所有模块接口使用。例如,pam_unix.so提供给四个模块接口使用
配置文件: /etc/pam.d/system-auth
作用: 用户身份认证
配置文件: /etc/pam.d/password-auth
作用: 密码认证
√ auth |
- 认证模块接口,如验证用户身份、检查密码是否可以通过,并设置用户凭据 |
√ account |
- 账户模块接口,检查指定账户是否满足当前验证条件,如用户是否有权访问所请求的服务,检查账户是否到期 |
√ password |
- 密码模块接口,用于更改用户密码,以及强制使用强密码配置 |
√ session |
- 会话模块接口,用于管理和配置用户会话。会话在用户成功认证之后启动生效 |
配置文件: /etc/security/pam_winbind.conf
作用: 将AD域中用户连接samba服务器后,限制在samba服务器中的 / home目录对应的AD用户目录下:
例如AD用户小明连接到samba后,将权限限制在samba中的/home/xiaoming/中(共享目录除外)
3. 与AD同步时间:
ntpdate 192.168.8.188
4.具体配置:
# /etc/samba/smb.conf(只显示全局设置)
[global]
workgroup = SILANIC
realm = SILANIC.CN
security = ads
idmap config * : range = 16777216-33554431
template shell = /bin/bash
template homedir = /home/%D/%U
winbind enum users = yes
winbind enum groups =yes
winbind use default domain = true
winbind offline logon = true
server string = PT2CTD
log file =/var/log/samba/log.%m
max log size = 50
passdb backend = tdbsam
encrypt passwords = yes
printing = cups
printcap name = cups
load printers = yes
# /etc/nsswitch.conf (只显示修改项)
passwd: files winbind
shadow: files winbind
group: files winbind
# /etc/krb5.conf(全部显示)
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
pkinit_anchors = /etc/pki/tls/certs/ca-bundle.crt
default_realm = SILANIC.CN
default_ccache_name = KEYRING:persistent:%{uid}
[realms]
SILANIC.CN = {
kdc = 172.17.1.11
admin_server = 172.17.1.11
}
[domain_realm]
.example.com = SILANIC.CN
example.com = SILANIC.CN
# /etc/pam.d/system-auth(在末行增加以下内容:)
session required pam_mkhomedir.so
# /etc/pam.d/password-auth(在末行增加以下内容:)
session required pam_mkhomedir.so
# /etc/security/pam_winbind.conf (在末行增加以下内容:)
require_membership_of =S-1-5-21-1111111111-1111111111-1111111111-111
5. 加入AD域:
net ads join -Uadministrator
加入后,请重新服务:
systemctl restart smb
systemctl restart winbind
6.测试winbind
wbinfo -t
wbinfo -u
wbinfo -g
7.测试kerberos
kinit administrator
[root@pt2ctd samba]# kinit administrator
Password for administrator@SILANIC.CN:
[root@pt2ctd samba]#
8. 加入域时各种报错:
A. 先清理缓存
rm -rf /var/lib/samba/private/secrets.tdb
rm -rf /var/lib/samba/gencache.tdb
B. samba退出域
net ads leave -U cdroot
9.常用命令
A. 重载smbd,nmbd,winbindd的配置,请将reload-config消息类型发送到all目标:
# smbcontrol all reload-config
B.测试samba配置参数:
# testparm /etc/samba/smb.conf
C. 加入AD域命令:
net ads join -U "DOMAIN\administrator"
10.安全防护:
设置SELinux,请在目录中设置samba_share_t上下文:
# semanage fcontext -a -t samba_share_t "/srv/samba/example(/.*)?"
# restorecon -Rv /srv/samba/example/
打开所需的端口并使用firewall-cmd实用程序重新加载防火墙配置:
# firewall-cmd --permanent --add-service=samba
# firewall-cmd --reload
11. samba共享说明
要提供分享资源时,须先把欲分享的资源以 [ ] 符号括住,底下通常会带指令和参数来表示此资源的设定和存取权限等,详情如下: comment---------注释说明 path------------分享资源的完整路径名称,除了路径要正确外,目录的权限也要设对 browseable------是yes/否no在浏览资源中显示共享目录,若为否则必须指定共享路径才能存取 printable-------是yes/否no允许打印 hide dot ftles--是yes/否no隐藏隐藏文件 public----------是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用) guest ok--------是yes/否no公开共享,若为否则进行身份验证(只有当security = share 时此项才起作用) read only-------是yes/否no以只读方式共享当与writable发生冲突时也writable为准 writable--------是yes/否no不以只读方式共享当与read only发生冲突时,无视read only vaild users-----设定只有此名单内的用户才能访问共享资源(拒绝优先)(用户名/@组名) invalid users---设定只有此名单内的用户不能访问共享资源(拒绝优先)(用户名/@组名) read list-------设定此名单内的成员为只读(用户名/@组名) write list------若设定为只读时,则只有此设定的名单内的成员才可作写入动作(用户名/@组名) create mask-----建立文件时所给的权限 directory mask--建立目录时所给的权限 force group-----指定存取资源时须以此设定的群组使用者进入才能存取(用户名/@组名) force user------指定存取资源时须以此设定的使用者进入才能存取(用户名/@组名) allow hosts-----设定只有此网段/IP的用户才能访问共享资源 allwo hosts = 网段 except IP deny hosts------设定只有此网段/IP的用户不能访问共享资源 allow hosts=本网段指定IP指定IP deny hosts=指定IP本网段指定IP