一、概述
Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块 ,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。
Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享,而 Samba较多的用在了Linux与windows之间的数据共享上面。
例如,一台在Linux 下已经架设好的Samba服务器,windows客户端就可以通过SMB协议共享Samba服务器上的资源文件
组成Samba运行的有两个服务,一个是SMB,另一个是NMB;SMB是Samba 的核心启动服务,主要负责建立 Linux Samba服务器与Samba客户机之间的对话, 验证用户身份并提供对文件和打印系统的访问,只有SMB服务启动,才能实现文件的共享,监听139 TCP端口;而NMB服务是负责解析用的,类似与DNS实现的功能,NMB可以把Linux系统共享的工作组名称与其IP对应起来,如果NMB服务没有启动,就只能通过IP来访问共享文件,监听137和138 UDP端口
二、环境准备
服务器:CentOS 7.6系统(192.168.245.100)
客户机:win10系统(192.168.245.10)
三、samba的安装
yum -y install samba //yum安装samba软件,也可以samba*下载所有相关软件
四、samba的配置
rpm -qc samba-common //查看samba配置文件
/etc/logrotate.d/samba
/etc/samba/lmhosts
/etc/samba/smb.conf //samba主配置文件
/etc/sysconfig/samba
注意:直接输入samba是看不到主配置文件的
/etc/sambs/smb.conf.example //samba配置文件的模板文件,不懂怎么配置可以看它
1、匿名用户访问
[global] //全局配置,影响所有范围
workgroup = SAMBA //工作组
security = user //安全验证方式为user,6.5系统的share已经不用了
map to guest = Bad User //允许匿名用户访问,默认没有这一条
passdb backend = tdbsam //定义用户后台类型为tdbsam
[share] //共享目录显示的名字,随便起
path=/opt/abc //共享目录的路径
browseable=yes //允许访问
writable=yes //可写入
create mask=0644 //写入文件的权限为644
directory mask=0755 //创建目录的权限为755
guest ok = yes //允许匿名访问,public=yes也可以
testparm smb.conf //检查配置文件的语法
Load smb config files from smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions //这里可以ctrl+c跳过
setenforce 0 //设置selinux=Permissive
systemctl stop firewalld.service //关闭防火墙
systemctl disable firewalld.service //设置开机不启动防火墙
systemctl start smb //启动samba服务
客户机win10直接访问服务器地址\\192.168.245.100
2、基于身份验证的访问
[test]
path=/opt/test //共享目录是test
browseable=yes
create mask=0644
directory mask=0755
valid users=zhangsan, lisi //允许访问的账户张三和李四,中间用逗号和空格分隔
write list=zhangsan //可写的账户是张三
[root@sheng samba]# smbpasswd -a zhangsan //建立samba用户并指定密码,用户必须是系统用户
New SMB password:
Retype new SMB password:
Added user zhangsan.
[root@sheng samba]# smbpasswd -a lisi
New SMB password:
Retype new SMB password:
Added user lisi.
[root@sheng samba]# pdbedit -L //列出Samba用户列表,读取passdb.tdb数据库文件
zhangsan:1000:
lisi:1001:
客户机win10访问服务器:
C:\Users\shengjie>net use * /d //windows系统清除缓存
3、别名访问
[global]
workgroup = SAMBA
security = use
passdb backend = tdbsam
username map = /etc/samba/smbusers //全局配置下指定别名映射的配置文件,默认是没有的需要自己创建
客户机验证别名访问:
4、访问控制
[test]
path=/opt/test
browseable=yes
create mask=0644
directory mask=0755
valid users=zhangsan, lisi
write list=zhangsan
hosts deny=192.168.245. //只需要在单独的共享目录配置块下多加一条deny即可
客户端验证不可以访问test
总结:访问控制优先匹配白名单
5、挂载windows系统的共享
我们需要将windows系统的一个文件夹共享出来,使linux服务器可以访问,需要先设置这个文件夹的共享权限,然后再在linux系统中挂载,linux系统才可以访问
C:\Users\shengjie>gpupdate /force
正在更新策略...
计算机策略更新成功完成。
用户策略更新成功完成。
yum -y install samba-client //需要安装samba客户端软件
yum -y install cifs-utils //需要安装windows的smb文件系统工具
[root@sheng samba]# smbclient -L 192.168.245.10 //查看客户端的共享文件
Enter SAMBA\root's password:
Sharename Type Comment
--------- ---- -------
ADMIN$ Disk 远程管理
C$ Disk 默认共享
D$ Disk 默认共享
IPC$ IPC 远程 IPC
share Disk
[root@sheng samba]# mount.cifs //192.168.245.10/share /opt/win //挂载windows的共享文件夹到linux
Password for root@//192.168.245.10/share: //这里不用输入密码直接回车