Estou procurando descomissionar completamente meu serviço SMBA e substituí-lo por um serviço WebDav.
Todas as pesquisas do Google até agora me indicaram o uso do Apache / Webdav. Isso está próximo do que eu preciso, mas, tanto quanto li, o Apache precisa ter acesso aos arquivos do meu usuário e algo pior; se ele criar um arquivo, o novo arquivo será de propriedade do Apache (não do usuário). Observe que ter arquivos com a propriedade e permissões corretas do Unix é um requisito, pois alguns usuários têm acesso SSH direto.
Portanto, estou simplesmente procurando uma maneira de fazer o Apache / Webdav funcionar "corretamente" com vários usuários (que é mudar o usuário unix para o usuário conectado antes de tentar servir o arquivo ) ou encontrar uma alternativa completa ao Apache / Webdav.
Até agora, as pesquisas não revelaram nada.
AssignUserIDExpr
aceitará o usuário logado. Desde então, pode nãoAssignUserID
aparecer antes que o usuário se autentique.Respostas:
Se você tiver o nome de usuário e / ou o uid, poderá fazê-lo com nginx + lua + luarocks ljsyscall
Em um sistema debian, configurado como:
E o nginx configurou da seguinte maneira:
Isso executará o setfsuid em cada solicitação atendida pelo trabalhador nginx. Infelizmente, parece que você deve estar executando o nginx como root para que isso funcione corretamente no momento. Eu acredito que é possível que isso funcione com um usuário diferente, desde que o processo tenha sido iniciado como root, transferido para um usuário diferente, com CAP_SETUID preservado (consulte a documentação para
capsh
) e auser
diretiva está ausente no arquivo de configuração nginx.Você também pode precisar definir os IDs do grupo, potencialmente.
Consulte "Efeito das alterações de ID do usuário nos recursos" em http://man7.org/linux/man-pages/man7/capabilities.7.html
fonte
Vale a pena ler: Outra entrada: várias pastas de usuários e uma pasta compartilhada http://hexeract.wordpress.com/2011/02/25/configure-a-webdav-enabled-webserver-for-multiple-user-folders -e-uma-pasta-compartilhada /
fonte
Usei este como guia para configurar o webdav: http://bernaerts.dyndns.org/linux/75-debian/62-debian-webdav-share
Sim, o Apache é o grupo (www-data no Debian), mas você pode adicionar usuários a esse grupo, então eu adicionei um usuário. Não testou por que você não pode adicionar outros usuários .... O servidor webdav que usa, em princípio, essa configuração é executado agora por 3 anos no meu e no de meus filhos (portanto, 2 servidores idênticos para o trabalho do meu filho). O Debian 6 é desde alguns meses a versão LTS (até fevereiro de 2016).
Comparado com Bernaerts, adaptei no arquivo Apache: / etc / apache2 / sites-available / default essa parte da configuração.
Portanto, meus arquivos não estão mais em www, mas em / data / webdav1 (por meio do apelido webdav1 para mantê-lo curto). Para cada disco rígido que criei essa seção, o webdav1 se torna webdav2 para o segundo disco rígido dessa seção. Podemos criar no máximo 10 discos rígidos nesses servidores, portanto 10 dessas seções nesse arquivo de configuração. Eu adicionei o usuário a www-data, davfs2 e davfs, para que o usuário possa acessar as pastas do webdav. Portanto, o usuário precisa fazer login e será solicitado o nome de usuário e a senha. No fstab, todos os discos de dados do webdav são listados para que a montagem continue automaticamente. Essa parte do fstab:
fonte
Você já tentou o OwnCloud ? Ainda estou testando sozinho, mas parece que preenche seus requisitos: o webdav funciona imediatamente.
fonte
Tendo procurado por um longo tempo, simplesmente não consegui encontrar um. Existem muitos servidores multiusuário, mas não consegui encontrar um que seja executado como usuário do sistema.
Então eu mesmo escrevi um. Isso é testado apenas na medida em que eu mesmo possa testá-lo. Mas, para o que vale, o código fonte está aqui:
https://github.com/couling/WebDAV-Daemon
fonte
Hy,
Eu estava procurando a mesma coisa e finalmente reuni uma solução usando o apache2. Tentei a solução do nó usando o npm webdav-server e descobri que nem todos funcionavam tão bem quanto o módulo apache. Então tentei um servidor npm dav baseado em jsDAV que poderia fazer melhor e ser uma solução, mas como tive que lidar com uma péssima conexão 3G, preferi o apache e descobri vários scripts de instância.
Então, aqui eu compartilho minha experiência.
http://helpcenter.epages.com/Doc/doc/apache2/README.multiple-instances
Eu corro uma instância por usuário webdav ... não muito escalável, mas trabalhar em uma equipe pequena é bom o suficiente.
Substitua myUser pelo seu usuário.
No Ubuntu 14.04
Então, eu executo um processo apache como o usuário myUser definido em / etc / apache2-myUser / envars
Edite ports.conf
Não consegui fazer com que a autenticação PAM no ubuntu 14.04 funcionasse, por isso preciso enganar com a autenticação básica, pois depois a envolvo em https com nginx
Em seguida, /etc/apache2-myUser/sites-available/000-default.conf
então o nginx proxy tem um truque com o cabeçalho Destination passando a pasta de ícones, permitindo que o webdav faça um downgrade agradável nos navegadores
Não há nenhuma obrigação de usar o nginx como proxy, o apache pode muito bem fazer o https, mas, ao entrar no problema de destino do proxy, senti que valia a pena mencioná-lo.
fonte
Também estou procurando uma solução semelhante.
Solução 1: O ambiente da área de trabalho (Gnome, KDE) pode ter widgets para expor uma determinada pasta pelo WebDAV. Isso funcionará enquanto o ambiente da área de trabalho estiver em execução e não for uma solução daemon.
Solução 2: Nada impede você de executar o Apache com sua própria vinculação de usuário em portas não privilegiadas acima de 1024. Basta escrever um arquivo de configuração ou copiar os que estão incluídos na sua distribuição em seu $ HOME / etc / httpd (apenas um exemplo), adicione DAV- configuração relacionada e execute-a como seu próprio usuário não root, como:
$ httpd -f $ HOME / etc / httpd
A execução como seus usuários garante que o Apache criará arquivos como você.
fonte