/bin/bash
目录
????????samba是SMB文件共享协议的应用软件,可以让Linux系统和Windows系统之间相互共享资源。
在Linux系统中使用smbd服务器提供提供共享资源;使用smbclient去访问其他smbd服务器所提供的共享资源。
在Windows中有SMB/CIFS服务器和客户端。
????????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 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关闭文件。
??? smbd进程:用于控制共享目录、权限和文件传输。
??? nmbd进程:用于名称解析,基于NEtBIOS协议获得计算机名称,解析为相应的IP地址。
服务器端:
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
输入密码
?
?
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 上传??但是不可以上传,因为我们设置的是只读!
网络:\\192.168.100.131\test
输入账号:test密码:123.com
?
成功访问:
Win ?+R ?访问 ??\\192.168.100.131\test
输入账号:test密码:123.com
?
hello world