背景
对于windows的网上邻居来讲,共享文件的方式用的是SMB和CIFS协议以及NETBIOS协议Linux/Unix之间用的是NFS协议。
但是Linux和Windows之间是不能共享的,所以澳大利亚国立大学的Andrew Tridgell,决定开发一款软件,这款软件就是为了实现不同的系统之间互相共享文件的,于是一款叫做SMB的软件横空出世了,但是这个名字不能被注册成商标,因为已经有SMB协议了,于是作者给名字上加了两个A,就成了我们即将使用的功能强的文件共享服务器:SAMBA
工作原理
SAMBA主要提供的是SMB/CIFS或者NETBIOS协议的。
所以只要使用了SAMBA,就能实现让Linux出现在Windows的网上邻居里,或者,让Windows的文件共享在Linux上--
一旦在linux上安装之后,有两个主要进程:
1.nmbd :提供NETBIOS 名称解析的
2.smdb : 提供文件共享的。
而由于NETBIOS协议对于windows来讲监听TCP的139端口和UDP的137,138端口 ,所以nmbd在linux上模拟出了udp的137和138端口,以及tcp的139端口,smdb上模拟出 tcp的445端口。而SAMBA将在Linux上同时监听这4个端口。
安装Samba及其工具
环境
win10 + Vmware Player(CentOS 7.3)
安装
yum install samba -y
注:上述命令会根据依赖关系,将相关组件都安装上去的。
配置
配置文件地址: /etc/samba/smb.conf
配置文件主要有4个段组成:
1.全局配置段 [global]
2.家目录段[homes]
3.独立的共享段[printer]
4.自定义段[c_s]
我们一段一段的来分析
第一段:[global]:
workgroup = MYGROUP 定义工作组的
server string = Samba Server Version %v 这是用于当你通过网上邻居打开的时候,注释信息是什么
netbios name = XXX 显示在终端中的名字
security = user
passdb backend = tdbsam 所有的SAMBA用户的认证文件使用什么方式认证
load printers = yes 是否去尝试加载打印机
cups options =raw 通用打印系统,指定打印方式
hosts allow = XX.XX.XX.XX 定义访问控制列表
注: security 这一项很关键,是用来定义SAMBA服务的安全级别的,安全级别主要有4个 1.share:允许任何匿名用户直接访问 2.user:默认:每一个用户访问的时候必须要提供账号和密码
3.domain/server:通常意味着把用户的账号和密码在认证的时候是通过第三方集中的认证的。而不是直接通过系统来认证,比如有一个专门的认证服务器 4.ads:通过主域控制器来认证的
第二段:[homes]:
comment = Home Directories #说明信息
browseable = no #浏览,如果这个用户不是这个目录的属主的话,是否可以看到这个目录的,no表示只有属主才能看到
writable =yes # 是否可以往里新建文件的。
第三段:[printers]:
comment = All Printers
path = /var/spool/samba # 打印池
browseable = no
guest ok = no #打印机是否公开
writable = no
printable = yes
第四段:我们定义一个自己的:[tools]中括号括起来的叫共享名
comment = My Tools
path = /share #用于定义在系统目录上真正的那个目录在什么地方
browseable = yes #是否可浏览
guest ok = yes #是否允许来宾账号
writable = yes# 是否可写
#write list = XXX # 定义一个列表决定用户/组是否可以写,定义组的时候,需要用 @组名
## 配置实例 这里以下面配置为例,实际说明一下Samba的使用
文件/etc/samba/smb.conf
[global]
workgroup = LinuxSir
netbios name = LinuxSir05
server string = Linux Samba Server TestServer
security = user
[linuxsir]
path = /opt/linuxsir
writeable = yes
browseable = yes
guest ok = yes
准备用户和目录
这里面当前用户magc 来登录Samba共享,这里为samba设置登录密码:
smbpasswd -a magc
注:smbpasswd命令需要添加在系统中已经存在的用户才可以。
准备目录:
mkdir -p /opt/linuxsir
chown -R nobody:nobody /opt/linuxsir
注:nobody作为Linux的内置帐户,用来使用匿名登录的功能准备的。
启动服务
# 开启自动启动服务
systemctl enable smb
systemctl enable nmb
# 启动服务
systemctl start smb
systemctl start nmb
# 查看服务状态
systemctl status smb
防火墙设置
默认情况下开着防火墙Samba服务从外部是访问不了的,
# 临时关闭防火墙
systemctl stop firewalld
注:也可以在防火墙里开放Samba的服务端口
使用Windows访问samba共享目录
在windows里输入\IP 在弹出的用户密码框里输入magc及密码就可以进入共享目录了。