介绍
WebDAV的是HTTP协议,允许用户在服务器上管理文件的扩展。 有很多方法可以使用WebDAV服务器。 例如,您可以通过将Word或Excel文档上传到您的WebDAV服务器来与同事共享Word或Excel文档。 您甚至可以通过向他们提供一个网址,与您的家人和朋友分享您的音乐收藏。 所有这一切都可以实现,而无需他们安装任何东西。
有许多方法来管理远程服务器上的文件。 WebDAV的比其他解决方案,比如几个好处FTP或Samba 。 在本文中,我们将介绍如何配置Apache服务器以允许从Windows,Mac和Linux进行本地WebDAV访问以及身份验证。
为什么选择WebDAV?
WebDAV提供了几个优点:
- 在所有主要操作系统(Windows,Mac,Linux)上的本机集成; 没有必要安装第三方软件来使用WebDAV。
- 支持部分传输。
- 更多的认证选择。 作为对HTTP意味着NTLM , Kerberos身份 , LDAP等都是可能的。
根据您的情况,WebDAV可能是满足您需求的最佳解决方案。
为什么是Apache?
有许多Web服务器支持WebDAV在Linux上。 但是,Apache有最符合WebDAV协议的实现。 在写这篇文章的时候,对WebDAV的Nginx的和lighttpd的工作,但只有部分。
先决条件
你需要一个Ubuntu的14.04服务器。
在我们开始之前,让我们先创建使用sudo访问权限的用户。 您可以以root身份运行命令,但它不是出于安全考虑鼓励。 上有一个很好的文章添加用户在Ubuntu 14.04如果您想了解更多信息。
创建用户
当你第一次创建一个数字海洋的实例,您将获得证书,使您可以以root身份登录。 作为root用户 ,让我们先添加一个名为亚历克斯的用户。
adduser 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 default
Full Name []:
Room Number []:
Work Phone []:
Home Phone []:
Other []:
Is the information correct? [Y/n] y
向用户授予sudo权限
创建一个新的用户之后,下一个步骤是授予用户亚历Sudo特权。 假设您仍然以root身份登录,在下面的命令中键入添加用户杜德伟 Sudo组。
usermod -aG sudo alex
Sudo组中的用户将被授予sudo特权, 现在你可以注销,然后以用户亚历克斯 。
第一步 - 安装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/
启用模块
接下来,我们能够使用的WebDAV模块a2enmod
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
和虚拟主机部分内的别名和目录指令:
Alias /webdav /var/www/webdav
<Directory /var/www/webdav>
DAV On
</Directory>
编辑后文件应如下所示。
DavLockDB /var/www/DavLock
<VirtualHost *:80>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual host. For the default virtual host (this file) this
# value is not decisive as it is used as a last resort host regardless.
# However, you must set it for any further virtual host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual host. For example the
# following line enables the CGI configuration for this host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
Alias /webdav /var/www/webdav
<Directory /var/www/webdav>
DAV On
</Directory>
</VirtualHost>
# vim: syntax=apache ts=4 sw=4 sts=4 sr noet
该DavLockDB正式指定DAV锁定数据库的名称。 它应该是一个文件的路径。 该文件不需要创建。 该目录应该是可由Apache服务器写的。
该别名指令请求映射到http://your.server/webdav
到/var/www/webdav
文件夹中。
该目录指令使Apache启用对WebDAV的/var/www/webdav
文件夹中。 您可以了解更多的mod_dav从Apache文档。
如果重新启动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的一个文本文件中。 它应该包含文本这是一个简单的文本文件 。
现在我们可以尝试从外部计算机登录。 WebDAV服务器应该在HTTP上找到:// <your.server.com> / WebDAV的 。 为了简洁,我们只显示如何在Mac上无凭据登录。
在Mac上,打开查找 。 在菜单栏上,发现 Go 和选择选项连接到服务器 。
选择连接以来宾选项。 然后,单击连接 。
你应该被记录下来。如果您连接到共享文件系统,并输入webdav
文件夹,你应该能够看到文件sample.txt
前面创建。 该文件应该是可下载的。
第三步 - 添加验证
没有身份验证的WebDAV服务器不安全。 在本节中,我们将使用摘要身份验证方案向您的WebDAV服务器添加身份验证。
基本或摘要身份验证?
有许多认证方案可用。 此表说明不同操作系统上的各种认证方案的兼容性。 请注意,如果您要提供HTTPS,我们假设您的SSL证书有效(非自签名)。
如果您正在使用HTTP,使用摘要式身份验证 ,因为它会在所有操作系统上运行。 如果您使用的是HTTPS,您可以使用的选项基本身份验证 。
我们要覆盖摘要式身份验证方案,因为它可以在所有的操作系统,而不需要一个SSL证书。
摘要认证
让我们生成文件(称为users.password
存储该用户的口令)。 在摘要式身份验证,有一个作为用户命名空间的境界领域。 我们将使用WebDAV作为我们的境界 。 我们的第一个用户将被称为亚历克斯 。
要生成摘要文件,我们必须安装依赖项。
sudo apt-get install apache2-utils
我们接下来要添加用户。 让我们使用以下命令生成用户密码文件。
sudo htdigest -c /etc/apache2/users.password webdav alex
这增加了用户杜德伟密码文件。 应该有一个密码提示创建亚历克斯的密码。
对于随后加入的用户,应删除C标志。 下面是另一个例子添加了一个名为克里斯用户。 系统提示时创建密码。
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
。
添加以下行到目录指令
AuthType Digest
AuthName "webdav"
AuthUserFile /etc/apache2/users.password
Require 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.password
Require valid-user
</Directory>
</VirtualHost>
该mod_authn模块包含认证指令的定义。
该AuthType选项指示Apache的,对于/var/www/webdav
目录中,有使用摘要方案应该是身份验证。
摘要式身份验证需要我们设置为WebDAV的 境界值。 境界就像一个命名空间。 当你有具有相同名称的用户,可以使用不同的值的境界将它们分开。 我们使用AuthName指令指令设定境界值。
该指令的AuthUserFile用于指示密码文件的位置。
该指令要求的国家,只有谁进行自我验证有效的用户可以接取该目录。
最后,启用Digest模块并重新启动服务器以使设置生效。
sudo a2enmod auth_digest
sudo service apache2 restart
第四步 - 访问文件
我们将演示如何从Mac,Windows和Linux(Ubuntu)的本机文件浏览器访问您的WebDAV服务器。 为了简洁起见,我们将在Mac上演示文件和文件夹操作,尽管您可以在所有操作系统上添加,编辑和删除服务器上的文件。
您还可以使用网络浏览器通过Internet访问文件。
如果在我们添加身份验证之前测试过,您可能需要弹出驱动器并重新连接。
苹果电脑
在Mac上,打开Finder。 在菜单栏上,发现 Go 和选择选项连接到服务器 。
输入服务器地址。 它应该是http:// <your.server> / WebDAV的 。 按连接 。
系统将提示您输入用户名和密码。 输入我们在服务器上创建的一个用户,然后按连接 。
一旦你连接,目录应该出现在Finder中 。
您可以复制文件并保存到webdav
目录,并创建子目录。 以下是服务器上目录的初始状态:
您可以使用Finder正常添加或重命名文件并创建新目录。 下面是最终结果。
视窗
在Windows中,打开文件资源管理器 。 在左侧边栏,你会发现网络图标。
右键单击网络图标。 它应该显示的选项映射网络驱动器的上下文菜单。 点击那。
在文件夹字段中输入服务器地址。 它应该是http:// <your.server> / WebDAV的 。 通过连接不同的凭据 ,如果您的登录是不同的选择。 单击Finish。
系统将提示您输入用户名和密码。 输入它们,然后按确定 。
一旦您已连接,它应该出现在你的文件管理器的左侧边栏的网络驱动器。
Linux(Ubuntu)
我们使用Ubuntu 14.04作为我们的Linux桌面操作系统。 在Ubuntu上,打开的文件 。 有左侧侧边栏连接到服务器的选项。 点击那。
输入服务器地址。 它应该是DAV:// <your.server> / webdav的 。 按连接 。
系统将提示您输入用户名和密码。 输入它们,然后按连接 。
一旦你连接,目录应该出现在网络上市。
结论
在本文中,我们已经了解了如何在Ubuntu 14.04上使用Apache设置WebDAV服务器。 我们还讨论了如何配置Digest身份验证以保护服务器安全。 最后,我们向您展示了如何使用其本地文件浏览器从所有三个主要操作系统连接到WebDAV服务器。