作为Write for DOnations计划的一部分,作者选择了免费和开源基金来接受捐赠。
介绍
WebDAV是 HTTP 协议的扩展,允许用户管理远程服务器上的文件。有多种使用 WebDAV 服务器的方法,例如,您可以通过将 Word 或 Excel 文档上传到您的 WebDAV 服务器与同事共享它们。您还可以通过简单地给他们一个 URL 与您的家人和朋友分享您的音乐收藏。所有这一切都可以在他们不安装任何额外软件的情况下实现,因为一切都内置在他们的操作系统中。
在本文中,您将配置一个 Apache Web 服务器,以通过 SSL 和密码身份验证从 Windows、Mac 和 Linux 启用 WebDAV 访问。
先决条件
在开始本指南之前,您需要具备以下条件:
- 一个 Ubuntu 20.04 服务器。按照Ubuntu 20.04的初始服务器设置创建一个启用 sudo 的非 root 用户。
- 解析为您服务器的公共 IP 地址的域名。该域名和DNS介绍如何设置此。
- 配置为为您的域提供服务的 Apache Web 服务器,您可以完成如何在 Ubuntu 20.04 上安装 Apache Web 服务器教程来进行设置——确保按照步骤5——设置虚拟主机作为此先决条件的一部分。
- 您的域名的 SSL 证书。请按照如何在 Ubuntu 20.04 上使用 Let’s Encrypt 来保护 Apache指南以获取有关如何执行此操作的说明。
WebDAV 需要很少的服务器资源,因此任何大小的虚拟机都足以让您的 WebDAV 服务器启动并运行。
以启用 sudo 的非 root 用户身份登录到您的服务器以开始第一步。
步骤 1 — 启用 WebDAV Apache 模块
Apache Web 服务器提供了许多作为可选模块的功能。您可以启用和禁用这些模块以从 Apache 添加和删除它们的功能。它的 WebDAV 功能包含在您与 Apache 一起安装的模块中,但默认情况下未启用。
您可以使用a2enmod实用程序为 Apache 启用 WebDAV 模块。以下两个命令将启用 WebDAV 模块:
- sudo a2enmod dav
- sudo a2enmod dav_fs
现在,重新启动 Apache 以加载新模块:
- sudo systemctl restart apache2.service
WebDAV 模块现在已加载并运行。在下一步中,您将配置 Apache 以通过 WebDAV 为您的文件提供服务。
第 2 步 – 配置 Apache
在此步骤中,您将创建 Apache 实现 WebDAV 服务器所需的所有配置。
首先,创建 WebDAV 根文件夹,/var/www/webdav
该文件夹将保存您要通过 WebDAV 提供的文件:
- sudo mkdir /var/www/webdav
然后,将 Apache 的用户 设置www-data
为 WebDAV 目录的所有者:
- sudo chown www-data:www-data /var/www/webdav
接下来,您需要为 Apache 用来管理和锁定 WebDAV 用户正在访问的文件的数据库文件创建一个位置。该文件需要 Apache 可读和可写,但不能从网站上获取,因为这可能会泄露敏感信息。
使用mkdir
数据库文件的实用程序在以下位置创建一个新目录/usr/local/apache/var/
:
- sudo mkdir -p /usr/local/apache/var/
该-p
选项告诉mkdir
实用程序在您指定的路径中创建所有目录(如果它们不存在)。
接下来,使用该chown
实用程序将新目录的所有者和组设置为 Apache 的用户和组:
- sudo chown www-data:www-data /usr/local/apache/var
现在,您需要编辑包含有关域名的 Apache 配置的VirtualHost文件。如果您使用 Certbot 注册 SSL 证书/etc/apache2/sites-enabled/
,le-ssl.conf
则此文件位于并结束于。
使用文本编辑器打开 VirtualHost 文件:
- sudo nano /etc/apache2/sites-enabled/your_domain-le-ssl.conf
在第一行,添加DavLockDB
指令:
DavLockDB /usr/local/apache/var/DavLock
. . .
接下来,在所有其他指令之后的标签中添加以下Alias
和指令:Directory
<VirtualHost>
. . .
Alias /webdav /var/www/webdav
<Directory /var/www/webdav>
DAV On
</Directory>
该Alias
指令将请求映射http://your.server/webdav
到/var/www/webdav
文件夹。
该Directory
指令告诉 Apache 为该/var/www/webdav
文件夹启用 WebDAV 。您可以mod_dav
从 Apache 文档中找到更多信息。
您最终的虚拟主机文件将作如下安排,其中包括DavLockDB
,Alias
,和Directory
在正确的位置指令:
DavLockDB /usr/local/apache/var/DavLock
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerAdmin admin@your_domain
ServerName your_domain
ServerAlias your_domain
DocumentRoot /var/www/your_domain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
SSLCertificateFile /etc/letsencrypt/live/your_domain/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/your_domain/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
Alias /webdav /var/www/webdav
<Directory /var/www/webdav>
DAV On
</Directory>
</VirtualHost>
</IfModule>
如果您在编辑 Apache 的配置时出现任何语法错误,它将拒绝启动。在重新启动 Apache 之前检查您的 Apache 配置是一个很好的做法。
使用该apachectl
实用程序检查配置:
- sudo apachectl configtest
如果您的配置没有错误,apachectl
将打印Syntax OK
. 收到此消息后,可以安全地重新启动 Apache 以加载新配置:
- sudo systemctl restart apache2.service
您现在已经将 Apache 配置为 WebDAV 服务器来提供来自/var/www/webdav
. 但是,您尚未配置或启用身份验证,因此可以访问您的服务器的任何人都可以读取、写入和编辑您的文件。在下一部分中,您将启用和配置 WebDAV 身份验证。
第 3 步 – 向 WebDAV 添加身份验证
您将使用的身份验证方法称为摘要身份验证。摘要式身份验证是更安全的 WebDAV 身份验证方法,尤其是与 HTTPS 结合使用时。
摘要式身份验证使用一个文件,该文件存储允许访问 WebDAV 服务器的用户的用户名和密码。就像DavLockDB
摘要文件需要存储在 Apache 可以读取和写入且无法从您的网站提供服务的位置一样。
由于您已经/usr/local/apache/var/
为此目的创建了摘要文件,因此您也将在那里放置摘要文件。
首先,使用该实用程序创建一个名为users.password
at的空文件:/usr/local/apache/var/
touch
- sudo touch /usr/local/apache/var/users.password
然后将所有者和组更改为,www-data
以便 Apache 可以对其进行读写:
- sudo chown www-data:www-data /usr/local/apache/var/users.password
使用该htdigest
实用程序将新用户添加到 WebDAV 。以下命令添加用户sammy:
- sudo htdigest /usr/local/apache/var/users.password webdav sammy
在webdav
此命令是境界,应该被认为是该组要添加新用户的。它也是用户在访问您的 WebDAV 服务器时输入用户名和密码时向用户显示的文本。您可以选择最能描述您的用例的领域。
htdigest
运行时会提示你输入密码并确认:
OutputAdding user sammy in realm webdav
New password:
Re-type new password:
接下来,您将告诉 Apache 要求对 WebDAV 访问进行身份验证并使用该users.password
文件。
打开您的 VirtualHost 文件:
- sudo nano /etc/apache2/sites-enabled/your_domain-le-ssl.conf
然后,在Directory
指令块中添加以下几行:
AuthType Digest
AuthName "webdav"
AuthUserFile /usr/local/apache/var/users.password
Require valid-user
这些指令执行以下操作:
AuthType Digest
:使用摘要认证方法。AuthName "webdav"
: 只允许来自webdav
领域的用户。AuthUserFile /usr/local/apache/var/users.password
:使用包含在/usr/local/apache/var/users.password
.Require valid-user
:允许访问users.password
文件中列出的提供正确密码的任何用户。
您的<Directory>
指令如下:
<Directory /var/www/webdav>
DAV On
AuthType Digest
AuthName "webdav"
AuthUserFile /usr/local/apache/var/users.password
Require valid-user
</Directory>
接下来,启用auth_digest
Apache 模块,以便 Apache 知道如何使用摘要式身份验证方法:
- sudo a2enmod auth_digest
最后,重新启动 Apache 以加载所有新配置:
- sudo systemctl restart apache2.service
您现在已将 WebDAV 服务器配置为使用 HTTPS 和摘要式身份验证。它已准备好开始向您的用户提供文件。在下一部分中,您将从 Windows、Linux 或 macOS 访问 WebDAV 服务器。
第 4 步 – 访问 WebDAV
在此步骤中,您将使用 macOS、Windows 和 Linux(KDE 和 GNOME)的本机文件浏览器访问 WebDAV 服务器。
在开始访问您的 WebDAV 服务器之前,您应该将一个文件放入 WebDAV 文件夹中,这样您就有了一个要测试的文件。
使用文本编辑器打开一个新文件:
- sudo nano /var/www/webdav/webdav-testfile.txt
添加一些文本,然后保存并退出。现在,将此文件的所有者和组设置为www-data
:
- sudo chown www-data:www-data /var/www/webdav/webdav-testfile.txt
您现在已准备好开始访问和测试您的 WebDAV 服务器。
Linux KDE
首先,打开KDE Dolphin文件管理器。然后使用具有以下形式的 URL 编辑地址栏:
webdavs://your_domain/webdav
当您按ENTER 时,系统会提示您输入用户名和密码。
如果您希望 Dolphin 保留您的密码,请选中记住密码选项。然后单击确定继续。它现在将向您显示/var/www/webdav/
目录的内容,您可以像在本地系统上一样操作这些内容。
通过抓取地址栏中的文件夹图标并将其拖到左侧导航面板中的远程部分下,为您的 WebDAV 服务器添加书签。
Linux GNOME
首先,通过单击桌面右侧的图标打开文件应用程序。
当文件打开时,请执行以下操作:
- 单击+ 其他位置。
- 使用以下格式输入 WebDAV 实例的 URL:
davs://your_domain/webdav
然后,点击连接。然后它会提示你一个用户名和密码对话框。
输入您的用户名和密码,然后单击“连接”以登录您的 WebDAV 服务器。如果您不想每次访问文件时都输入密码,请选中“永远记住”选项。
您的 WebDAV 文件夹现在将在文件中可用,您可以在其中管理您的文件:
苹果系统
首先,打开Finder应用程序。接下来,单击Go菜单,然后单击Connect to server。
您现在将找到一个新对话框,您可以在其中输入 WebDAV 服务器的 URL。此 URL 必须具有以下形式:
https://your_domain/webdav
单击“连接”按钮继续。它会提示您输入用户名和密码。
单击“连接”以完成将您的 WebDAV 服务器添加到您的系统。
您现在可以在Finder的Locations部分下找到您的 WebDAV 服务器。
视窗
首先,从开始菜单,打开文件资源管理器应用程序。当它打开时,从左侧导航面板中选择这台电脑。
接下来,单击顶部导航栏中的Map network drive图标。
使用以下形式的 URL 输入 WebDAV 服务器的 URL:
https://your_domain/webdav
单击完成以连接到您的 WebDAV 服务器。它会提示您输入用户名和密码。
输入您的用户名和密码,然后单击确定登录到您的服务器。如果您不想每次访问文件时都输入密码,请选中记住我的凭据选项。
您的 WebDAV 现在将显示为文件资源管理器左侧导航面板的此 PC部分下的位置。
结论
您现在已经设置并配置了一个安全的 WebDAV 服务器来为您的用户提供您的文件。无论您的用户在其本地系统上使用什么操作系统,他们都可以访问和管理您的 WebDAV 服务器中的文件。