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

2024-04-29 08:28

本文主要是介绍如何在 Ubuntu 14.04 上使用 Apache 配置 WebDAV 访问,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

简介

WebDAV 是 HTTP 协议的扩展,允许用户在服务器上管理文件。有许多使用 WebDAV 服务器的方式。例如,您可以通过将 Word 或 Excel 文档上传到您的 WebDAV 服务器,与同事共享文件。您甚至可以通过简单地给他们一个 URL,与家人和朋友分享您的音乐收藏。所有这些都可以在他们不安装任何东西的情况下实现。

有许多方法可以管理远程服务器上的文件。WebDAV 相对于其他解决方案(如 FTP 或 Samba)具有几个优点。在本文中,我们将介绍如何配置 Apache 服务器,以允许来自 Windows、Mac 和 Linux 的本机 WebDAV 访问,并进行身份验证。

为什么选择 WebDAV?

WebDAV 提供了几个优点:

  • 在所有主要操作系统(Windows、Mac、Linux)上具有本机集成;无需安装第三方软件即可使用 WebDAV。
  • 支持部分传输。
  • 身份验证选择更多。由于在 HTTP 上,因此 NTLM、Kerberos、LDAP 等都是可能的。

根据您的情况,WebDAV 可能是您需求的最佳解决方案。

为什么选择 Apache?

有许多支持 WebDAV 的 Linux 上的 Web 服务器。然而,Apache 在那里拥有最符合 WebDAV 协议的实现。在撰写本文时,Nginx 和 Lighttpd 上的 WebDAV 可以工作,但只能部分工作。

先决条件

您需要一个 Ubuntu 14.04 服务器。

在开始之前,让我们首先创建一个具有 sudo 访问权限的用户。您可以以 root 身份运行命令,但由于安全问题,这并不被鼓励。如果您希望了解更多信息,可以参考一篇关于在 Ubuntu 14.04 上添加用户的优秀文章。

创建用户

当您首次创建 Digital Ocean 实例时,您将获得允许您以 root 身份登录的凭据。作为 root,让我们首先添加一个名为 alex 的用户。

adduser alex

您将被提示为用户 alex 创建密码,如下所示。还将有关于用户 alex 的信息的进一步提示。如果您愿意,可以输入这些信息。

Adding user `alex' ...
Adding new group `alex' (1000) ...
Adding new user `alex' (1000) with group `alex' ...
Creating home directory `/home/alex' ...
Copying files from `/etc/skel' ...
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
Changing the user information for alex
Enter the new value, or press ENTER for the defaultFull Name []:Room Number []:Work Phone []:Home Phone []:Other []:
Is the information correct? [Y/n] y

授予用户 sudo 权限

创建新用户后,下一步是授予用户 alex sudo 权限。假设您仍然以 root 身份登录,通过输入以下命令将用户 alex 添加到 sudo 组。

usermod -aG sudo alex

属于 sudo 组的用户被授予 sudo 权限。现在您可以注销并以用户 alex 的身份登录。

步骤一 — 安装 Apache

让我们安装 Apache。

sudo apt-get update
sudo apt-get install apache2

Apache Web 服务器应该已经安装并运行。

步骤二 — 设置 WebDAV

设置 WebDAV 有三个步骤。我们需要指定一个位置,启用必要的模块,并进行配置。

准备目录

我们需要指定一个用于提供 WebDAV 服务的文件夹。我们将为此创建新目录 /var/www/webdav。您还需要将所有者更改为 www-data(您的 Apache 用户),以允许 Apache 对其进行写入。

sudo mkdir /var/www/webdav
sudo chown -R www-data:www-data /var/www/

启用模块

接下来,使用 a2enmod 启用 WebDAV 模块

sudo a2enmod dav
sudo a2enmod dav_fs

Apache 模块位于 /etc/apache2/mods-available。这将在 /etc/apache2/mods-available/etc/apache2/mods-enabled 之间创建符号链接。

配置

使用您喜欢的文本编辑器打开或创建位于 /etc/apache2/sites-available/000-default.conf 的配置文件。

nano /etc/apache2/sites-available/000-default.conf

在第一行添加 DavLockDB 指令配置:

DavLockDB /var/www/DavLock

并在 VirtualHost 部分内添加 AliasDirectory 指令:

Alias /webdav /var/www/webdav<Directory /var/www/webdav>DAV On
</Directory>

