SVN + SSH Security

9

Eu uso snv + ssh com autenticação baseada em chave. Agora, para que qualquer um dos meus usuários svn acessem o repositório através do Subversion, devo configurar os arquivos repo para que possam ser lidos e gravados no sistema de arquivos para esses usuários.

Eu quero impedir que os usuários possam excluir o banco de dados de recompra quando estiverem logados no servidor via ssh, mas ainda assim possam fazer o checkout e confirmar o código.

Pensamentos sobre como posso fazer isso?

    
por Brad Smith 23.05.2009 / 07:14

5 respostas

4

Para acessar uma URL svn + ssh, o cliente svn inicia uma instância svnserve usando "ssh -q user @ host svnserve -t" e fala com essa instância através de stdin / stdout.

Se seus usuários precisarem de acesso ssh normal, você ainda poderá impedi-los de acessar o repositório, limitando o acesso a um usuário (chown -R svnserve: svnserve repo; chmod -Rg-rwx, o-rwx repo) e substituindo o comando svnserve por este setuid / setgid svnserve wrapper programa .

    
por 20.12.2009 / 17:40
10

Em um ambiente de usuário compartilhado, eu recomendaria configurar um servidor Subversion real ( svnserve ou através do Apache). Nesse ambiente, os usuários individuais não precisam acessar os arquivos do repositório porque o acesso a todos os arquivos é feito sob a conta do usuário do processo do servidor.

O livro do Subversion tem uma seção sobre Escolhendo uma Configuração do Servidor , que pode Socorro. Daquela seção (ênfase minha):

If you have an existing infrastructure that is heavily based on SSH accounts, and if your users already have system accounts on your server machine, it makes sense to deploy an svnserve-over-SSH solution. Otherwise, we don't widely recommend this option to the public. It's generally considered safer to have your users access the repository via (imaginary) accounts managed by svnserve or Apache, rather than by full-blown system accounts.

    
por 23.05.2009 / 08:41
4

Este site tem alguns truques interessantes: link

Se nada disso funcionar para você, talvez uma solução alternativa funcione? Você pode fazer um backup do repositório toda vez que alguém fizer algo adicionando algo assim aos ganchos de commit: sudo rsync -a / meu / repo / caminho / meu / fechado / caminho /

    
por 23.05.2009 / 07:58
2

Eu vejo duas direções possíveis para atacar esse problema:

  • fornece acesso limitado ao shell, por exemplo os usuários só podem usar svn com suas contas (pode precisar de outra conta se o acesso ao shell também for necessário para outros propósitos) - Eu encontrei um few interesting faz referência a googling para svnonly . Nota: não tentei eu mesmo.
  • migre para o subversion por meio de https, adicionando certificados de cliente. Eu vi pessoas discutindo isso, mas nunca fiz isso sozinho. Desvantagem: requer distribuição de certificados de cliente, além das chaves ssh.
por 23.05.2009 / 08:50
1

eu concordo com Greg e Olaf - vá para o acesso https. Eu estou usando essa configuração há algum tempo e não vejo realmente qualquer desvantagem do mesmo.

você obterá benefícios adicionais de controle de acesso refinado no repositório - para que você possa tornar algumas partes somente leitura e algumas completamente inacessíveis para usuários selecionados.

    
por 23.05.2009 / 12:20

Tags