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

介绍

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

在远程服务器上管理文件有很多方法。 WebDAV 对其他解决方案有几个优点,例如 FTPSamba。 在本文中,我们将讨论如何配置您的 Apache 服务器以允许来自 Windows、Mac 和 Linux 的本地 WebDAV 访问。

为什么要使用 WebDAV?

WebDAV 提供了几个优点:

  • 在所有主要操作系统(Windows,Mac,Linux)的原生集成;无需安装第三方软件来使用WebDAV。 * 支持部分转移。 * 更多选择的身份验证。 使用HTTP意味着 NTLM, Kerberos(protocol)), LDAP,等等都是可能的。

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

为什么要使用Apache?

有很多在Linux上支持WebDAV的Web服务器。然而,Apache有一个最合适的WebDAV协议的实现,在写作时,WebDAV在 NginxLighttpd工作,但只有部分。

前提条件

你需要一个 Ubuntu 14.04 服务器。

在我们开始之前,让我们先创建一个具有 sudo 访问的用户。 您可以运行命令作为** root** ,但由于安全问题而不建议。 有一个很好的文章关于 在Ubuntu 14.04上添加用户如果您想了解更多信息。

创建一个用户

当您首次创建一个数字海洋实例时,您将获得身份证,允许您登录为 root . 作为** root** ,让我们先添加一个名为** alex** 的用户。

1adduser alex

您将被要求为用户创建一个密码 alex 如下所示。

 1Adding user `alex' ...
 2Adding new group `alex' (1000) ...
 3Adding new user `alex' (1000) with group `alex' ...
 4Creating home directory `/home/alex' ...
 5Copying files from `/etc/skel' ...
 6Enter new UNIX password:
 7Retype new UNIX password:
 8passwd: password updated successfully
 9Changing the user information for alex
10Enter the new value, or press ENTER for the default
11        Full Name []:
12        Room Number []:
13        Work Phone []:
14        Home Phone []:
15        Other []:
16Is the information correct? [Y/n] y

向用户授予 sudo 特权

创建新用户后,下一步是向用户授予 alex sudo 特权.假设您仍然登录为** root** ,请通过键入下面的命令将用户** alex** 添加到** sudo** 组中。

1usermod -aG sudo alex

sudo 组中的用户获得了** sudo** 特权,现在您可以作为用户** alex** 退出并登录。

第一步:安装Apache

讓我們得到 Apache安裝。

1sudo apt-get update
2sudo apt-get install apache2

Apache Web 服务器必须安装并运行。

步骤二:设置 WebDAV

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

准备地址

我们需要指定一个文件夹来服务WebDAV. 我们将为此创建一个新的目录 /var/www/webdav. 您还需要将所有者更改为 www-data(您的Apache用户),以便让Apache写入它。

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

允许模块

