简介
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 successfullyChanging the user information for alexEnter the new value, or press ENTER for the default Full 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 updatesudo apt-get install apache2
Apache Web 服务器应该已经安装并运行。
步骤二 — 设置 WebDAV
设置 WebDAV 有三个步骤。我们需要指定一个位置,启用必要的模块,并进行配置。
准备目录
我们需要指定一个用于提供 WebDAV 服务的文件夹。我们将为此创建新目录 /var/www/webdav
。您还需要将所有者更改为 www-data
(您的 Apache 用户),以允许 Apache 对其进行写入。
sudo mkdir /var/www/webdavsudo chown -R www-data:www-data /var/www/
启用模块
接下来,使用 a2enmod 启用 WebDAV 模块
sudo a2enmod davsudo 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 部分内添加 Alias 和 Directory 指令:
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.com ServerAdmin webmaster@localhost DocumentRoot /var/www/html # 可用的日志级别:trace8、...、trace1、debug、info、notice、warn、error、crit、alert、emerg。 # 还可以为特定模块配置日志级别,例如 #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # 对于 conf-available/ 中的大多数配置文件,可以配置为在全局级别启用或禁用,可以为特定虚拟主机包含一行。例如,以下行仅为此主机启用 CGI 配置,仅在使用 "a2disconf" 全局禁用后才能使用。 #Include conf-available/serve-cgi-bin.conf Alias /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 DigestAuthName "webdav"AuthUserFile /etc/apache2/users.passwordRequire valid-user
最终版本应该如下所示(删除了注释)。
DavLockDB /var/www/DavLock<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined Alias /webdav /var/www/webdav <Directory /var/www/webdav> DAV On AuthType Digest AuthName "webdav" AuthUserFile /etc/apache2/users.passwordRequire valid-user </Directory></VirtualHost>
mod_authn 模块包含了身份验证指令的定义。
AuthType 指令告诉 Apache 对于 /var/www/webdav
目录,应该使用 Digest 方案进行身份验证。
Digest 身份验证需要一个 realm 的值,我们将其设置为 webdav。Realm 充当命名空间。当您有相同名称的用户时,您可以使用不同的 realm 值来将它们分开。我们使用 AuthName 指令来设置 realm 的值。
AuthUserFile 指令用于指示密码文件的位置。
Require 指令说明只有经过身份验证的有效用户才能访问该目录。
最后,启用 Digest 模块并重新启动服务器以使设置生效。
sudo a2enmod auth_digestsudo 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 服务器。