Como mapear os usuários autenticados do Apache para seu próprio diretório?

5

Estou tentando oferecer a nossos usuários um espaço do Apache WebDav onde eles podem armazenar seus arquivos de calendário (.ics). Eu tenho a autenticação Dav e LDAP já em execução. Mas não consigo prender os usuários em alguns subdiretórios. Afinal, não quero que eles acessem os arquivos de calendário um do outro.

Exemplo: Digamos que o usuário johndoe efetue login. Então, gostaria que seu caminho " / " fosse mapeado para / var / www / users / johndoe no disco. Para que todo usuário tenha seu próprio diretório.

O que tentei até agora:

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

    mas parece que este diretório apenas define o caminho para / ~ johndoe / requests que não é o que eu quero.

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

    Falha. E provavelmente está apenas reescrevendo o caminho que não é o que eu quero.

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

    Isso deve mapear o caminho para um diretório no disco, mas o% {REMOTE_USER} não é expandido.

É possível injetar usuários logados em algum subdiretório? Agradecemos antecipadamente.

    
por Signum 16.11.2009 / 17:06

1 resposta

2

Se você estiver disposto a usar um prefixo de diretório em vez de "/", poderá usar algo assim:

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

Além disso, os mesmos diretórios de usuários podem ser acessados somente para leitura usando a sintaxe / ~ 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]

YMMV

    
por 16.11.2009 / 18:36