使用树莓派和samba搭建个人NAS

使用树莓派和samba搭建个人NAS

二月 06, 2021

我们知道如果想要共享文件,在Linux对Linux的环境下,最简单的方法就是通过NIS了;而Windows对Windows,最简单的方法则是“网上邻居”。那如果局域网中既有Windows也有Linux而且想要共享文件系统的话,那该怎么办?

那就使用SAMBA服务器好了。

SAMBA可以让Linux加入Windows的网上邻居支持,让不同的平台可以共享文件系统,非常好用。而且它的配置极其简单。

环境简介

使用树莓派的系统如下所示,基于的是Debian的64位的操作系统:

系统信息

提示: 由于树莓派每次接入局域网时,路由器给分配的IP不固定,所以建议提前在路由器的管理页面进行树莓派的硬件MAC与IP地址的绑定。这样每次树莓派连接到路由器都会给分配一个固定的IP.

安装Samba和配套软件

1
sudo apt install samba samba-common-bin

期间会有此选项选择是即可

配置Samba并指定共享的目录

samba的配置文件路径为:/etc/samba/smb.conf,可以使用nanovim编辑器编辑此文件:

1
sudo nano /etc/samba/smb.conf

在最后添加自己的配置:

1
2
3
4
5
6
[Shared]
path = /media/pi #要共享文件夹的路径
valid users = pi #允许的用户
browseable = yes #浏览及写入的权限
writable = yes
read only = no

如果要共享的文件夹很多的话,也可以添加多个自己的配置。

如果要共享的是外置硬盘,位置是/media/pi

编辑完成之后,我们可以对写入的信息进行测试,防止出错:

1
testparm

如果没有提示错误信息,就表示写入的格式正确。

测试写入的是否正确

为samba分配可访问的用户并启动此服务

设置加入共享的用户pi并设置密码(此密码用于samba登陆,可以与pi用户原本的密码不一致)

1
sudo smbpasswd -a pi

给samba分配可访问的用户pi

到此samba的配置工作可以说完成啦。

接下来我们启动samba服务:

1
sudo systemctl start smbd

查看samba服务状态:

1
systemctl status smbd

如果显示绿色running表示服务已经正常启动并运行啦:

查看samba状态

Linux用户访问文件服务

以KDE桌面环境为例,可以直接在地址栏输入以下格式的地址就可以看到我们设置的共享文件夹或磁盘啦:

1
smb:/你的树莓派IP地址

Linux用户登陆

我们还可以将这个共享的地址固定到侧边栏,方便日后直接访问。可以在侧边栏的 远程 选项右键->添加位置 ,配置好后即可快速访问。

Windows用户访问

Windows用户可以直接在 此电脑 右键,选择 映射网络驱动器 填写好格式后即可访问。这里注意必须填写正确的格式及共享文件夹的名称。

Windows添加后下次打开此电脑会发现共享的文件夹已经固定在了下面。

Windows用户

防踩坑指南

第一次配置时我们会发现,明明配置好了,打开网络都能看到我们的这个文件夹了,但为什么就是看不到我插入的硬盘或U盘呢?其实,如果你的树莓派当初选择的是带桌面启动的模式,此服务必须在进入桌面后才可以生效。使用VNC登陆进树莓派即可。如果是家用则完全可以设置树莓派是开机自动以pi用户自动登录,实现此服务插电即用。

其次,如果树莓派的设定是登陆时使用pi用户以控制台登陆而非图形界面登陆,则u盘等外置硬盘不会自动挂载,这时尝试连接你的特定路径时可能会发生下面的情况:

找不到

因为这个时候U盘还没有挂载,所以没法找到路径。解决方法就是自行设置控制台下的自动挂载外置U盘或者设定树莓派以桌面方式登陆,或者切换到桌面模式:sudo systemctl isolate graphical.target

防踩坑指南(二)

如果你的树莓派开启了防火墙功能的话,同样可能出现无法访问等情况,这时候就需要对smbd服务进行放行端口的操作。smbd服务的端口一般为139,使用TCP协议,可以使用如下命令进行放行:

sudo firewall-cmd --zone=public --add-port=139/tcp --permanent

sudo firewall-cmd --reload

防火墙