尽管权限正确,但未创建 DavLockDB

尽管权限正确,但未创建 DavLockDB

多年后重返 Linux,并尝试设置mod_dav目录/var/www以进行一些 Web 开发。应该很容易,但这让我很难受。在 AWS Lightsail 实例上运行 CentOS 7。安装httpdmod_ssl通过yum并执行了本应很容易的配置。

/etc/httpd/conf.d/ssl.conf全局部分:

DavLockDB /var/www/DavLock

<VirtualHost>

Alias /webdav /var/www
<Directory /var/www>
    DAV On
    AuthType Basic
    AuthName "webdav"
    AuthUserFile /etc/httpd/.htpasswd
    Require valid-user
</Directory>

我已经完成了chown 777 apache:apache/var/www我运行systemctl restart apache并重新启动了,但没有成功。

现在来看看奇怪的东西。我可以从 Windows 10 客户端成功登录并获取 中的目录列表/var/www<mydomain>/webdav我可以列出并打开 中的文件/var/www,但不能列出并打开 中的文件/var/www/html。我无法创建文件或目录。

ssl_error.log

[Sun May 24 20:01:49.254447 2020] [dav:error] [pid 16108] [client <masked ip>] The locks could not be queried for verification against a possible "If:" header.  [500, #0]
[Sun May 24 20:01:49.254463 2020] [dav:error] [pid 16108] [client <masked ip>] Could not open the lock database.  [500, #400]
[Sun May 24 20:01:49.254473 2020] [dav:error] [pid 16108] (13)Permission denied: [client <masked ip>] Could not open property database.  [500, #1]

好的。因此权限不适合创建锁定数据库。但ls -la返回以下内容:

drwxr-xr-x.  4 apache apache   33 May 24 19:49 www

再进行双重检查,ps -aux显示 httpd 以用户 apache 身份运行,减去绑定端口所需的启动过程:

root     16107  0.0  1.4 249968  7416 ?        Ss   20:01   0:00 /usr/sbin/httpd -DFOREGROUND
apache   16108  0.0  1.1 250236  5652 ?        S    20:01   0:00 /usr/sbin/httpd -DFOREGROUND
apache   16109  0.0  0.7 249968  3644 ?        S    20:01   0:00 /usr/sbin/httpd -DFOREGROUND
apache   16110  0.0  0.7 249968  3644 ?        S    20:01   0:00 /usr/sbin/httpd -DFOREGROUND
apache   16111  0.0  0.7 249968  3644 ?        S    20:01   0:00 /usr/sbin/httpd -DFOREGROUND
apache   16112  0.0  1.1 250236  5656 ?        S    20:01   0:00 /usr/sbin/httpd -DFOREGROUND
apache   16116  0.0  0.7 249968  3656 ?        S    20:01   0:00 /usr/sbin/httpd -DFOREGROUND

我到底错过了什么?

答案1

因此,这是一个由两部分组成的过程:

  1. 首先,正如我在上面的评论中提到的,SELinux 不允许 Apache 进程写入 DavLock 文件。如何在不禁用 SELinux 的情况下更正此问题的说明:https://server-world.info/en/note?os=CentOS_7&p=httpd&f=12

  2. 其次,对于您希望通过 WebDAV 提供的任何文件夹,目录索引都无法打开。我的主要 httpd.conf 文件中有这个,DirectoryIndex index.html这把事情搞砸了。通过添加以下内容来<Directory /var/www/html>阻止,一切都开始正常工作:

    <If "%{REQUEST_METHOD} != 'GET'">
        DirectoryIndex none
    </If>
    <Else>
        DirectoryIndex index.htm index.html
    </Else>

相关内容