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

Modified on: Mon, 21 Oct 2019 20:40:03 +0800

我正在尝试为用户提供Apache WebDav空间,以便存储他们的日历(.ics)文件。我已经运行了Dav和LDAP身份验证。但我没有将用户监禁到某些子目录。毕竟我不希望他们访问彼此的日历文件。

实施例:
假设用户 johndoe 登录。然后我想将他的“/”路径映射到/ var / www / users / johndoe在磁盘上。这样每个用户都有自己的目录。

到目前为止我尝试过:

  1. UserDir / var / www / users / * /

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

  2. RewriteRule ^ / / users /%{REMOTE_USER} [R]

    失败。它可能只是改写了我想要的路径。

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

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

  4. 醇>

    是否可以将用户登录到某个子目录?提前谢谢。

作者:Signum

最佳答案

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

# 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 / syntax

以只读方式访问相同的用户目录

# 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]

YMMV

作者:codehead

相关问答

添加新评论