听说 apple 公司最新的 Lion 系统已经用 webdav 取代 ftp 了,看来很有潜力。
apache 2.4.1 默认安装目录在/usr/local/apache2/。
一、httpd-dav.conf 中配置如下:
DavLockDB "/usr/local/apache2/var/DavLock"#用户验证需要,不可缺少,且需要为运行apache的用户可执行权限。
Alias /webdav "/usr/local/apache2/webdav"
Dav On
Options Indexes FollowSymLinks Includes
Order Allow,Deny
Allow from all
AllowOverride None
#AuthType Digest
AuthType Basic
AuthName DAV-upload
#You can use the htdigest program to create the password database:
#htdigest -c "/tmp/mips/user.passwd" DAV-upload admin
#htpasswd -c "/tmp/mips/user.passwd" admin
AuthUserFile "/usr/local/apache2/user.passwd"
#AuthDigestProvider file
AuthBasicProvider file
# Allow universal read-access, but writes are restricted
# to the admin user.
#
# require user admin
# Require valid-user
#
#admin admin
#
Require user admin
#
#guest guest
Require user guest
CSDN 嵌入代码排版乱!!! ==!凑合着看吧。
二、说明:
以上的配置实现的效果:admin 用户拥有默认权限,可修改webdav下的文件,可上传,删除,下载,重命名,修改等;
guest 用户权限做了限制,只可以查看,下载,不可上传、删除、编辑等。
1)必须使 var 和 webdav 及其子目录为 apache 服务器用户(我的是daemon用户)所拥有。
sudo chown daemon.daemon -R var
sudo chown daemon.daemon -R webdav
2)
3)用户密码文件位于/usr/local/apache2/user.passwd。
三、用户验证
本例使用基本验证(basic).语法如下。需要在 httpd.conf 中加载该模块。
1.创建用户密码文件,并设置密码
sudo htpasswd -c user.passwd admin
2.修改用户密码并更新(若user.passwd文件已存在)
sudo htpasswd user.passwd admin
3.删除用户并更新(若user.passwd文件已存在)
sudo htpasswd -D user.passwd admin
4.添加 guest 用户并设置密码
sudo htpasswd user.passwd guest
四、其他配置
1.配置要求:匿名用户只拥有根目录 /tmp/usb/ 浏览和下载权限,根目录的子目录sda拥有修改的权限。
#为根目录
Dav On
Options Indexes FollowSymLinks Includes
Order Deny,Allow
Allow from all
AllowOverride none
AuthType Basic
AuthName AirDisk
AuthUserFile "/usr/mips/user.passwd"
require user xxx #只能xxx用户才能使用 所限制的请求方法,其他用户都无法使用,而xxx用户又不存在user.passwd里,所有限制了所有用户修改该目录。
Dav On
Options Indexes FollowSymLinks Includes
Order Deny,Allow
Allow from all
#只限制HEAD方法,既是该目录下 HEAD 请求 需要是有效用户。其他请求方法对于非 valid-user 用户均不限制。
require valid-user # valid-user 即为 user.passwd 文件中所记录的用户。
似乎通过以上的实验得知, 2.按照以上配置完后,WEBDAV客户端虽然能够实现以上效果,但是在浏览器上却无法看到目录列表。
所以改为以下配置,经验证可行。
# Limit 后面似乎不能空着,所以我随便填了一个非法的方法MOV(实际上并没有MOV)。apache 并不报错。如果去掉 ,客户端又不能正常显示,因为sda这个目录是属于/tmp/usb的,而服务器又默认子目录继承上一目录的特性,所以要加。
require valid-user # valid-user 即为 user.passwd 文件中所记录的用户。
使运行 Apache 的用户为非 root 用户(例如 daemon ),设置 webdav 目录为 root 所有,而其子目录为 daemon 所拥有,则daemon用户无权限修改 webdav 目录,而可以修改其子目录。