Fornecendo acesso HTTPS ao servidor SFTP multiusuário

2

Eu tenho um servidor SFTP rodando no Ubuntu Server 12.04 LTS. Todos os usuários no grupo 'sftponly' são chrootados em seu diretório inicial após a conexão. Como o OpenSSH requer que o ChrootDirectory seja de propriedade de root, cada usuário tem uma subpasta chamada 'upload' para a qual eles têm permissão para gravar. Isso tudo funciona bem e os usuários estão restritos a sua própria área, estejam eles cientes disso ou não.

Gostaria agora de fornecer acesso via HTTP / HTTPS para que os usuários baixem arquivos usando apenas um navegador da web. Eu tenho procurado o mod_userdir do Apache, mas isso parece ser voltado mais para o acesso anônimo. Eu gostaria que o sistema exigisse que o usuário autenticasse antes de poder fazer o download de sua pasta. Também deve permitir que eles façam o download da pasta.

Por exemplo, um usuário acessaria o link e precisaria autenticar usando as mesmas credenciais que usariam quando conectando via SFTP para baixar o arquivo.

Eu tenho procurado soluções como criar um host virtual separado para cada usuário e criar manualmente arquivos htaccess em cada diretório home, mas eles parecem meio desordenados.

Qualquer sugestão muito apreciada.

    
por dnewt 19.07.2013 / 15:04

1 resposta

1

Você precisa do Apache para se integrar ao PAM para sua autenticação. Isso é feito facilmente através de pwauth e mod_authnz_external . Você pode ler mais sobre os detalhes aqui:

O problema é que não consigo ver nenhuma maneira de ligar isso ao módulo userdir . pwauth permitirá que você especifique requires user <username> , mas não consigo ver como combinar os dois. E acredite em mim quando digo que procurei.

Acho que o método mais fácil para isso seria manter uma entrada manualmente para cada usuário:

<Directory /users/abed/>
    DocumentRoot /home/abed/public_html/
    AuthType Basic
    AuthName "Restricted Area"
    AuthBasicProvider external
    AuthExternal pwauth
    Require user abed
</Directory>

<Directory /users/britta/>
    DocumentRoot /home/britta/public_html/
    AuthType Basic
    AuthName "Restricted Area"
    AuthBasicProvider external
    AuthExternal pwauth
    Require user britta
</Directory>

E assim por diante. Você pode até escrever algo para regenerar isso periodicamente. Não é uma estrutura de modelo difícil de seguir.

    
por Oli 19.07.2013 / 15:31