如何将经过身份验证的 Apache 用户映射到他们自己的目录?

如何将经过身份验证的 Apache 用户映射到他们自己的目录?

我正在尝试为用户提供一个 Apache WebDav 空间,让他们可以存储日历 (.ics) 文件。我已经运行了 Dav 和 LDAP 身份验证。但我无法将用户限制在某些子目录中。毕竟我不想让他们访问彼此的日历文件。

例如:假设用户约翰多登录。然后我想让他的“/“路径映射到/var/www/用户/johndoe在磁盘上。这样每个用户都有自己的目录。

到目前为止我已经尝试过:

  1. 用户目录 /var/www/users/*/

    但似乎这个目录只是为 /~johndoe/ 请求设置了路径,这不是我想要的。

  2. 重写规则 ^/ /用户/%{REMOTE_USER} [R]

    失败。它可能只是重写了路径,这不是我想要的。

  3. AliasMatch ^/ /var/www/users/%{REMOTE_USER}/

    这应该将路径映射到磁盘上的目录,但 %{REMOTE_USER} 不会扩展。

是否可以将登录用户限制在某些子目录中?提前致谢。

答案1

如果您愿意使用目录前缀而不是“/”,则可以使用如下内容:

# Let's setup WebDAV first
<Directory /var/lib/storage>
        Dav On
        Options Indexes
        AllowOverride None
</Directory>
# Now we'll set up the user area mapping
RewriteCond %{REQUEST_URI} ^/storage/
RewriteRule ^/storage/(.*?)$ /var/lib/storage/user/%{LA-U:REMOTE_USER}/$1 [L]

此外,可以使用 /~user/ 语法以只读方式访问相同的用户目录

# Public area can be accessed as https://server/~user/
RewriteCond %{REQUEST_URI} ^/~
RewriteCond %{REQUEST_METHOD} ^(GET|POST)$
RewriteRule ^/~([^/]+)/?(.*)    /var/lib/storage/user/$1/$2 [L]

年龄变化率

相关内容