在树莓派上搭 SMB 服务器 - Setting up SMB server on Raspberry PI
背景
什么是 SMB ?
SMB(全称是Server Message Block)是一个网络协议名,它能被用于Web连接和客户端与服务器之间的信息沟通。SMB最初是IBM的贝瑞·费根鲍姆(Barry Feigenbaum)研制的,其目的是将DOS操作系统中的本地文件接口“中断13”改造为网络文件系统。
随着网络通信技术和网络资源共享机制的不断发展,针对网络间支持数据共享的协议和机制等技术的研究受到了研究人员的广泛关注。其中,网络文件共享传输过程的安全性研究更是成为该领域的热点问题。其中,SMB(ServerMessageBlock)协议作为一种局域网文件共享传输协议,常被用来作为共享文件安全传输研究的平台。但是,SMB 协议中采用控制文件安全传输的机制是使用客户身份验证的方式,该方式通过客户端向服务器端发送验证密码来获取文件传输的权限,不过针对该机制的网络攻击相对严重,攻击程序通过对验证密码的截获来窃取文件的访问权限,局域网下文件传输的安全性得不到保障。
什么是 SAMBA ?
在早期的网络世界中,文件数据在不同主机之间的传输大多是使用 FTP ,但是使用 FTP 服务传输档案使得我们无法直接修改主机上面的档案数据。NFS 服务可以实现在客户端的机器上直接使用服务器上面的文件,但是 NFS 主要在 unix 系列操作系统上使用。 windows 上面也有类似的文件系统,那就是 cifs(Common Internet File system,通用internet文件系统),cifs 的最简单的用途就是“网上邻居”,但是cifs只能让windows机器沟通。所以,为了实现 windows 和 unix 系列系统之间能够相互沟通,就产生了 samba 服务。
samba 是架构在 NetBIOS(Network Basic Input/Output System,网上基本输入输出系统)这个通信协议上面所开发出来的。 NetBIOS 是由 IBM 发展出来,目的是要让局域网络内少数计算机进行网络连接的一个通信协议,因此 NetBIOS 是无法跨越路由的,而现在 Samba 不仅能与局域网主机分享资源,还能与全世界的电脑分享资源,就是由 NetBIOS over TCP/IP 技术解决。由于 NetBIOS 在局域网内实在是很好用,所以微软的网络架构就使用了这个协议。而 samba 最早发展的时候,其实是想要让 linux 系统可以加入 windows 的系统当中来共享使用彼此的文件数据,所以 samba 就架构在 NetBIOS 发展出来了。
Samba 服务功能
- 进行文件共享;
- 可以提供使用者登入 samba 主机时的身份认证,以提供不同身份的个别资料;
- 可以进行 windows 网络上的主机名称解析(NetBIOS name);
搭建过程
首先我们需要一个预装好系统的 Raspberry Pi 4B (树莓派),关于树莓派装机请看我的另一篇文章 - 树莓派官方系统安装。
1、安装 Samba 服务
1
| sudo apt-get install samba
|
2、配置 Samba 服务
1
| sudo nano /etc/samba/smb.conf
|
3、编辑 smb.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 在文档末尾加入: [nas] # 共享文件夹说明 comment = nas # 共享文件夹目录 path = /home/pi/nas/ # 可被其他人看到资源名称(非内容) browseable = yes # 可写 writable = yes # 新建文件的权限为 777 create mask = 0777 # 新建目录的权限为 775 directory mask = 0777 # guest访问,无需密码 public = no
|
4、创建 Samba 账号
1 2 3
| sudo smbpasswd -a pi 密码:raspberry 重启samba服务:sudo systemctl restart smbd
|
5、自动挂载硬盘
获取硬盘标识号
1
| sudo lsblk -o UUID,NAME,FSTYPE,SIZE,MOUNTPOINT,LABEL,MODEL
|
1 2 3
| sudo nano /etc/fstab 在文档的末尾,添加硬盘UUID和挂载目录: UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx /home/pi/nas/ ntfs defaults,auto,users,rw,nofail 0 0
|
至此搭建 Samba 服务器完成,重启树莓派,即可在自己的路由器网络的台式机或笔记本中,添加网络存储 SMB ,海量数据即可存储。