前言:

寒假在家学习Linux近一个月了,最近参加了嘉立创组织的泰山派训练营,从中了解到了现在Linux开发中很方便的一些开发方式和工具。例如:使用MobaXterm终端通过SSH登陆ubuntu服务器进行开发;安装一个FileZilla工具通过正规的SFTP方式来传输安装文件到虚机里,把虚拟机当做一个独立主机来对待去操作;通过VMware自带的VMware Tools将文件复制粘贴进虚拟机;或者使用Samba把虚拟机ubuntu中的文件目录映射到windows盘符下,这样你就可以和访问windows盘符目录一样去访问ubuntu系统里面的内容......本文主要介绍了Samba是什么,有什么作用,工作流程以及如何搭建

samba简介

Samba是一个能让Linux系统应用Microsoft网络通讯协议的软件,而SMB是Server Message Block的缩写,即为服务器消息块,SMB主要是作为Microsoft的网络通讯协议,后来Samba将SMB通信协议应用到了Linux系统上,就形成了现在的Samba软件。后来微软又把 SMB 改名为 CIFS(Common Internet File System),即公共 Internet 文件系统,并且加入了许多新的功能,这样一来,使得Samba具有了更强大的功能。

Samba最大的功能就是可以用于Linux与windows系统直接的文件共享和打印共享,Samba既可以用于windows与Linux之间的文件共享,也可以用于Linux与Linux之间的资源共享,由于NFS(网络文件系统)可以很好的完成Linux与Linux之间的数据共享,因而 Samba较多的用在了Linux与windows之间的数据共享上面。

使用samba和windows共享文件时候,请确保windows的NetBIOS(就是网上邻居功能)开启了。

注:

SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。


SMB协议是C/S型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。

 

Samba 组成

Samba 由以下几个主要组成部分组成:

1. SMB协议:Samba 的核心是实现了 SMB(Server Message Block)协议,这是一种用于在局域网中共享文件、打印机和其他资源的网络协议。


2. SMB客户端:Samba 包含了用于访问远程 SMB/CIFS 资源的客户端工具,允许 Linux/Unix 系统与 Windows 系统进行文件共享和打印机共享。


3. SMB服务器:Samba 服务器允许像 Windows 一样共享文件和打印机,并提供了一种名为 smb.conf 的配置文件来配置共享资源、身份验证和访问控制等选项。


4. CIFS:Samba 也包含了对 CIFS(Common Internet File System)的支持,这是 SMB 协议在 Internet 上的一个扩展版本。


5. 工具和库:Samba 还提供了一些辅助工具和库,用于管理和配置 Samba 服务器,以及与 SMB 协议进行交互。


这些组成部分共同构成了 Samba 的基本功能,使其成为一个功能强大且灵活的文件共享解决方案。

Samba 服务器 :

Samba 服务器实际上包含了两个核心程序:smbd 和 nmbd。

smbd:作为 Samba 的核心,负责建立对话进程、验证用户身份,以及提供对文件系统和打印机的访问机制。只有启动了 smb 服务,文件共享功能才能实现。smbd 使用 TCP 445 端口。它是 Samba 服务器的主要工作进程,负责处理文件和打印机共享的请求。

nmbd:实现了“Network Browser”(网络浏览)功能,支持 NETBIOS(本地名称解析)。如果未启动该服务,客户端只能通过 IP 地址而非工作组名称来访问共享文件。nmbd 使用 UDP 137/138 和 TCP 139 端口。它负责处理局域网内计算机的名称解析和服务发现请求,使得 Windows 客户端能够在网络上发现和访问 Samba 服务器的共享资源。

此外,Samba 还包含了一些实用工具。例如,smbclient 是一个功能强大的 SMB 客户端工具,提供了类似于 shell 的用户界面,可用于访问和管理其他 SMB 服务器的资源,包括文件和打印机。

Samba 的作用

Samba 的作用非常广泛,主要包括以下几个方面:

1. 文件共享:Samba 允许不同操作系统的计算机之间共享文件和目录,特别是在混合网络环境中,比如让 Windows、Linux 和 macOS 系统之间能够无缝地共享文件。


2. 打印机共享:Samba 可以用于共享打印机,允许在网络上的各个计算机能够访问和使用共享的打印机资源。


3. 用户验证:Samba 可以作为域控制器,管理用户账号和权限,提供用户验证和授权服务,确保安全地访问共享资源。


4. 集成企业环境:Samba 可以与 Windows Active Directory 集成,使得 Linux 和其他非 Windows 系统能够无缝融入企业的 Windows 网络环境。


5. 网络浏览:Samba 还提供了网络浏览服务,通过 NETBIOS 和 WINS 解析功能,使得客户端能够在局域网内方便地发现和访问共享资源。


总的来说,Samba 的主要作用是实现不同操作系统之间的文件和打印机共享,以及提供用户验证和网络浏览功能,使得多样化的计算机系统能够在网络中协同工作。

 Samba工作流程

1、客户端请求访问Samba服务器上的共项目录

2、Samba服务器接收到请求后,会查询主配置文件smb.conf,看是否共享了share目录,如果共享了则查询客户端是否有权限访问。

3、Samba服务器会把本次访问信息记录写在日志中,日志文件的名称和路径都需要我们设置。

4、如果客户端满足访问权限的设置,则允许客户端进行访问。

samba服务思维导图_samba

 

Samba搭建

为什么要使用Samba

把虚拟机ubuntu中的文件目录映射到windows盘符下,这样你就可以和访问windows盘符目录一样去访问ubuntu系统里面的内容。

安装

sudo apt-get install samba

sudo apt-get install smbclient

安装完成后执行 

samba -V

配置

在Samba服务安装完毕之后,并不是直接可以使用Windows或Linux的客户端访问Samba服务器,我们还必须对服务器进行设置:告诉Samba服务器将那些目录共享出来给客户端进行访问。

sudo vi /etc/samba/smb.conf

写入配置

[EX_DISK_A]
   comment = share folder
   browseable = yes
   path = /home/wyw/tspi
   valid users = wyw, wyw
   write list = wyw, wyw
   inherit owner = yes
   browsable = yes
   admin users = wyw, wyw
   public = yes
   writable = yes
   create mask = 0755
   read only = No
   directory mode = 0755

注意:

  • wyw是我的用户名,你需要换成你自己的
  • 这个是我的目录/home/wyw/tspi同样也要换成你自己的
  • 如下:

samba服务思维导图_samba_02

设置用户远程访问密码(wyw是我的同样也养设置成你自己的)

sudo smbpasswd -a wucaicheng

重启:

sudo /etc/init.d/samba restart

或者

sudo service smbd restart

映射到win10(samba服务器客户端的配置)

我们可以使用两种不同的方法,在windows客户端和linux客户端之间进行登录samba服务器

在这里使用windows客户端访问Samba共享目录:

  • Windows按键(键盘最下面第二个按键)+R弹出对话框,输入\\加ip地址

samba服务思维导图_samba服务思维导图_03

  • 映射网络驱动器

samba服务思维导图_嘉立创_04

  • 映射到文件夹,我这选择Z盘

samba服务思维导图_linux_05

  • 输入你自己的账户和密码

samba服务思维导图_ubuntu_06

  • 网络文件夹中找到我们刚刚映射的文件,我映射到的是Z盘后面就可以当做一个盘符来使用非常方便

samba服务思维导图_嘉立创_07