Posts 基于ubuntu和samba, 利用树莓派4b实现局域网轻NAS
Post
Cancel

基于ubuntu和samba, 利用树莓派4b实现局域网轻NAS

本文环境: Ubuntu Server 20.04 for Raspberry Pi

一、 前言

以前一直想过要搞一个NAS, 无奈设备有限, 计划一直被搁浅. 现在手头有个树莓派, 虽然没有对性能有很高期望, 但是拿来玩玩还是可以的

昨天搞定了内网穿透, 今天想着: “要不要搞NAS呢”, 于是就有了这篇实战文章, 只实现基础的配置还是十分简单的

二、 正篇

1. samba简介

今天用到的软件名称叫做samba, 用来实现Windows和Linux的文件共享, 让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协定做连结, 更多内容请见百度百科-samba

我的samba版本为4.11.6-Ubuntu

2. 部署samba

安装samba

1
$ sudo apt-get install samba

修改配置文件(记得备份)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[global]
workgroup = WORKGROUP       
#所要加入的工作组或者域
netbios name = Manjaro      
#用于在 Windows 网上邻居上显示的主机名
security = user             
#定义安全级别
map to guest = bad user     
#将所有samba系统主机所不能正确识别的用户都映射成guest用户
dns proxy = no              
#是否开启dns代理服务
 
[misfit]                    
#共享显示的目录名
path = /home/misfit/code    
#实际共享路径
browsable = yes             
#共享的目录是否让所有人可见
writable = yes              
#是否可写
guest ok = yes              
#是否允许匿名(guest)访问,等同于public
create mask = 0777          
#客户端上传文件的默认权限
directory mask = 0777       
#客户端创建目录的默认权限
#注意共享文件在系统本地的权限不能低于以上设置的共享权限。

这是我从CSDN一篇博客上复制来的配置, 经过测试十分靠谱, 只需按照注释提示自定义一些变量即可

  • 如果对于权限系统不熟悉, 推荐不要更改文件中权限相关的变量
  • 可以使用testparm检查文件语法

配置权限相关

1
2
3
4
5
6
7
8
9
10
11
12
##将系统用户加入到samba用户,并设置密码,这里我们按两次回车,设置成无密码
smbpasswd -a  misfit  #这里misfit是上面设置的 #共享显示的目录名,也就是自己系统用户名
 
##查看所有Samba用户
pdbedit -L     
 
##查看对应IP上的samba服务器
smbclient -L //IP   #例如查看本机 smbclient -L 127.0.0.1
 
##将 path 中目录的权限设置为777
chmod 777 /home/misfit/code -R
chmod 777 /home/misfit/                 #这个不给权限会拒绝访问

因为原文非常详细了, 这个配置方法同样是直接复制来的, 下面补充一下:

  • 如果对安全性有要求, 设置密码也是可以的, 区别是在访问时需要使用账号密码登录
  • 如果smbclient找不到命令, 可以直接安装sudo apt-get install smbclient, 但smbclient这条指令不是必需的
  • 共享文件夹的路径上的777权限是必需的, 不推荐和上文的配置文件一样, 放在home或者root的文件夹后, 这样常常会引发有关权限的一些问题, 比如我放在根目录后/share, 这样管理权限是十分方便的

启动服务

在启动前请关闭防火墙

我在使用service smb start启动samba服务的时候, 没找到smb.service, 最后改成smbd成功地启动了

1
$ systemctl start smbd

下面是其他的管理指令

1
2
3
4
$ systemctl restart smbd
$ systemctl stop smbd
$ systemctl status smbd #对于debug很好用, 程序出现异常的时候可以使用status查看错误报告
$ systemctl enable smbd #设置开机自启

3. 在Windows上挂载共享目录

资源管理器中的网络标签右击 => 映射网络驱动器 => 填入ip和路径(例如: \\192.168.31.122\raspberry) => 完成

如果出现找不到文件夹的情况, 进行网络诊断, 大多数应该是ip正确、而文件夹错误的情况

快速纠错:

  • 检查共享文件夹路径的777权限是否到位
  • 检查路径是否写错—-这里是一个容易混淆的地方: 这里的路径不是树莓派上真实的路径, 而是配置文件中共享显示的目录名

三、 番外

挂载硬盘

由于做NAS的话, 基本都是外接硬盘的, 所以在这里讲一下怎么使用USB接口挂载硬盘:

供电问题

要挂载硬盘, 第一个想到的就是供电问题—-这里的树莓派4b平常使用5v3a的供电, 现在加一块硬盘估计是不够了

于是我拿出了华为22.5W(5V 4.5A)的充电器, 没有发现亏电的现象

寻找硬盘

在windows中, 寻找硬盘和挂载的过程是自动完成的, 但在这里需要手动进行管理

我们使用命令ls -l /dev/disk/by-uuid/查看硬盘的UUID

  • 以mmcblk开头的是TF卡分区
  • 有sda字样的是外置NTFS盘

找到并记录需要挂载硬盘的UUID

配置文件

务必认真配置, 配置错误会导致无法开机

需要修改的文件是/etc/fstab, 在最后一行添加以下内容

1
UUID=刚刚记录的UUID 要挂载到的目录 ntfs defaults 0 0

比如

1
UUID=A2F2B4DDF2B4B6BF /home/ubuntu/data ntfs defaults 0 0

保存重启后, 在设置的挂载目录下就可以看到硬盘的内容了

四、 相关链接

This post is licensed under CC BY 4.0 by the author.

基于frp内网穿透, 在树莓派部署外网可访问的Web服务器

基于frp, 实现ssh控制内网设备