Samba

Samba 文件服务器


简介

在早期的网络世界当中,不同主机的文件传输大多使用 FTP 来进行。不过 FTP 却有个小小的问题,那就是你无法直接修改主机上面的文件内容!也就是说,你想要更改 Linux 主机上面的某个文件时,你必须要将该文件下载后才能修改。在日常办公环境中,操作系统除了 windows 以外,还有 linux 或者 UNIX。windows 和 linux 或 UNIX 之间共享文件是无法直接完成的,为了解析不同系统之间的文件和打印机等资源的共享,我们今天来介绍一下 samba 服务。他可以解决不同系统平台之间的共享问题。

Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件,由服务器及客户端程序构成,也是一个C/S软件。

SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB 协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他设备。

SAMBA 与 NetBIOS

samba 是构建在 NetBIOS 这个协议之上的,而 NetBIOS 最早是从 IBM 诞生的,目的是让局域网内的计算机能够进行网络连接,由于不是针对于大型网络,所以 NetBIOS 是无法跨路由的。而 windows 操作系统也支持这个协议,所以在 Linux 主机上使用 SAMBA 部署的共享服务是可以使用 windows 主机访问的。那么 SAMBA 是不是就不能跨路由提供服务了呢?并不是,我们可以通过一个叫 NetBIOS over TCP/IP 的技术实现跨路由的 SAMBA 服务,但是目前 SAMBA 还是在局域网用的较多。

SAMBA的相关守护进程

  • nmbd:使用UDP的137、138来提供名称解析服务(NetBIOS)
  • smbd:管理共享和数据传输,使用的端为TCP的139、445

安装部署

sudo apt install samba

如果是客户端想要连接 SAMBA 服务器,需要安装 samba-client 包。

samba 的主要配置文件位于 /etc/samba/smb.conf 中。

创建一个文件夹用来共享:

mkdir -p /home/dbtu/samba_shared

创建 samba 用户(使用已有用户 dbtu,如果没有可以使用 useradd 创建用户):

dbtu@dbtu:~$ sudo smbpasswd -a dbtu
New SMB password:
Retype new SMB password:
Added user dbtu.

下面我使用的配置:

[159]
   comment = Samba file share test
   valid users = dbtu
   browseable = yes
   hosts allow = 192.168.1.0/255.255.255.0
   read only = no
   path = /home/dbtu/samba_shared
   guest ok = no
   create mask = 0755

重启服务生效:

sudo systemctl restart smbd.service nmbd.service

客户端

如果用户希望访问 samba 共享,Windows 用户可以在运行中输入 \\192.168.1.159\159 访问 samba 共享,也可以通过网络映射的方式将共享挂载到本地。

Linux 或者 Unix 用户则可以使用 sambaclient 或者通过 CIFS 协议将共享挂载到本地。

参考资料