分享

apache 2.4 配置webdav的用户权限

 用勿龍潛 2013-05-04

apache 2.4 配置webdav的用户权限

apache 2.4.1 默认安装目录在/usr/local/apache2/。

一、httpd-dav.conf 中配置如下:

 

  1. DavLockDB "/usr/local/apache2/var/DavLock"#用户验证需要,不可缺少,且需要为运行apache的用户可执行权限。  
  2.   
  3. Alias /webdav "/usr/local/apache2/webdav"  
  4.   
  5. <Directory "/usr/local/apache2/webdav">  
  6.     Dav On  
  7.     Options Indexes FollowSymLinks Includes  
  8.   
  9.     Order Allow,Deny  
  10.     Allow from all  
  11.     AllowOverride None  
  12.     #AuthType Digest   
  13.     AuthType Basic  
  14.     AuthName DAV-upload  
  15.     #You can use the htdigest program to create the password database:   
  16.     #htdigest -c "/tmp/mips/user.passwd" DAV-upload admin   
  17.     #htpasswd -c "/tmp/mips/user.passwd" admin   
  18.     AuthUserFile "/usr/local/apache2/user.passwd"  
  19.     #AuthDigestProvider file   
  20.     AuthBasicProvider file  
  21.     # Allow universal read-access, but writes are restricted   
  22.     # to the admin user.   
  23. #    <LimitExcept GET POST PUT OPTIONS>   
  24. #      require user admin   
  25. #   Require valid-user   
  26. #    </LimitExcept>   
  27.   
  28. #admin admin   
  29. #  <LimitExcept GET PUT POST DELETE MOVE COPY OPTIONS>   
  30.    Require user admin  
  31. #  </LimitExcept>   
  32. #guest guest   
  33.    <LimitExcept PUT POST DELETE MOVE OPTIONS>  
  34.    Require user guest  
  35.    </LimitExcept>  
  36.   
  37. </Directory>  


二、说明:

以上的配置实现的效果:admin 用户拥有默认权限,可修改webdav下的文件,可上传,删除,下载,重命名,修改等;

                                            guest  用户权限做了限制,只可以查看,下载,不可上传、删除、编辑等。

 

1)必须使  var  和 webdav 及其子目录为 apache 服务器用户(我的是daemon用户)所拥有

sudo chown daemon.daemon -R var

sudo chown daemon.daemon -R webdav

2)<LimitExcept>的意思可能跟我最初理解的意思恰好相反。它的意思可能是只限制 <LimitExcept> 中的method。虚拟机上测试通过。

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拥有修改的权限。

 
  1. <Directory "/tmp/usb/">#为根目录  
  2.     Dav On  
  3.     Options Indexes FollowSymLinks Includes  
  4.     Order Deny,Allow  
  5.     Allow from all  
  6.     AllowOverride none  
  7.     AuthType Basic  
  8.     AuthName AirDisk  
  9.     AuthUserFile "/usr/mips/user.passwd"  
  10.     <Limit PUT POST MOVE DELETE MKCOL>  
  11.     require user xxx #只能xxx用户才能使用 <Limit> 所限制的请求方法,其他用户都无法使用,而xxx用户又不存在user.passwd里,所有限制了所有用户修改该目录。  
  12.     </Limit>  
  13. </Directory>  
  14. <Directory "/tmp/usb/sda">  
  15.     Dav On  
  16.     Options Indexes FollowSymLinks Includes  
  17.     Order Deny,Allow  
  18.     Allow from all  
  19.     <Limit HEAD>#只限制HEAD方法,既是该目录下 HEAD 请求 需要是有效用户。其他请求方法对于非 valid-user 用户均不限制。  
  20.     require valid-user # valid-user 即为 user.passwd 文件中所记录的用户。  
  21.     </Limit>  
  22. </Directory>  
似乎通过以上的实验得知, <Limit> 和 require 的部分用法。

2.按照以上配置完后,WEBDAV客户端虽然能够实现以上效果,但是在浏览器上却无法看到目录列表。
所以改为以下配置,经验证可行。

 
  1. <Directory "/tmp/usb/sda">  
  2.     <Limit MOV># Limit 后面似乎不能空着,所以我随便填了一个非法的方法MOV(实际上并没有MOV)。apache 并不报错。如果去掉 <Limit>,客户端又不能正常显示,因为sda这个目录是属于/tmp/usb的,而服务器又默认子目录继承上一目录的特性,所以要加。  
  3.     require valid-user # valid-user 即为 user.passwd 文件中所记录的用户。  
  4.     </Limit>  
  5. </Directory>  
  6. 3.对于限制用户修改根目录,而允许其修改子目录。其实还有一种方法可行,但是只在虚拟机上实现了(项目中运行apache的用户为root)。 
  7. 使运行 Apache 的用户为非 root 用户(例如 daemon ),设置 webdav 目录为 root 所有,而其子目录为 daemon 所拥有,则daemon用户无权限修改 webdav 目录,而可以修改其子目录

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多