编辑后,文件应如下所示。

DavLockDB /var/www/DavLock
<VirtualHost *:80># ServerName 指令设置服务器用于标识自身的请求方案、主机名和端口。在创建重定向 URL 时使用。在虚拟主机的上下文中,ServerName 指定了请求的 Host: 标头中必须出现的主机名,以匹配此虚拟主机。对于默认虚拟主机(此文件),此值并不决定性,因为它作为最后的主机作为最后的主机使用。但是,对于任何进一步的虚拟主机,您必须显式设置它。#ServerName www.example.comServerAdmin webmaster@localhostDocumentRoot /var/www/html# 可用的日志级别:trace8、...、trace1、debug、info、notice、warn、error、crit、alert、emerg。# 还可以为特定模块配置日志级别,例如#LogLevel info ssl:warnErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combined# 对于 conf-available/ 中的大多数配置文件,可以配置为在全局级别启用或禁用,可以为特定虚拟主机包含一行。例如,以下行仅为此主机启用 CGI 配置,仅在使用 "a2disconf" 全局禁用后才能使用。#Include conf-available/serve-cgi-bin.confAlias /webdav /var/www/webdav<Directory /var/www/webdav>DAV On</Directory>
</VirtualHost>```markdown
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

DavLockDB 指令指定了 DAV 锁定数据库的名称。它应该是一个文件的路径。这个文件不需要被创建。该目录应该是 Apache 服务器可写的。

Alias 指令将请求映射到 http://your.server/webdav/var/www/webdav 文件夹。

Directory 指令告诉 Apache 为 /var/www/webdav 文件夹启用 WebDAV。您可以从 Apache 文档中了解更多关于 mod_dav 的信息。

如果您重新启动 Apache 服务器,您将拥有一个可以无需身份验证的工作 WebDAV 服务器。

像这样重新启动 Apache 服务器:

sudo service apache2 restart

测试

无需身份验证的 WebDAV 仅允许用户进行读取访问。为了测试,让我们创建一个样本文件。

echo "this is a sample text file" | sudo tee -a /var/www/webdav/sample.txt

应该在 /var/www/webdav 中创建一个名为 sample.txt 的文本文件。它应该包含文本 this is a sample text file

现在我们可以尝试从外部计算机登录。WebDAV 服务器应该在 http://<your.server.com>/webdav 找到。为了简洁起见,我们只展示如何在 Mac 上无需凭据登录。

在 Mac 上,打开 Finder。在菜单栏中,找到 前往 并选择 连接服务器 选项。

!WebDAV Mac 步骤 1

选择 以访客身份连接 选项。然后,点击 连接

!WebDAV Mac 步骤 2

您应该已登录。如果您连接到该共享文件系统并进入 webdav 文件夹,您应该能够看到之前创建的 sample.txt 文件。该文件应该是可下载的。

!WebDAV Mac 步骤 3

第三步 — 添加身份验证

没有身份验证的 WebDAV 服务器是不安全的。在本节中,我们将使用摘要身份验证方案为您的 WebDAV 服务器添加身份验证。

基本身份验证还是摘要身份验证?

有许多身份验证方案可用。此表说明了不同操作系统上各种身份验证方案的兼容性。请注意,如果您正在提供 HTTPS 服务,我们假设您的 SSL 证书是有效的(而不是自签名的)。

!WebDAV 兼容性

如果您使用 HTTP,请使用摘要身份验证,因为它将在所有操作系统上工作。如果您使用 HTTPS,您可以选择使用基本身份验证。

我们将介绍 摘要 身份验证方案,因为它在所有操作系统上都可以工作,而无需 SSL 证书。

摘要身份验证

让我们生成存储用户密码的文件(称为 users.password)。在摘要身份验证中,有一个称为 realm 的字段,它充当用户的命名空间。我们将使用 webdav 作为我们的 realm。我们的第一个用户将被称为 alex

为了生成摘要文件,我们必须安装依赖项。

sudo apt-get install apache2-utils

接下来我们将添加用户。让我们使用以下命令生成用户密码文件。

sudo htdigest -c /etc/apache2/users.password webdav alex

这将把用户 alex 添加到密码文件中。应该会有一个密码提示来为 alex 创建密码。

对于随后添加的用户,您应该删除 c 标志。以下是另一个示例,添加一个名为 chris 的用户。在提示时创建密码。

sudo htdigest /etc/apache2/users.password webdav chris

我们还需要允许 Apache 读取密码文件,因此我们更改所有者。

sudo chown www-data:www-data /etc/apache2/users.password

创建密码文件后,我们应该对 /etc/apache2/sites-available/000-default.conf 中的配置进行更改。

Directory 指令中添加以下行

AuthType Digest
AuthName "webdav"
AuthUserFile /etc/apache2/users.password
Require valid-user

最终版本应该如下所示(删除了注释)。

DavLockDB /var/www/DavLock<VirtualHost *:80>ServerAdmin webmaster@localhostDocumentRoot /var/www/htmlErrorLog ${APACHE_LOG_DIR}/error.logCustomLog ${APACHE_LOG_DIR}/access.log combinedAlias /webdav /var/www/webdav<Directory /var/www/webdav>DAV OnAuthType DigestAuthName "webdav"AuthUserFile /etc/apache2/users.passwordRequire valid-user</Directory>
</VirtualHost>

mod_authn 模块包含了身份验证指令的定义。

AuthType 指令告诉 Apache 对于 /var/www/webdav 目录,应该使用 Digest 方案进行身份验证。

Digest 身份验证需要一个 realm 的值,我们将其设置为 webdavRealm 充当命名空间。当您有相同名称的用户时,您可以使用不同的 realm 值来将它们分开。我们使用 AuthName 指令来设置 realm 的值。

AuthUserFile 指令用于指示密码文件的位置。

Require 指令说明只有经过身份验证的有效用户才能访问该目录。

最后,启用 Digest 模块并重新启动服务器以使设置生效。

sudo a2enmod auth_digest
sudo service apache2 restart

第四步 - 访问文件

我们将演示如何从 Mac、Windows 和 Linux(Ubuntu)的本机文件浏览器访问您的 WebDAV 服务器。为了简洁起见,我们将仅演示在 Mac 上的文件和文件夹操作,尽管您可以从所有操作系统上的服务器上添加、编辑和删除文件。

您还可以使用 Web 浏览器通过互联网访问文件。

如果您之前进行过测试,可能需要弹出驱动器并重新连接以添加身份验证。

Mac

在 Mac 上,打开 Finder。在菜单栏中,找到 前往 并选择 连接服务器 选项。

!WebDAV Mac 步骤 1

输入服务器地址。应该是 http://<your.server>/webdav。按下 连接

!WebDAV Mac 步骤 2

系统会提示您输入用户名和密码。输入我们在服务器上创建的用户之一,然后按下 连接

!WebDAV Mac 步骤 3

连接后,目录应该会出现在 Finder 中。

!WebDAV Mac 步骤 4

您可以复制和保存文件到 webdav 目录,并创建子目录。以下是服务器上目录的初始状态:

!WebDAV Mac 步骤 5

您可以像在 Finder 中一样添加或重命名文件,并创建新目录。以下是最终结果。

!WebDAV Mac 步骤 6

Windows

在 Windows 上,打开 文件资源管理器。在左侧边栏中,您应该会找到 网络 图标。

!WebDAV Windows 步骤 1

右键单击 网络 图标。它应该显示上下文菜单,其中包含 映射网络驱动器 选项。点击它。

!WebDAV Windows 步骤 2

在文件夹字段中输入服务器地址。应该是 http://<your.server>/webdav。如果您的登录信息不同,请选择 使用不同的凭据连接。按下 完成

!WebDAV Windows 步骤 3

系统会提示您输入用户名和密码。输入后按下 确定

!WebDAV Windows 步骤 4

连接后,它应该会出现在您的 文件资源管理器 左侧边栏中作为网络驱动器。

!WebDAV Windows 步骤 5

Linux(Ubuntu)

我们使用 Ubuntu 14.04 作为我们的 Linux 桌面操作系统。在 Ubuntu 上,打开 文件。左侧边栏上有一个 连接到服务器 选项。点击它。

!WebDAV Linux 步骤 1

输入服务器地址。应该是 dav://<your.server>/webdav。按下 连接

!WebDAV Linux 步骤 2

系统会提示您输入用户名和密码。输入后按下 连接

!WebDAV Linux 步骤 3

连接后,目录应该会出现在 网络 列表下。

!WebDAV Linux 步骤 4

结论

在本文中,我们已经介绍了如何在 Ubuntu 14.04 上使用 Apache 设置 WebDAV 服务器。我们还讨论了如何配置摘要身份验证以保护服务器。最后,我们向您展示了如何使用它们的本机文件浏览器从三个主要操作系统连接到 WebDAV 服务器。

这篇关于如何在 Ubuntu 14.04 上使用 Apache 配置 WebDAV 访问的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/945583

相关文章

Java学习手册之Filter和Listener使用方法

《Java学习手册之Filter和Listener使用方法》:本文主要介绍Java学习手册之Filter和Listener使用方法的相关资料,Filter是一种拦截器,可以在请求到达Servl... 目录一、Filter(过滤器)1. Filter 的工作原理2. Filter 的配置与使用二、Listen

Pandas使用AdaBoost进行分类的实现

《Pandas使用AdaBoost进行分类的实现》Pandas和AdaBoost分类算法,可以高效地进行数据预处理和分类任务,本文主要介绍了Pandas使用AdaBoost进行分类的实现,具有一定的参... 目录什么是 AdaBoost?使用 AdaBoost 的步骤安装必要的库步骤一:数据准备步骤二:模型

使用Pandas进行均值填充的实现

《使用Pandas进行均值填充的实现》缺失数据(NaN值)是一个常见的问题,我们可以通过多种方法来处理缺失数据,其中一种常用的方法是均值填充,本文主要介绍了使用Pandas进行均值填充的实现,感兴趣的... 目录什么是均值填充?为什么选择均值填充?均值填充的步骤实际代码示例总结在数据分析和处理过程中,缺失数

如何使用 Python 读取 Excel 数据

《如何使用Python读取Excel数据》:本文主要介绍使用Python读取Excel数据的详细教程,通过pandas和openpyxl,你可以轻松读取Excel文件,并进行各种数据处理操... 目录使用 python 读取 Excel 数据的详细教程1. 安装必要的依赖2. 读取 Excel 文件3. 读

SpringBoot基于配置实现短信服务策略的动态切换

《SpringBoot基于配置实现短信服务策略的动态切换》这篇文章主要为大家详细介绍了SpringBoot在接入多个短信服务商(如阿里云、腾讯云、华为云)后,如何根据配置或环境切换使用不同的服务商,需... 目录目标功能示例配置(application.yml)配置类绑定短信发送策略接口示例:阿里云 & 腾

解决Maven项目idea找不到本地仓库jar包问题以及使用mvn install:install-file

《解决Maven项目idea找不到本地仓库jar包问题以及使用mvninstall:install-file》:本文主要介绍解决Maven项目idea找不到本地仓库jar包问题以及使用mvnin... 目录Maven项目idea找不到本地仓库jar包以及使用mvn install:install-file基

如何为Yarn配置国内源的详细教程

《如何为Yarn配置国内源的详细教程》在使用Yarn进行项目开发时,由于网络原因,直接使用官方源可能会导致下载速度慢或连接失败,配置国内源可以显著提高包的下载速度和稳定性,本文将详细介绍如何为Yarn... 目录一、查询当前使用的镜像源二、设置国内源1. 设置为淘宝镜像源2. 设置为其他国内源三、还原为官方

Python使用getopt处理命令行参数示例解析(最佳实践)

《Python使用getopt处理命令行参数示例解析(最佳实践)》getopt模块是Python标准库中一个简单但强大的命令行参数处理工具,它特别适合那些需要快速实现基本命令行参数解析的场景,或者需要... 目录为什么需要处理命令行参数?getopt模块基础实际应用示例与其他参数处理方式的比较常见问http

C 语言中enum枚举的定义和使用小结

《C语言中enum枚举的定义和使用小结》在C语言里,enum(枚举)是一种用户自定义的数据类型,它能够让你创建一组具名的整数常量,下面我会从定义、使用、特性等方面详细介绍enum,感兴趣的朋友一起看... 目录1、引言2、基本定义3、定义枚举变量4、自定义枚举常量的值5、枚举与switch语句结合使用6、枚

使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)

《使用Python从PPT文档中提取图片和图片信息(如坐标、宽度和高度等)》PPT是一种高效的信息展示工具,广泛应用于教育、商务和设计等多个领域,PPT文档中常常包含丰富的图片内容,这些图片不仅提升了... 目录一、引言二、环境与工具三、python 提取PPT背景图片3.1 提取幻灯片背景图片3.2 提取