Subversion e SVN + SSH Permissions

3

Eu quero configurar alguns repositórios do Subversion, para serem acessados via SVN + SSH, para que cada repositório seja de propriedade de um grupo diferente e só seja acessível para leitura e escrita pelos membros do grupo. Foi o que eu fiz até agora:

sudo addgroup myproject
sudo mkdir -p /svn/myproject
sudo svnadmin create /svn/myproject
sudo chown -R :myproject /svn/myproject
sudo chmod -R g+rws /svn/myproject

No entanto, algo com minha configuração não está funcionando corretamente ...

  1. Mesmo que userone não seja membro do grupo myproject , userone pode fazer o checkout de todo o repositório. (É porque userone é membro do grupo sudo ?)
  2. usertwo é um membro do grupo myproject , mas não pode se comprometer com o repositório devido a um erro: permission denied while accessing /svn/myproject/db/revprops/__something__/__something__

O ponto 1) é um problema porque pode significar que todos com acesso shell à máquina podem fazer o checkout do código. O ponto 2) é problemático porque um usuário com (aparentemente) as permissões corretas não pode se comprometer com o repositório.

O que estou fazendo de errado nessa configuração?

    
por NetStudent 06.06.2012 / 12:55

1 resposta

3

Even though userone is not a member of the myproject group, userone can checkout the whole repository.

Os repositórios são provavelmente legíveis pelo mundo. Você pode mudar isso executando

sudo chmod -R o-rws /svn/myproject

(Is this because userone is member of the sudo group?)

Não, ser membro do grupo sudo significa apenas que você pode obter privilégios de root por meio de sudo . O SVN não tiraria proveito disso. (Mas, mais geralmente, se um usuário tem privilégios de root em uma máquina, eles podem ler qualquer coisa nele, você não pode pará-los.)

usertwo is a member of the myproject group, but cannot commit to the repository

O que provavelmente aconteceu foi que userone cometeu alguns arquivos novos no repositório e eles acabaram sendo propriedade dele e não graváveis pelo grupo do projeto.

A solução usual para isso é fazer com que todos os diretórios dentro do projeto tenham o bit setgid definido. Isso forçará todos os arquivos criados dentro deles pertencerem ao grupo de projetos.

sudo chmod -R g+s /svn/myproject

Então você também precisa ter certeza de que a umask de todos esteja configurada para 002, para que os arquivos sejam graváveis em grupo por padrão.

Isso tudo fica bastante complicado e frágil, então pode ser mais fácil servir o repositório SVN via https apenas.

    
por tumbleweed 06.06.2012 / 19:08