编者按:随着办公方式的灵活化,各个企业当下对在线协作的需求也各有不同。企业内部协作通常采用FTP服务器或微软SharePoint等平台实现,但是长距离的在线协作,则往往需要通过HTTP实现。以下介绍在Linux平台下搭建远程协作平台的协议:WebDAV。
WebDAV协议允许用户通过HTTP保存和共享文件,这是一个非常有价值的突破,因为HTTP通常是只读的,除了访问文档外,用户可以编辑和重新上传它们,你可以将其理解为一种基于HTTP的网络文件系统,或一种支持长距离文件协作的方法。WebDAV协议支持文件锁和版本控制,因此,当你访问到WebDAV文件夹后,你就可以编辑文件,不用担心会覆盖其他人的编辑成果。时至今日,虽然在线协作的方法越来越多,但WebDAV在文件共享方面仍然有它的用处,特别是有很多的服务器和客户端软件支持它。
和FTP不一样,HTTP提供强认证和加密,以及缓存和代理支持,因为WebDAV是工作在HTTP之上的,因此它也可以利用HTTP的这些特性,SSH可能是另一种选择,但SSH在移动文件方面有一些限制,并且也没有那么多客户端默认就支持它。
WebDAV和Apache2
Apache服务器通过加载ismod_dav可以支持WebDAV文件夹,在Debian或Ubuntu上,输入下面的命令开启这个功能:
a2enmod dav a2enmod dav_fs /etc/init.d/apache2 restart
Mod_dav为服务器添加了WebDAV功能,mod_dav_fs提供后台支持,允许访问服务器文件系统中的资源,更多关于dav和dav_fs的详细信息,请参考Apache的帮助手册。
你也可以设置通过WebDAV可以访问的文件夹,如:
<Directory "/web/juliet/davfolder"> Dav On Order Allow,Deny Allow from all AuthType Digest AuthName WebDAV-Realm AuthUserFile "/usr/var/webdav.passwd" require user juliet </Directory>
这里最重要的一行是Dav On,它将这个目录转换成一个WebDAV文件夹,剩下的部分都是对这个目录设置的安全访问限制,在任何目录上开启WebDAV功能之前,最重要的是设置认证,否则就会存在很大的漏洞,这里使用了MD5 Digest认证,将访问权限制到用户名,你也可以使用require valid-user。
为了允许别人写入你的目录,你需要修改它的权限,注意,Apache用户必须能够写入这个目录,再提醒一下,一定要注意安全问题,最好将WebDAV目录和你的网站文件适度地分开。
如果要手动设置WebDAV,你需要在Apache配置文件中添加下面的内容:
LoadModule dav_module /usr/lib/apache2/modules/mod_dav.so LoadModule dav_fs_module /usr/lib/apache2/modules/mod_dav_fs.so DAVLockDB ${APACHE_LOCK_DIR}/DAVLock
然后重启Apache,再设置你要共享的目录。
客户端DAV
虽然DAV通常由Web服务器提供,但Web浏览器不是访问它的最佳渠道,大多数时候,你得到的是一个目录列表(如果你已经在Apache设置中开启这个功能),只能读取或下载文件,不能编辑或上传文件。
如果你想图形化访问,Nautilus和Konqueror文件浏览器都内置了对WebDAV的支持,使用dav://server.example.com/juliet打开文件夹(需要用户名和密码),现在你应该能够编辑和上传文件了,如果不行,可能需要检查一下服务端的目录和文件权限设置。
另一个WebDAV客户端是cadaver,它是一个纯命令行客户端,它的工作方式和FTP客户端差不多,使用下面的命令建立一个连接:
cadaver http://juliet.example.com/myfolder
当然,这里也是需要用户名和密码的,进入指定文件夹后,你就可以使用get(或mget) filename下载文件,或put(或mput) filename上传文件了,cadaver也允许你编辑文件的元数据,而Nautilus和Konqueror则不行。还有一个办法是使用fusedav(Debian或Ubuntu中已包含)作为普通文件系统的一部分访问WebDAV目录,你需要使用adduser username fuse将你的用户添加到fuse用户组,记住,一定要退出重新登录才会生效,然后使用:
fusedav http://juliet.example.com/myfolder localfolder
打开远程目录,将其挂载为本地文件夹(localfolder),注意这个目录必须事先创建好。
使用WebDAV还可以做到更多
除Mod_dav_fs允许你使用服务端目录系统提供WebDAV文件外,还有其它模块也行,如mod_dav_svn,它可以通过Apache提供一个Subversion仓库,如果你要这么做,你还需要加载mod_dav_lock模块(mod_dav_fs不需要锁模块,因为它有自己的锁)。因为WebDAV是一个开放的协议,如果需要,你还可以用它做更多的事情。
英文原文连接:http://www.serverwatch.com/tutorials/article.php/3929346/article.htm