本文环境: 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
保存重启后, 在设置的挂载目录下就可以看到硬盘的内容了