5 votos

¿Cómo asignar los usuarios autentificados de Apache a su propio directorio?

Estoy tratando de ofrecer a nuestros usuarios un espacio Apache WebDav donde puedan almacenar sus archivos de calendario (.ics). Ya tengo funcionando la autenticación de Dav y LDAP. Pero no logro encarcelar a los usuarios en algunos subdirectorios. Después de todo, no quiero que accedan a los archivos de calendario de los demás.

Ejemplo: Digamos que el usuario johndoe se conecta. Entonces me gustaría tener su " / " se trazarán los mapas del camino a /var/www/users/johndoe en el disco. Para que cada usuario tenga su propio directorio.

Lo que he intentado hasta ahora:

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

    pero parece que este directorio sólo establece el camino para las peticiones de /~johndoe/, que no es lo que quiero.

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

    Falla. Y probablemente esté reescribiendo el camino que no es lo que quiero.

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

    Esto debería mapear la ruta a un directorio en el disco pero el %{REMOTE_USER} no se expande.

¿Es posible encarcelar a los usuarios registrados en algún subdirectorio? Gracias de antemano.

4voto

codehead Puntos 713

Si estás dispuesto a usar un prefijo de directorio en lugar de "/", puedes usar algo como esto:

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

Además, se puede acceder a los mismos directorios de usuario en modo de sólo lectura utilizando la sintaxis /~usuario/

# 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

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: