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

_ 作者选择了 免费和开源基金作为 写给捐款计划的一部分接受捐款。

介绍

[WebDAV] (http://www.webdav.org/)是HTTP协议的扩展,允许用户管理远程服务器上的文件. 使用WebDAV服务器有许多方法,例如,您可以通过上传到您的WebDAV服务器来与同事共享Word或Excel文档. 您也可以通过简单地给家人和朋友一个URL来分享您的音乐收藏. 所有这一切都可以实现,没有他们安装任何额外的软件,因为一切都被建在他们的操作系统中.

在本文中,您将配置 Apache 网页服务器以允许 WebDAV 从 Windows、Mac 和 Linux 访问 SSL 和密码身份验证。

前提条件

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

WebDAV 需要很少的服务器资源,所以任何大小的虚拟机都足以让 WebDAV 服务器运行。

登录您的服务器作为 sudo 启用,非 root 用户开始第一步。

步骤 1 — 启用 WebDAV Apache 模块

Apache Web 服务器提供许多功能,作为可选模块。您可以启用和禁用这些模块,从 Apache 添加和删除其功能。其 WebDAV 功能包含在您与 Apache 一起安装的模块中,但默认情况下不启用。您可以使用 a2enmod实用程序启用 WebDAV 模块。下列两个命令将启用 WebDAV 模块:

1sudo a2enmod dav
2sudo a2enmod dav_fs

现在,重新启动Apache来加载新模块:

1sudo systemctl restart apache2.service

WebDAV 模块现在已加载并运行,在下一步,您将配置 Apache 以通过 WebDAV 服务您的文件。

第2步:配置Apache

在此步骤中,您将创建 Apache 实现 WebDAV 服务器所需的所有配置。

首先,创建在/var/www/webdav的 WebDAV 根文件夹,该文件将包含您希望通过 WebDAV 提供的文件:

1sudo mkdir /var/www/webdav

然后,将Apache的用户www-data设置为WebDAV目录的所有者:

1sudo chown www-data:www-data /var/www/webdav

接下来,您需要为 Apache 使用的数据库文件创建一个位置,以管理和锁定 WebDAV 用户访问的文件。

/usr/local/apache/var/ 的数据库文件中使用 mkdir 工具创建一个新的目录:

1sudo mkdir -p /usr/local/apache/var/

-p选项告诉mkdir实用程序在您指定的路径中创建所有目录,如果它们不存在。

接下来,将新目录的所有者和组设置为Apache的用户和组,使用chown实用程序:

1sudo chown www-data:www-data /usr/local/apache/var

现在,你需要编辑的 VirtualHost文件,其中包含了关于您的域名的Apache配置. 此文件位于 /etc/apache2/sites-enabled/和结束在 le-ssl.conf 如果您使用Certbot注册SSL证书。

使用文本编辑器打开 VirtualHost 文件:

1sudo nano /etc/apache2/sites-enabled/your_domain-le-ssl.conf

在第一行中,添加DavLockDB指令:

1[label /etc/apache2/sites-enabled/your_domain-le-ssl.conf]
2DavLockDB /usr/local/apache/var/DavLock
3. . .

接下来,在VirtualHost标签中添加以下AliasDirectory指令,遵循所有其他指令:

1[label /etc/apache2/sites-enabled/your_domain-le-ssl.conf]
2. . .
3Alias /webdav /var/www/webdav
4
5<Directory /var/www/webdav>
6    DAV On
7</Directory>

Alias指令地图请求到 http://your.server/webdav/var/www/webdav 文件夹。

該指令(https://httpd.apache.org/docs/current/mod/core.html# directory)告訴 Apache 啟用 WebDAV for the /var/www/webdav 文件夹. 您可以從 Apache 文件夹中了解更多關於 mod_dav

您的最终 VirtualHost 文件将如下,其中包括正确位置的DavLockDB,Alias目录指令:

 1[label /etc/apache2/sites-enabled/your_domain-le-ssl.conf]
 2DavLockDB /usr/local/apache/var/DavLock
 3<IfModule mod_ssl.c>
 4<VirtualHost *:443>
 5        ServerAdmin admin@your_domain
 6        ServerName your_domain
 7        ServerAlias your_domain
 8        DocumentRoot /var/www/your_domain
 9        ErrorLog ${APACHE_LOG_DIR}/error.log
10        CustomLog ${APACHE_LOG_DIR}/access.log combined
11
12        SSLCertificateFile /etc/letsencrypt/live/your_domain/fullchain.pem
13        SSLCertificateKeyFile /etc/letsencrypt/live/your_domain/privkey.pem
14        Include /etc/letsencrypt/options-ssl-apache.conf
15
16        Alias /webdav /var/www/webdav
17
18        <Directory /var/www/webdav>
19            DAV On
20        </Directory>
21
22</VirtualHost>
23</IfModule>

如果您在编辑 Apache 配置时出现任何语法错误,它将拒绝启动,因此在重新启动 Apache 之前,最好检查您的 Apache 配置。

使用apachectl实用程序来检查配置:

1sudo apachectl configtest

如果您的配置没有错误,apachectl 将打印Syntax OK。当您收到此信息时,您可以安全地重新启动 Apache 来加载新配置:

1sudo systemctl restart apache2.service

您现在已将 Apache 配置为 WebDAV 服务器,以便从 /var/www/webdav 服务文件. 但是,您尚未配置或启用身份验证,因此任何可以访问您的服务器的人都可以阅读、写入和编辑您的文件。

步骤 3 — 将身份验证添加到 WebDAV

您将使用的身份验证方法叫做 digest authentication

Digest 身份验证与存储允许访问 WebDAV 服务器的用户名和密码的文件一起工作. 与DavLockDB一样, digest 文件需要存储在 Apache 可以阅读和写入的位置,并且无法从您的网站中提供服务。

既然您已经为此而创建了 /usr/local/apache/var/,那么您也会将 digest 文件放在那里。

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

1sudo touch /usr/local/apache/var/users.password

然后将所有者和组更改为www-data,以便Apache可以阅读和写入它:

1sudo chown www-data:www-data /usr/local/apache/var/users.password

使用htdigest实用程序将新用户添加到 WebDAV. 以下命令会添加用户 sammy :

1sudo htdigest /usr/local/apache/var/users.password webdav sammy

这个命令中的webdavrealm,应该被认为是您正在添加新用户的组,也是用户在访问 WebDAV 服务器时输入用户名和密码时显示的文本。

htdigest将提示您输入密码并在运行时确认它:

1[secondary_label Output]
2Adding user sammy in realm webdav
3New password:
4Re-type new password:

接下来,你会告诉Apache对WebDAV访问需要身份验证,并使用users.password文件。

打开您的 VirtualHost 文件:

1sudo nano /etc/apache2/sites-enabled/your_domain-le-ssl.conf

然后,在目录指令块中添加以下行:

1[label /etc/apache2/sites-enabled/your_domain-le-ssl.conf]
2AuthType Digest
3AuthName "webdav"
4AuthUserFile /usr/local/apache/var/users.password
5Require valid-user

这些指令如下:

  • AuthType Digest: 使用 digest 身份验证方法. * AuthName "webdav": 仅允许来自 webdav 领域的用户. * AuthUserFile /usr/local/apache/var/users.password: 使用 /usr/local/apache/var/users.password 中包含的用户名和密码. * Requires valid-user: 允许在 users.password 文件中列出的任何用户获取正确密码。

您的Directory指令将如下:

1[label /etc/apache2/sites-enabled/your_domain-le-ssl.conf]
2<Directory /var/www/webdav>
3  DAV On
4  AuthType Digest
5  AuthName "webdav"
6  AuthUserFile /usr/local/apache/var/users.password
7  Require valid-user
8</Directory>

接下来,启用auth_digest Apache 模块,以便 Apache 知道如何使用 digest 身份验证方法:

1sudo a2enmod auth_digest

最后,重新启动 Apache 以加载所有新配置:

1sudo systemctl restart apache2.service

您现在已经配置了 WebDAV 服务器以使用 HTTPS 和扫描身份验证. 它已经准备好开始向用户提供文件。 在下一节中,您将从 Windows、Linux 或 macOS 访问 WebDAV 服务器。

第4步:访问WebDAV

在此步骤中,您将使用 macOS、Windows 和 Linux (KDE 和 GNOME) 的原始文件浏览器访问 WebDAV 服务器。

在您开始访问 WebDAV 服务器之前,您应该将文件放入 WebDAV 文件夹中,以便您有文件进行测试。

使用文本编辑器打开新文件:

1sudo nano /var/www/webdav/webdav-testfile.txt

现在,将这个文件的所有者和组设置为www-data:

1sudo chown www-data:www-data /var/www/webdav/webdav-testfile.txt

您现在已经准备好开始访问和测试您的 WebDAV 服务器。

名称:Linux KDE

首先,打开 KDE Dolphin 文件管理器,然后用以下形式的 URL 编辑地址栏:

1webdavs://your_domain/webdav

image showing WebDAV link in the Dolphin address bar

当您点击进入时,您将被要求输入用户名和密码。

image showing the username and password dialog box

如果您希望 Dolphin 保留您的密码,请检查 记住密码 选项,然后点击** OK** 继续,现在它将向您展示 /var/www/webdav/ 目录的内容,您可以操纵它们,就像它们在您的本地系统上一样。

通过抓住地址栏中的文件夹图标并将其拖到左侧导航面板的远程**部分。

Image showing the WebDAV server in the Dolphin Remote locations

名称: Linux GNOME

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

Image showing Finder icon

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

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

Image showing the Files application

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

Image showing the username and password dialog

输入您的用户名和密码,然后单击 连接 登录您的 WebDAV 服务器. 检查** 永远记住** 选项,如果您不希望每次访问文件时输入您的密码。

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

Image showing the WebDAV server in the Files application

macOS

首先,打开Finder应用程序,然后单击Go菜单,然后单击连接到服务器

Image showing the Go menu in the Finder application

现在你会看到一个新的对话框,在那里你输入 WebDAV 服务器的 URL。

1https://your_domain/webdav

Image showing the URL entry dialog box

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

Image showing the username and password dialog

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

您现在可以在 Finder 中找到您的 WebDAV 服务器,在 ** 位置** 部分。

Image showing the WebDAV share in Finder

窗口

首先,从开始菜单中打开文件浏览器应用程序。当打开时,从左侧导航面板中选择此PC

Image showing This PC in the navigation panel

接下来,点击上面的导航栏中的 Map 网络驱动器 图标。

Image showing the Map network drive icon in top navigation panel

输入您的 WebDAV 服务器的 URL 以如下形式的 URL:

1https://your_domain/webdav

Image showing the URL entry dialog

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

Image showing username and password entry dialog

输入您的用户名和密码,然后点击OK来登录您的服务器. 检查记住我的身份证选项,如果您不希望每次访问文件时输入您的密码。

您的 WebDAV 现在将出现在 File Explorer 左侧导航面板的 This PC 部分中的位置。

Image showing the WebDAV share in File Explorer

结论

您现在已经设置并配置了安全的 WebDAV 服务器,以便为您的用户服务您的文件. 无论您的用户在本地系统上的操作系统是什么,他们将能够访问和管理您的 WebDAV 服务器中的文件。

Published At
Categories with 技术
comments powered by Disqus