/bin/bash
目录
SAMBA
SMB协议
SMB连接过程
samba主要有两个进程
Linux下搭建samba服务器实现文件共享
Linux客户端:
Windows客户端:
SAMBA
samba是SMB文件共享协议的应用软件,可以让Linux系统和Windows系统之间相互共享资源。
在Linux系统中使用smbd服务器提供提供共享资源;使用smbclient去访问其他smbd服务器所提供的共享资源。
在Windows中有SMB/CIFS服务器和客户端。
SMB协议
SMB(Server Message Block)协议是一种在局域网上共享资源的协议,它可以为局域网中的Windows系统、Linux系统或是IOS系统提供文件系统、打印服务或其他一些信息。
SMB的工作原理基于NetBIOS(Network Basic Input/Output System)协议与SMB这两种协议。
NetBIOS:用于发现局域网内主机名;使用下列端口:UDP/137(NetBIOS 名称服务)、UDP/138(NetBIOS 数据报服务)、TCP/139(NetBIOS 会话服务);
SMB:用于文件传输;使用下列端口:TCP/139、TCP/445。
SMB连接过程
首先客户端发送一个 SMB Negotiate Protocol Request 请求数据报,并列出它所支持的所有SMB协议版本。
服务器收到请求信息后回应 Negotiate Protocol Response,并列出希望使用的协议版本;如果没有可使用的协议版本则返回0XFFFFH,结束通信。
协议确定后,客户端进程向服务器发起一个用户或共享的认证,这个过程是通过发送 Session Setup Request 请求数据报实现的;客户端发送一对用户名和密码或一个简单密码到服务器。
然后服务器通过发送一个 Session Setup Response 应答数据报来允许或拒绝本次连接。
当客户端和服务器完成认证之后,它会发送一个 Tree Connect Request 数据报并列出它想访问网络资源的名称
之后服务器会发送一个 Tree Connect Response 应答数据报以表示此次连接是否被接受或拒绝。
连接到相应资源后,SMB客户端就能够通过open SMB打开一个文件,通过read SMB读取文件,通过write SMB写入文件,通过close SMB关闭文件。
samba主要有两个进程
smbd进程:用于控制共享目录、权限和文件传输。
nmbd进程:用于名称解析,基于NEtBIOS协议获得计算机名称,解析为相应的IP地址。
Linux下搭建samba服务器实现文件共享
服务器端:
1、前提配置:
关闭防火墙
systemctl stop firewalld
iptables -F
setenforce 0
2、安装samba
# yum -y install samba
3、创建共享目录
mkdir /test
touch /test/1.txt
4、主配置文件中声明共享区域,创建只读共享
vim /etc/samba/smb.conf
末行添加
[test]
comment = test
path = /test
public = yes
read only = yes
5、启动服务
# systemctl start smb
# systemctl status smb
# netstat -antpul | grep smb
6、检查参数ok情况
# testparm
7、创建用户,设置为samba用户
1)设置已有的账号
smbpasswd -a 用户名
2)设置新建的账号
useradd test
pdbedit -a -u test
输入密码
Linux客户端:
1、安装客户端工具
yum -y install samba-client*
2、客户端查看共享目录
smbclient -U 用户名 -L //服务器地址/共享目录名称
smbclient -U test -L //192.168.100.131/test
3、客户端登录samba服务器
smbclient -U 用户名 //服务器地址/共享目录名称
smbclient -U test //192.168.100.131/test
ls 查看
get 下载 可以下载
put 上传 但是不可以上传,因为我们设置的是只读!
Windows客户端:
网络:\\192.168.100.131\test
输入账号:test密码:123.com
成功访问:
Win +R 访问 \\192.168.100.131\test
输入账号:test密码:123.com
hello world