我使用 Apache 配置了一个 WebDAV 服务器。以下是我的配置:
DAVLockDB /var/www/DAVLock.db
<Location /majid>
AllowOverride None
Options +Indexes
DAV On
AuthUserFile /var/www/users.db
AuthName Authentication
AuthType Basic
<Limit GET PUT DELETE PROPFIND PROPPATCH MKCOL COPY MOVE LOCK UNLOCK>
Require user majid
</Limit>
</Location>
Alias /majid /var/www/dav/majid
/var/www/DAVLock.db
归apache
用户和组所有。我可以通过浏览器访问 WebDAV 共享。我在 Windows XP SP3 中配置了WebFolder
。但我无法创建文件和文件夹。error_log
文件显示:
[Tue Oct 11 17:05:12 2011] [error] [client 192.168.1.2] File does not exist: /var/www/dav/majid/New Folder
[Tue Oct 11 17:05:12 2011] [error] [client 192.168.1.2] The locks could not be queried for verification against a possible "If:" header. [500, #0]
[Tue Oct 11 17:05:12 2011] [error] [client 192.168.1.2] Could not open the lock database. [500, #400]
[Tue Oct 11 17:05:12 2011] [error] [client 192.168.1.2] (13)Permission denied: Could not open property database. [500, #1]
有人能帮忙吗?另一个问题是:我们是否需要Options +Indexes
WebDAV 客户端列出文件和文件夹,还是只能使用浏览器进行 Web 访问?
答案1
ls -ld /var/www/
drwxr-xr-x. 9 root root 4096 Oct 11 15:54 /var/www/
chown -R apache:apache /var/www/
,撤消更改并重试。
答案2
这对我来说是个陷阱,但根据mod_dav:
“包含锁数据库文件的目录必须可由 Apache 正在运行的用户和组写入。”
您必须确保您对 DAV 锁定数据库文件具有适当的权限和包含该信息的目录。
在我的全新安装中,/var/www/ 目录没有为 apache 组设置写入权限。/var/lib/dav/ 目录默认设置了这些权限,这就是它对 Majid 有效的原因。了解这一点后,您可以在您选择的某个位置创建一个具有适当权限的目录。
(这是一个老问题,但它仍然出现在我的搜索中。我不喜欢配置巫术,所以对我来说,了解为什么Majid Azimi 的配置更改对他很有用。)
答案3
我删除了这一行:
DAVLockDB /var/www/DAVLock.db
并使用 Apache 的默认配置:
<IfModule mod_dav_fs.c>
# Location of the WebDAV lock database.
DAVLockDB /var/lib/dav/lockdb
</IfModule>
现在它运行正常。但我还不知道原因。
答案4
我们在 CentOS 7 上的 Apache WebDav 也遇到了同样的问题,在更改配置后我们修复了这个问题
chcon -R -t httpd_sys_content_rw_t /var/www/{webdav 根文件夹}
此后它完美运行
参考: https://sirion-notes.blogspot.com/2015/09/centos-7-apache-24-webdav-not-so-secure.html