Desculpe por essa pergunta "estúpida", mas não consigo encontrar uma solução na internet. Por favor me ajude.
Estou usando o Subversion em um servidor Linux para manter sob controle de versão os arquivos de um projeto de website que estou mantendo.
Esta é minha configuração:
Pasta do projeto (uma cópia de trabalho do repositório no servidor, para acessar o projeto e ver o site com um navegador - o Apache aponta para esse diretório como DocumentRoot):
/var/projects/prj
Pasta do repositório:
/var/repo/prjrepo
Quando instalei o SVN ( apt-get install subversion libapache2-svn
), ele não criou nem a subversão do usuário nem a subversão do grupo. Eu não entendo o porquê.
Eu uso o TortoiseSVN no Windows para fazer o checkout / update / commit.
Eu uso HTTP para me conectar a repositórios com uma lista de usuários autorizados:
http://1.2.3.4/svn/prjrepo
A lista de usuários autorizados para o repositório é salva em um arquivo htpasswd com a lista de usuários e suas senhas MD5.
Claro que o Apache é executado como www-data.
A pasta prj é de propriedade de root: root e outros possuem apenas acesso rx aos arquivos, exceto para aqueles diretórios que o www-data precisa escrever (upload de arquivos, por exemplo).
A pasta do repositório é de propriedade de um usuário e grupo que eu criei svn: svn, mas talvez isso seja insuspeito. As permissões são rwx para usuário e para grupo e nada para outros. Além disso, forcei g + s em todas as pastas, para que o grupo svn sempre seja o proprietário de todos os novos arquivos.
O problema é que quando eu envio um arquivo para o repositório, ele diz que ele falhou devido a "permissão negada". Eu posso entender o porquê: a pasta do repositório é de propriedade do svn: svn, mas o Tortoise faz uma requisição HTTP para o servidor quando ele se compromete. As solicitações HTTP são executadas como www-data, que obviamente não têm permissões para o repositório.
Também adicionei uma ação de pós-commit para atualizar a cópia de trabalho (pasta prj) em cada commit. Se eu mudar o grupo de proprietários do repositório para www-data, o Tortoise é capaz de confirmar, mas é claro que a ação de pós-commit continua com erro porque o www-data não pode gravar TODOS os diretórios e arquivos na pasta prj. E isso está correto (o www-data não pode escrever arquivos que tem apenas para ler - é o Apache, é o site…).
Então, eu realmente não consigo descobrir como configurar corretamente as permissões nas pastas para que tudo funcione corretamente. Lembre-se que o www-data NÃO DEVE ter acesso de gravação ao prj porque ele tem apenas que ler esses arquivos (exceto algumas pastas como a usada para uploads de arquivos, por exemplo).
Outra questão: agora, o Apache é configurado para permitir acesso ao repositório apenas para os usuários definidos em um arquivo htpasswd específico criado para essa finalidade (veja acima). Existe alguma maneira de tornar o repositório acessível a alguns usuários do LINUX sem definir novos usuários apenas para o acesso ao repositório? Isso é possível? Como?