接下来,我们使用(http://man.he.net/man8/a2enmod)启用 WebDAV 模块。

1sudo a2enmod dav
2sudo a2enmod dav_fs

Apache 模块位于/etc/apache2/mods-available下方,创建了从/etc/apache2/mods-available/etc/apache2/mods-enabled的象征链接。

配置

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

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

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

1DavLockDB /var/www/DavLock

以及 VirtualHost 部分中的 Alias 和** Directory** 指令:

1Alias /webdav /var/www/webdav
2
3<Directory /var/www/webdav>
4    DAV On
5</Directory>

文件在编辑后应该是这样的。

 1DavLockDB /var/www/DavLock
 2<VirtualHost *:80>
 3        # The ServerName directive sets the request scheme, hostname and port that
 4        # the server uses to identify itself. This is used when creating
 5        # redirection URLs. In the context of virtual hosts, the ServerName
 6        # specifies what hostname must appear in the request's Host: header to
 7        # match this virtual host. For the default virtual host (this file) this
 8        # value is not decisive as it is used as a last resort host regardless.
 9        # However, you must set it for any further virtual host explicitly.
10        #ServerName www.example.com
11
12        ServerAdmin webmaster@localhost
13        DocumentRoot /var/www/html
14
15        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
16        # error, crit, alert, emerg.
17        # It is also possible to configure the loglevel for particular
18        # modules, e.g.
19        #LogLevel info ssl:warn
20
21        ErrorLog ${APACHE_LOG_DIR}/error.log
22        CustomLog ${APACHE_LOG_DIR}/access.log combined
23
24        # For most configuration files from conf-available/, which are
25        # enabled or disabled at a global level, it is possible to
26        # include a line for only one particular virtual host. For example the
27        # following line enables the CGI configuration for this host only
28        # after it has been globally disabled with "a2disconf".
29        #Include conf-available/serve-cgi-bin.conf
30
31        Alias /webdav /var/www/webdav
32
33        <Directory /var/www/webdav>
34            DAV On
35        </Directory>
36</VirtualHost>
37
38# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

DavLockDB指令指定了DAV Lock数据库的名称。 它应该是一个通往文件的路径。 该文件不需要创建。 该目录应该由Apache服务器编写。

该指令地图(https://httpd.apache.org/docs/2.4/mod/mod_alias.html)请求到 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

如果您重新启动 Apache 服务器,您将有一个没有身份验证的 WebDAV 服务器。

重启 Apache 服务器如下:

1sudo service apache2 restart

测试

没有身份验证的 WebDAV 仅允许用户阅读访问. 为了测试,让我们创建一个样本文件。

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

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

现在我们可以尝试从外部计算机登录. WebDAV 服务器应该在 http://<your.server.com>/webdav

在 Mac 上,打开 Finder . 在菜单栏中,找到** Go** ,然后选择连接到服务器选项。

WebDAV Mac Step 1

选择作为客人连接选项,然后单击连接

WebDAV Mac Step 2

如果您连接到该共享文件系统并输入webdav文件夹,您应该能够看到以前创建的sample.txt文件。

WebDAV Mac Step 3

步骤三:添加身份验证

没有身份验证的 WebDAV 服务器不安全. 在本节中,我们将使用 Digest 身份验证计划添加身份验证到您的 WebDAV 服务器。

基本身份验证还是Digest身份验证?

本表说明了不同操作系统上的不同身份验证方案的兼容性. 请注意,如果您使用 HTTPS,我们假定您的 SSL 证书有效(不是自签)。

WebDAV compatibility

如果您正在使用 HTTP ,请使用 Digest authentication因为它将在所有操作系统上工作。 如果您正在使用** HTTPS** ,您可以选择使用 Basic authentication

我们将涵盖 Digest 身份验证方案,因为它可以在所有操作系统上运行,而不需要SSL证书。

Digest 身份验证

让我们生成存储用户密码的文件(称为 users.password) 在 Digest 身份验证中,有一个 realm 字段,它作为用户的名称空间。

要生成 digest 文件,我们必须安装依赖。

1sudo apt-get install apache2-utils

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

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

这将用户 alex 添加到密码文件中,应该有一个密码提示,以创建** alex** 的密码。

对于随后的用户添加,您应该删除 c 旗帜. 这里是另一个例子,添加一个名为** chris** 的用户。

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

我们还需要允许Apache读取密码文件,所以我们改变了所有者。

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

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

将下列行添加到 Directory 指令中

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

最终版本应该是这样的(评论删除)。

 1DavLockDB /var/www/DavLock
 2
 3<VirtualHost *:80>
 4    ServerAdmin webmaster@localhost
 5    DocumentRoot /var/www/html
 6
 7    ErrorLog ${APACHE_LOG_DIR}/error.log
 8    CustomLog ${APACHE_LOG_DIR}/access.log combined
 9
10    Alias /webdav /var/www/webdav
11
12    <Directory /var/www/webdav>
13        DAV On
14        AuthType Digest
15        AuthName "webdav"
16        AuthUserFile /etc/apache2/users.password
17    	Require valid-user
18    </Directory>
19</VirtualHost>

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

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

Digest 身份验证需要为** realm** 设置一个值,我们将其设置为** webdav** .** Realm** 作为一个名称空间。当您有具有相同名称的用户时,您可以使用不同的** realm** 值将其分开。

使用 AuthUserFile 指令来表示密码文件的位置。

Require 指令指出,只有验证自己的有效用户才能访问该目录。

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

1sudo a2enmod auth_digest
2sudo service apache2 restart

步骤四:访问文件

我们将展示如何从Mac,Windows和Linux(Ubuntu)的原始文件浏览器访问您的WebDAV服务器,我们将展示仅在Mac上的文件和文件夹操作,因为简短,尽管您可以从所有操作系统中添加,编辑和删除服务器上的文件。

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

您可能需要驱动驱动器并重新连接到它,如果您在我们添加身份验证之前测试过它。

◎ Mac

在 Mac 上,打开 Finder . 在菜单栏中,找到** Go** ,然后选择连接到服务器选项。

WebDAV Mac Step 1

输入服务器地址. 它应该是 http://<your.server>/webdav . 点击** 连接** 。

WebDAV Mac Step 2

您将被要求提供一个用户名和pssword. 输入我们在服务器上创建的用户之一,并按 Connect

WebDAV Mac Step 3

一旦连接,目录应该出现在 Finder 中。

WebDAV Mac Step 4

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

WebDAV Mac Step 5

您可以添加或重命名文件并创建新的目录,与Finder完全相同,下面是最终结果。

WebDAV Mac Step 6

窗口

在 Windows 中,打开 文件探测器 在左侧栏中,您应该找到 ** 网络** 图标。

WebDAV Windows Step 1

右键单击网络图标,它应该显示带有选项地图网络驱动器的背景菜单。

WebDAV Windows Step 2

在文件夹中输入服务器地址. 它应该是 http://<your.server>/webdav . 如果您的登录不同,请选择** 连接使用不同的凭证** 。

WebDAV Windows Step 3

您将被要求输入用户名和密码,然后按OK

WebDAV Windows Step 4

一旦连接,它应该显示为网络驱动器在你的 文件浏览器 的左侧栏。

WebDAV Windows Step 5

Linux(Ubuntu)

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

WebDAV Linux Step 1

请输入服务器地址. 它应该是 dav://<your.server>/webdav . 点击** 连接** 。

WebDAV Linux Step 2

您将被要求输入用户名和密码,然后按 连接

WebDAV Linux Step 3

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

WebDAV Linux Step 4

结论

在本文中,我们已经讨论了如何在Ubuntu 14.04上使用Apache设置WebDAV服务器,我们还讨论了如何配置Digest身份验证以确保服务器。

Published At
Categories with 技术
comments powered by Disqus