一个计算机技术爱好者与学习者

0%

废弃笔记本电脑复活:第二篇 安装配置Samba和WebDav

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
2
3
mkdir -p /data/samba/video
find /data/samba -type d -exec chgrp sambashare {} \;
find /data/samba -type d -exec chmod 770 {} \;

其中,sambashare用户组是在安装Samba过程中自动创建的。

3、创建samba用户并授权

1
2
useradd -m -s /usr/sbin/nologin -G sambashare samba
smbpasswd -a samba

Samba权限控制使用Linux用户和组的权限系统,但具有自己的身份验证机制,与标准Linux身份验证分开。

4、配置共享目录和用户
编辑samba配置文件

1
vim /etc/samba/smb.conf

在文件最后添加:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[video]
path = /data/samba/video
browseable = yes
read only = no
force create mode = 0660
force directory mode = 2770
valid users = @sambashare @sadmin

#[doc]
# path = /data/samba/doc
# browseable = no
# read only = yes
# force create mode = 0660
# force directory mode = 2770
# valid users = samba @sambashare

配置说明:

  • [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
2
systemctl restart nmbd
systemctl status 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
2
3
4
smb: \> ls
smb: \> put test.txt test.txt
smb: \> get test.txt test2.txt
smb: \> exit

下载文件时,还可以使用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
2
apt update
apt install apache2

2、启用Apache的WebDAV模块

1
a2enmod dav dav_fs

3、重启Apache

1
systemctl restart apache2

5.2. 配置WebDAV服务端

1、创建WebDAV共享目录,并授权

1
2
mkdir -p /data/samba
find /data/samba -type d -exec chmod 777 {} \;

这里复用Samba共享目录,同时修改权限为777,否则 www-data 用户无权读写。

2、配置WebDAV服务

1
vim /etc/apache2/sites-available/000-default.conf

VirtualHost标签中,添加如下内容:

1
2
3
4
5
6
7
8
Alias /webdav /data/samba
<Location /webdav>
DAV On
AuthType Basic
AuthName "WebDAV"
AuthUserFile /etc/apache2/webdav.password
Require valid-user
</Location>

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
2
3
apt install cadaver

cadaver http://192.168.5.233/webdav

连接时,会提示输入用户名和密码。

连接成功后,会看到 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: 移动或重命名文件 sourcedestination
  • copy source destination: 复制文件 sourcedestination