如何在Ubuntu18.04上使用Apache配置WebDAV访问

来自菜鸟教程
跳转至:导航、​搜索

作为 Write for DOnations 计划的一部分,作者选择了 Free and Open Source Fund 来接受捐赠。

介绍

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

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

先决条件

在开始本指南之前,您将需要以下内容:

  • 一个 Ubuntu 18.04 服务器。 按照 Initial Server Setup with Ubuntu 18.04 创建启用 sudo 的非 root 用户。
  • 解析为服务器公共 IP 地址的域名。 域和 DNS 解释了如何设置它。
  • 一个 Apache 网络服务器。 按照 如何在 Ubuntu 18.04 上设置 Apache 虚拟主机指南了解如何使用您的域名配置 Apache。
  • 您的域名的 SSL 证书。 请按照 如何在 Ubuntu 18.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 服务器所需的所有配置。

首先,在 /var/www/webdav 中创建 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
. . .

接下来,在所有其他指令之后的 <VirtualHost> 标签内添加以下 AliasDirectory 指令:

/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。 您可以从 Apache 文档中找到有关 mod_dav 的更多信息。

您的最终 VirtualHost 文件将如下所示,其中包括正确位置的 DavLockDBAliasDirectory 指令:

/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/public_html
        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/,因此您也将把摘要文件放在那里。

首先,使用 touch 实用程序在 /usr/local/apache/var/ 创建一个名为 users.password 的空文件:

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

此命令中的 webdavrealm 并且应该被认为是您要添加新用户的组。 它也是在用户访问您的 WebDAV 服务器时输入用户名和密码时向用户显示的文本。 您可以选择最能描述您的用例的任何领域。

当您运行 htdigest 命令时,它会提示您输入密码并确认:

OutputAdding user sammy in realm webdav
New password:
Re-type new password:

接下来,您将告诉 Apache 要求对 WebDAV 访问进行身份验证并使用 users.password 文件。

打开您的虚拟主机文件:

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_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 保留您的密码,请选中 Remember password 选项。 然后点击OK继续。 它现在将向您显示 /var/www/webdav/ 目录的内容,您可以像在本地系统上一样对其进行操作。

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

Linux GNOME

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

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

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

然后,单击 连接 。 然后它将提示您使用用户名和密码对话框。

输入您的用户名和密码,然后单击 Connect 以登录到您的 WebDAV 服务器。 如果您不想在每次访问文件时都输入密码,请选中 Remember forever 选项。

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

苹果系统

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

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

https://your_domain/webdav

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

单击 Connect 以完成将 WebDAV 服务器添加到系统中。

现在,您将在 Locations 部分下的 Finder 中找到您的 WebDAV 服务器。

视窗

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

接下来,单击顶部导航栏中的映射网络驱动器图标。

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

https://your_domain/webdav

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

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

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

结论

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