一、samba是什么
1、Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
2、Samba特点
smaba最大的特点就是可以用于linux和windows之间进行文件共享和打印机共享samba不仅仅可以用于linux和windows之间
samba还可以用于两台linux之间共享
由于linux平台诞生了一个更好的工具,nfs网络文件共享系统,专门用于linux之间文件数据共享●因此samba更多是使用linux和windows之间
二、samba服务搭建
1、安装服务
```html/xml
yum -y install samba
补充知识
```html/xml
yum list samba //列出软件包的信息
yum remove samba //卸载软件包
yum check-update samba //检查是否有可更新的软件包
yum update samba //更新samba软件包
2、创建samba服务用户
```html/xml
gpasswd xugang
useradd -M xug3 -s /sbin/nologin/ -g xugang
useradd -M xug3 -s /sbin/nologin/ -g xugang

#### 3、修改配置文件
pdbebit 参数说明
```javascript
-a, --create 新建samba用户
-r, --modify 修改samba用户
-x, --delete 删除samba用户
-L, --list 列出全部samba用户,读取passdb.tdb数据库文件
-v, --verbose 显示详细信息
-c, --account-control=STRING 账户控制值
-w, --smbpasswd-style 以smbpasswd格式输出
-u, --user=USER 使用的用户
-N, --account-desc=STRING 设置账户描述
-f, --fullname=STRING 设置全名
-h, --homedir=STRING 设置家目录
-D, --drive=STRING 设置家设备
-S, --script=STRING 设置登陆脚本
-p, --profile=STRING 设置配置文件路径
-I, --domain=STRING 设置用户域名
-U, --user SID=STRING 设置用户SID或RID
-M, --machine SID=STRING 设置设备SID或RID
-m, --machine 账户是一个设备账户
-b, --backend=STRING 使用不同的passdb作为默认后端
-i, --import=STRING 指定后段导入用户账户
-e, --export=STRING 导出用户账户到指定后端
--policies-reset 恢复默认策略
-P, --account-policy=STRING 帐户策略的值(如最大密码有效期)
-C, --value=LONG 设置账号策略值
--force-initialized-passwords 强制初始化passdb后端
-z, --bad-password-count-reset 重置错误密码
-Z, --logon-hours-reset 重置登陆时间
--time-format=STRING 时间参数的格式
-t, --password-from-stdin 从标准输入获取密码
-K, --kickoff-time=STRING 设置开始时间
--set-nt-hash=STRING 从nt-hash设置密码
-d, --debuglevel=DEBUGLEVEL 设置debug级别
-s, --configfile=CONFIGFILE 使用备用配置文件
-l, --log-basename=LOGFILEBASE 设置日志文件的基本名称
-V, --version 输出版本号
--option=name=value 从命令行设置smb.conf选项
-?, --help 显示帮助信息
--usage 显示简要的使用信息
```html/xml
vim /etc/samba/sbm.cof
[xg]
comment = test xg #共享描述
path = /opt/xg #共享目录
public = yes #允许guest用户访问
writable = yes #允许在heijunma目录下写入
directory mask = 0777 #默认创建目录权限
create mask = 0777 #默认创建文件权限
valid users = @xugang,root #允许访问该共享的用户
write list = @xugang,root #可写入共享的用户列表
browseable = yes #该指定共享目录可浏览
available = yes #该指定共享资源可使用

创建smb用户
```javascript
pdbedit -a -u xug3
pdbedit -a -u xug4
4、创建共享目录
Mkdir xugang
chmod 777 xugang
systemctl restart smb.service 启动服务
systemctl reload smb.service 加载配置文件
ss -antp |grep smb 查看端口
验证
三、总结
session 2 两个端口的使用情况
可以在“网络连接/属性/TCPIP协议/属性/高级/WINS中设置启用或者禁用NBT(NetBIOS over TCP/IP)。
当计算机同时支持NTB和TCP/IP两种协议的时候,就面临着选择139或者445端口了。下面的情况确定会话使用的端口:
1、如果客户端启用了NBT,那么连接的时候将同时访问139和445端口,如果从445端口得到回应,那么客户端将发送RST到139端口,终止这个端口的连接,接着就从445端口进行SMB的会话了;如果没有从445端口而是从139得到回应,那么就从139端口进行会话;如果没有得到任何回应,那么SMB会话失败。
2、如果客户端禁用了NBT,他就将只从445端口进行连接。
3、如果服务器端启用NBT,那么就同时监听UDP 137、138端口和TCP139,445端口。如果禁用NBT,那么就只监听445端口了。
总结一下:139端口是在NBT协议基础上的,关闭NBT协议139就废了。而445端口是在TCP/IP协议基础上,现在网络中应该很少有不使用TCP/IP协议的了。最后如果主机两种协议同时支持的话(比如windowsxp以后的操作系统)那么共享访问时候的端口使用优先级为:445>139,所以现在UNC路径访问ip地址都是使用445端口,而访问主机名形式是使用139端口(现在基本不用了)。
关闭139端口的方法:“网络连接/属性/TCPIP协议/属性/高级/WINS中设置启用或者禁用NBT(NetBIOS over TCP/IP)
关闭445端口的方法:防火墙阻塞445端口或者禁用server服务都可以。