在本地开发项目的过程中,我们需要使用的一些开发工具,这些工具一般安装在windows上,但是我们的代码安装在linx上,那么我们就需要用到smb来进行文件的映射,这里我们先讲如何安装使用,末尾再写原理
1. 首先我们确定是否有安装smb
rpm -qa samba #qa为(query all)的缩写
如果已经安装了,就会返回samba的版本,那么我们可以跳过第二步
2. 安装 samba
yum install -y samba samba-client
安装完成以后进入第三步
3. 修改配置信息
vi /etc/samba/smb.conf
- 这里,我们需要注意
security
是否为user,如果不是就修改为user - 注释
homes
模块 - 在末尾处添加:
[myshare]
comment = share for users
path = /samba #该项为你想要访问的文件位置
browseable = yes
writable = yes
public = no
create mask = 0644 //创建文件属性 可选参数
force user = root //和服务端用户一样 可选参数
完整配置文件
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
#[homes]
# comment = Home Directories
# valid users = %S, %D%w%S
# browseable = No
# read only = No
# inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
[myshare]
comment = share for users
path = /home/wwwroot/
browseable = yes
writable = yes
public = no
create mask = 0644
force user = root
public = no
即禁止匿名账号登陆
新建用户
sudo useradd smbuser
设置密码。
sudo smbpasswd -a smbuser
列出samba所有的账号:
pdbedit -L
重启服务:
service smb restart
Windows访问
计算机选择访问网络映射
输入:\\你要访问的smb服务器ip\myshare
提示权限不够:
确保setlinux
关闭,用setenforce 0
命令执行。
默认的,SELinux
禁止网络上Samba
服务器上的共享目录进行写操作,即使你在smb.conf
中允许了这项操作。
原理
一、samba简介
1、概述:
对于windows的网上邻居来讲,共享文件的方式用的是SMB和CIFS协议以及NETBIOS协议Linux/Unix之间用的是NFS协议。但是Linux和Windows之间是不能共享的,所以澳大利亚国立大学的Andrew Tridgell,决定开发一款软件, 实现不同系统之间文件共享。即Samba诞生了。对于我们学习linux的同学来说,samba为我们在linux和window之间架起了一座桥梁,可以使我们在linux和window之间进行通信,最基本的就是我们可以进行文件拷贝,以及不同系统之间资源共享。
2、应用场景:
文件和打印机共享:smb进程实现资源共享,将文件和打印机发布到网络中,以供用户访问。
身份验证和权限设置:smbd服务服务支持user mode 以及domain mode 等身份验证和权限设置模式,通过加密来保护共享的文件。
名称解析:samba通过nmbd搭建NBNS(netBIOS name service)进行名称解析,将计算机的netBIOS解析成对应的IP地址
浏览服务:局域网中,samba服务器可以成为本地主浏览服务器,保存资源列表,保存可用资源列表。
3、工作原理:
当客户端访问服务器时,通过smb协议进行传输。具体流程如下:
(1)、协议协商:
当客户端访问smb服务器的时候,会发送一条negprot指令数据包,告其计算机支持那种smb,smb服务器根据客户端的请求,选择最优的smb作为回应:
客户端---------------发negprot请求–>---------------服务器端
客户端------------<–发negprot回应-----------------服务器端
(2)、建议连接
当确定了smb类型后,客户端会发送会话,建立指令数据包,提交账号和密码,请求与smb服务器之间建立连接,如果身份验证通过,smb服务器会对会话建立报文做出回应,并为用户分配一个UID,供用户与其通信时使用
客户端---------------发session setup请求–>---------------服务器端
客户端------------<–发session setup回应-----------------服务器端
(3)、访问共享资源
客户端访问服务器资源时,会发送tree connect 指令,通知服务器需要防问的共享资源名,如果设置允许,服务器会为每个客户端与共享资源连接之间分配TID,这样客户端就可以访问需要的共享资源
客户端---------------发tree connect请求–>---------------服务器端
客户端------------<–发tree connect回应-----------------服务器端
(4)、断开连接
当共享使用完毕后,客户端向服务器发送tree disconnect 报文关闭共享,与服务器断开连接
客户端---------------发tree disconnect请求–>---------------服务器端
客户端------------<–发tree disconnect回应-----------------服务器端