如何在 Ubuntu 20.04 上使用 Apache 配置 WebDAV 访问

作为Write for DOnations计划的一部分,作者选择了免费和开源基金来接受捐赠

介绍

WebDAV是 HTTP 协议的扩展,允许用户管理远程服务器上的文件。有多种使用 WebDAV 服务器的方法,例如,您可以通过将 Word 或 Excel 文档上传到您的 WebDAV 服务器与同事共享它们。您还可以通过简单地给他们一个 URL 与您的家人和朋友分享您的音乐收藏。所有这一切都可以在他们不安装任何额外软件的情况下实现,因为一切都内置在他们的操作系统中。

在本文中,您将配置一个 Apache Web 服务器,以通过 SSL 和密码身份验证从 Windows、Mac 和 Linux 启用 WebDAV 访问。

先决条件

在开始本指南之前,您需要具备以下条件:

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指令:

/etc/apache2/sites-enabled/your_domain-le-ssl.conf
DavLockDB /usr/local/apache/var/DavLock
. . .

接下来,在所有其他指令之后标签中添加以下Alias指令:Directory<VirtualHost>

/etc/apache2/sites-enabled/your_domain-le-ssl.conf
. . .
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 文档中找到更多信息

您最终的虚拟主机文件将作如下安排,其中包括DavLockDBAlias,和Directory在正确的位置指令:

/etc/apache2/sites-enabled/your_domain-le-ssl.conf
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.passwordat的空文件/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 运行时会提示你输入密码并确认:

Output
Adding 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指令块中添加以下几行

/etc/apache2/sites-enabled/your_domain-le-ssl.conf
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>指令如下:

/etc/apache2/sites-enabled/your_domain-le-ssl.conf
<Directory /var/www/webdav>
  DAV On
  AuthType Digest
  AuthName "webdav"
  AuthUserFile /usr/local/apache/var/users.password
  Require valid-user
</Directory>

接下来,启用auth_digestApache 模块,以便 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

在 Dolphin 地址栏中显示 WebDAV 链接的图像

当您按ENTER 时,系统会提示您输入用户名和密码。

显示用户名和密码对话框的图像

如果您希望 Dolphin 保留您的密码选中记住密码选项。然后单击确定继续。它现在将向您显示/var/www/webdav/目录的内容,您可以像在本地系统上一样操作这些内容

通过抓取地址栏中的文件夹图标并将其拖到左侧导航面板中远程部分下,为您的 WebDAV 服务器添加书签

显示 Dolphin Remote 位置中的 WebDAV 服务器的图像

Linux GNOME

首先,通过单击桌面右侧的图标打开文件应用程序。

显示 Finder 图标的图像

文件打开时,请执行以下操作:

  1. 单击+ 其他位置
  2. 使用以下格式输入 WebDAV 实例的 URL:
davs://your_domain/webdav

显示文件应用程序的图像

然后,点击连接然后它会提示你一个用户名和密码对话框。

显示用户名和密码对话框的图像

输入您的用户名和密码,然后单击“连接”以登录您的 WebDAV 服务器。如果您不想每次访问文件时都输入密码选中“永远记住”选项。

您的 WebDAV 文件夹现在将在文件可用,您可以其中管理您的文件:

显示“文件”应用程序中的 WebDAV 服务器的图像

苹果系统

首先,打开Finder应用程序。接下来,单击Go菜单,然后单击Connect to server

显示 Finder 应用程序中的 Go 菜单的图像

您现在将找到一个新对话框,您可以在其中输入 WebDAV 服务器的 URL。此 URL 必须具有以下形式:

https://your_domain/webdav

显示 URL 输入对话框的图像

单击“连接”按钮继续。它会提示您输入用户名和密码。

显示用户名和密码对话框的图像

单击“连接”以完成将您的 WebDAV 服务器添加到您的系统。

您现在可以在FinderLocations部分找到您的 WebDAV 服务器

显示 Finder 中 WebDAV 共享的图像

视窗

首先,从开始菜单,打开文件资源管理器应用程序。当它打开时,从左侧导航面板中选择这台电脑

在导航面板中显示此 PC 的图像

接下来,单击顶部导航栏中Map network drive图标。

在顶部导航面板中显示地图网络驱动器图标的图像

使用以下形式的 URL 输入 WebDAV 服务器的 URL:

https://your_domain/webdav

显示 URL 输入对话框的图像

单击完成以连接到您的 WebDAV 服务器。它会提示您输入用户名和密码。

显示用户名和密码输入对话框的图像

输入您的用户名和密码,然后单击确定登录到您的服务器。如果您不想每次访问文件时都输入密码选中记住我的凭据选项。

您的 WebDAV 现在将显示为文件资源管理器左侧导航面板此 PC部分下的位置

显示文件资源管理器中的 WebDAV 共享的图像

结论

您现在已经设置并配置了一个安全的 WebDAV 服务器来为您的用户提供您的文件。无论您的用户在其本地系统上使用什么操作系统,他们都可以访问和管理您的 WebDAV 服务器中的文件。

觉得文章有用?

点个广告表达一下你的爱意吧 !😁