Estoy buscando retirar completamente mi servicio SMBA y reemplazarlo con un servicio WebDav.
Todas las búsquedas de Google hasta el momento me han indicado utilizar Apache / Webdav. Esto está cerca de lo que necesito, pero por lo que leo, requiere que Apache tenga acceso a los archivos de mi usuario y peor; si crea un archivo, el nuevo archivo será propiedad de Apache (no del usuario). Tenga en cuenta que tener archivos con la propiedad y permisos Unix correctos es un requisito, ya que algunos usuarios tienen acceso SSH directo.
Así que simplemente estoy buscando una manera de hacer que Apache / Webdav funcione "correctamente" con múltiples usuarios (es decir, cambiar el usuario de Unix al usuario conectado antes de intentar servir el archivo ) o encontrar una alternativa completa a Apache / Webdav.
Hasta ahora, las búsquedas no han dado resultado.
AssignUserIDExpr
acepta el usuario conectado. Es posible que, desde entonces, noAssignUserID
aparezca antes de que el usuario se autentique.Respuestas:
Si tiene el nombre de usuario y / o el UID, puede hacerlo con nginx + lua + luarocks ljsyscall
En un sistema debian, configurado como:
Y nginx configuró de la siguiente manera:
Esto ejecutará setfsuid en cada solicitud atendida por el trabajador nginx. Desafortunadamente, parece que debe estar ejecutando nginx como root para que esto funcione actualmente. Creo que es posible que esto funcione con un usuario diferente siempre que el proceso se inicie como root, se deje caer a un usuario diferente, con CAP_SETUID preservado (consulte la documentación para
capsh
), y lauser
directiva está ausente en el archivo de configuración nginx.Es posible que también deba establecer las ID de grupo, potencialmente.
Consulte "Efecto de los cambios de ID de usuario en las capacidades" en http://man7.org/linux/man-pages/man7/capabilities.7.html
fuente
Vale la pena leer esto: Otra entrada: múltiples carpetas de usuario y una carpeta compartida http://hexeract.wordpress.com/2011/02/25/configure-a-webdav-enabled-webserver-for-multiple-user-folders -and-one-shared-folder /
fuente
Usé este como guía para configurar webdav: http://bernaerts.dyndns.org/linux/75-debian/62-debian-webdav-share
sí, Apache es el grupo (www-data en Debian) pero puede agregar usuarios a ese grupo, así que agregué un usuario. No probé por qué no puede agregar otros usuarios ... El servidor webdav que utiliza, en principio, esta configuración se ejecuta ahora durante 3 años en mi y mis hijos (2 servidores idénticos para el trabajo de mi hijo). Debian 6 es desde hace algunos meses la versión LTS (hasta febrero de 2016).
En comparación con Bernaerts, adapté en el archivo Apache: / etc / apache2 / sites-available / default esta parte de la configuración.
Por lo tanto, mis archivos ya no están en www sino en / data / webdav1 (a través de alias webdav1 para mantenerlo corto) Para cada disco duro, he creado una sección de este tipo y webdav1 se convierte en webdav2 para el segundo disco duro de esa sección. Podemos construir un máximo de 10 discos duros en estos servidores, por lo que 10 de estas secciones en ese archivo de configuración. Agregué el usuario a www-data, davfs2 y davfs, para que el usuario pueda tener acceso a las carpetas webdav. Por lo tanto, el usuario debe iniciar sesión y se le pedirá el nombre de usuario y la contraseña. En fstab, todos los discos de datos webdav se enumeran para que el montaje se realice automáticamente. Esa parte de fstab:
fuente
¿Has probado OwnCloud ? Todavía lo pruebo yo mismo, pero parece que cumple con sus requisitos: webdav funciona de forma inmediata.
fuente
Después de haber buscado durante mucho tiempo, no pude encontrar uno. Hay muchos servidores multiusuario, pero no pude encontrar uno que se ejecutara como usuario del sistema.
Entonces escribí uno yo mismo. Esto solo se prueba hasta donde puedo probarlo yo mismo. Pero por lo que vale, el código fuente está aquí:
https://github.com/couling/WebDAV-Daemon
fuente
Hy
Estaba buscando lo mismo y finalmente reuní una solución usando apache2. Intenté la solución de nodo con npm webdav-server y descubrí que no todo funcionaba tan bien que con el módulo apache. Luego probé un servidor npm dav basado en jsDAV que podría funcionar mejor y podría ser una solución, pero como tuve que lidiar con una pésima conexión 3g, preferí apache y descubrí scripts de varias instancias.
Así que aquí comparto mi experiencia.
http://helpcenter.epages.com/Doc/doc/apache2/README.multiple-instances
Ejecuto una instancia por usuario de webdav ... no muy escalable, pero trabajar en un equipo pequeño es lo suficientemente bueno.
Reemplace myUser con su usuario.
En Ubuntu 14.04
Entonces ejecuto un proceso de Apache como el usuario myUser definido en / etc / apache2-myUser / envars
Editar puertos.conf
No pude hacer que la autenticación PAM en ubuntu 14.04 funcione, así que necesito engañar con la autenticación básica, ya que luego la envuelvo en https con nginx
Entonces /etc/apache2-myUser/sites-available/000-default.conf
entonces el proxy nginx tiene un truco con el encabezado La carpeta de iconos de paso de destino permite que webdav baje de categoría agradablemente en los navegadores
No hay obligación de usar nginx como proxy, apache bien podría hacer https, pero cuando me topé con el problema de Destino de proxy, sentí que valía la pena mencionarlo.
fuente
También estoy buscando una solución similar.
Solución 1: Su entorno de escritorio (Gnome, KDE) podría tener widgets para exponer una determinada carpeta por WebDAV. Esto se ejecutará mientras se ejecute su entorno de escritorio y no sea una solución daemon.
Solución 2: Nada le impide ejecutar Apache bajo su propio enlace de usuario en puertos no privilegiados superiores a 1024. Simplemente escriba un archivo de configuración o copie los que se incluyen en su distribución a su $ HOME / etc / httpd (solo un ejemplo), agregue DAV- configuración relacionada y ejecútela como su propio usuario no root como:
$ httpd -f $ INICIO / etc / httpd
La ejecución de sus usuarios garantiza que Apache creará archivos como usted.
fuente