如何在 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

相关文章

vue使用docxtemplater导出word

《vue使用docxtemplater导出word》docxtemplater是一种邮件合并工具,以编程方式使用并处理条件、循环,并且可以扩展以插入任何内容,下面我们来看看如何使用docxtempl... 目录docxtemplatervue使用docxtemplater导出word安装常用语法 封装导出方

Linux换行符的使用方法详解

《Linux换行符的使用方法详解》本文介绍了Linux中常用的换行符LF及其在文件中的表示,展示了如何使用sed命令替换换行符,并列举了与换行符处理相关的Linux命令,通过代码讲解的非常详细,需要的... 目录简介检测文件中的换行符使用 cat -A 查看换行符使用 od -c 检查字符换行符格式转换将

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Elasticsearch 在 Java 中的使用教程

《Elasticsearch在Java中的使用教程》Elasticsearch是一个分布式搜索和分析引擎,基于ApacheLucene构建,能够实现实时数据的存储、搜索、和分析,它广泛应用于全文... 目录1. Elasticsearch 简介2. 环境准备2.1 安装 Elasticsearch2.2 J

使用C#代码在PDF文档中添加、删除和替换图片

《使用C#代码在PDF文档中添加、删除和替换图片》在当今数字化文档处理场景中,动态操作PDF文档中的图像已成为企业级应用开发的核心需求之一,本文将介绍如何在.NET平台使用C#代码在PDF文档中添加、... 目录引言用C#添加图片到PDF文档用C#删除PDF文档中的图片用C#替换PDF文档中的图片引言在当

Java中List的contains()方法的使用小结

《Java中List的contains()方法的使用小结》List的contains()方法用于检查列表中是否包含指定的元素,借助equals()方法进行判断,下面就来介绍Java中List的c... 目录详细展开1. 方法签名2. 工作原理3. 使用示例4. 注意事项总结结论:List 的 contain

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Android中Dialog的使用详解

《Android中Dialog的使用详解》Dialog(对话框)是Android中常用的UI组件,用于临时显示重要信息或获取用户输入,本文给大家介绍Android中Dialog的使用,感兴趣的朋友一起... 目录android中Dialog的使用详解1. 基本Dialog类型1.1 AlertDialog(

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意