1. 前言
NAS(Network Attached Storage,网络附属存储)本质上就是专用的存储硬件+软件。
最常用的NAS软件,是NAS系统。而如果我们只是想让通用设备作为NAS,那么常用软件是Samba和WebDAV。
本篇中,我们学习安装配置Samba和WebDAV,让笔记本设备成为一台NAS。
2. Samba简介
SMB(Server Message Block)协议是一种网络通信协议,最初由IBM开发,后来被微软用于Windows操作系统中的文件和打印服务共享。
Samba 是一个开源软件,它实现了SMB协议,允许Windows和Unix/Linux系统相互通信,提供了在不同操作系统之间共享文件和打印服务的功能。
3. 安装配置Samba
3.1. 安装Samba
1、安装Samba
1 | apt install samba |
2、查看Samba服务状态
1 | systemctl status nmbd |
3.2. 配置Samba
1、创建共享目录,并给sambashare用户组设置所有目录的读写权限
1 | mkdir -p /data/samba/video |
其中,sambashare用户组是在安装Samba过程中自动创建的。
3、创建samba用户并授权
1 | useradd -m -s /usr/sbin/nologin -G sambashare samba |
Samba权限控制使用Linux用户和组的权限系统,但具有自己的身份验证机制,与标准Linux身份验证分开。
4、配置共享目录和用户
编辑samba配置文件
1 | vim /etc/samba/smb.conf |
在文件最后添加:
1 | [video] |
配置说明:
[video]
和[doc]
表示登录时使用的共享名称。path
表示共享的目录。browseable
表示可浏览,是否可在共享列表中列出此共享。如果设置为no,其他用户将看不到共享目录。read only
表示valid users列表中指定的用户是否设置仅允许读,如果值yes,则仅允许读。force create mode
表示此共享创建文件时设置的文件权限模式。force directory mode
表示此共享创建目录时设置目录权限的模式。valid users
表示允许访问共享的用户和组的列表。群组以@
符号为前缀。
更多配置选项,请参考文档 smb.conf — The configuration file for the Samba suite
5、重启samba
1 | systemctl restart nmbd |
3.3. 测试使用Samba
1、安装 samba client
1 | apt install smbclient |
2、创建测试文件
1 | touch test.txt |
3、连接samba server
1 | smbclient //192.168.5.233/users -U samba |
4、上传下载文件
1 | smb: \> ls |
下载文件时,还可以使用smbget工具
1 | smbget -U samba smb://192.168.5.233/video/test.txt -o test3.txt |
3.4. 配置防火墙
1 | ufw allow 'Samba' |
4. WebDAV简介
WebDAV(Web-based Distributed Authoring and Versioning)是一种基于HTTP协议的通信协议,用于使用户可以方便地对服务器上的文档进行远程编辑和管理。WebDAV扩展了HTTP/1.1协议,增加了一系列的方法,以支持文件的创建、移动、复制和删除等操作。
使用WebDAV需要两个基本组件:WebDAV客户端和服务器。WebDAV客户端可以是任何支持该协议标准的软件,如一些文件管理器、专门的WebDAV应用程序或甚至是某些操作系统内置的文件浏览功能。服务器端则需要运行支持WebDAV的服务器软件,如Apache的mod_dav模块。
设置WebDAV环境时,通常需要在服务器上进行配置,以确保正确的文件权限、认证和安全设置。出于安全考虑,WebDAV通信应该通过SSL/TLS加密来保护数据传输过程中的安全性(使用HTTPS协议而不是HTTP)。
相较于Samba,WebDAV的权限检查更严格,比如目录中存在权限为问号的文件,那么整个目录都无法访问。
5. 安装配置WebDAV
5.1. 安装WebDAV服务端
1、安装Apache HTTP服务器
1 | apt update |
2、启用Apache的WebDAV模块
1 | a2enmod dav dav_fs |
3、重启Apache
1 | systemctl restart apache2 |
5.2. 配置WebDAV服务端
1、创建WebDAV共享目录,并授权
1 | mkdir -p /data/samba |
这里复用Samba共享目录,同时修改权限为777,否则 www-data 用户无权读写。
2、配置WebDAV服务
1 | vim /etc/apache2/sites-available/000-default.conf |
VirtualHost标签中,添加如下内容:
1 | Alias /webdav /data/samba |
3、创建用户名和密码
1 | htpasswd -bc /etc/apache2/webdav.password user1 password1 |
增加用户名和密码:
1 | htpasswd -b /etc/apache2/webdav.password user2 password2 |
4、重启Apache
1 | systemctl restart apache2 |
5.3. 测试使用WebDAV
5.3.1. 浏览器访问
假设主机IP为 192.168.5.233
浏览器访问 http://192.168.5.233/webdav
访问时,会提示输入用户名和密码,证明我们的webdav配置正常。
登录后,会提示 Forbidden You don’t have permission to access this resource.
这是正常的,因为缺少 index.html 这种文件。
假设有一个文件路径为:/data/samba/test.png
那么通过浏览器可以直接访问:http://192.168.5.233/webdav/test.png
5.3.2. cadver客户端访问
1 | apt install cadaver |
连接时,会提示输入用户名和密码。
连接成功后,会看到 cadaver
命令行提示符,此时可以使用以下命令:
ls
: 列出当前目录中的文件和目录。cd directory
: 更改到名为directory
的目录。pwd
: 显示当前目录的完整路径。get filename
: 下载文件filename
到本地当前目录。put filename
: 上传本地文件filename
到当前的WebDAV目录。mget *.ext
: 下载当前目录中所有扩展名为.ext
的文件。mput *.ext
: 上传当前本地目录中所有扩展名为.ext
的文件。delete filename
: 删除文件filename
。mkcol directory
: 创建一个名为directory
的新目录。move source destination
: 移动或重命名文件source
为destination
。copy source destination
: 复制文件source
到destination
。