Subversion e mod_dav_svn: Por que tornar www-data o dono dos arquivos em vez do root?

4

Eu configurei um servidor Subversion dedicado com Apache e mod_dav_svn no Ubuntu 9.10 Server, e eu tenho tudo funcionando bem neste momento. No entanto, notei que, quando se trata de atribuir as permissões de arquivo corretas ao diretório do repositório, a maioria dos tutoriais indica que você faça algo assim:

sudo chown -R www-data:www-data /svn/myrepo # make www-data the owner of the repo so Apache
                                            # can write to it
sudo chmod -R g+ws /svn/myrepo  # Give the www-data group write access as well, and enable
                                # setgid so that new directories have that group

Agora, eu fiz um pouco diferente. Eu criei um novo grupo subversion , e fiz com que o proprietário do repositório, em seguida, eu e eu mesmo www-data para esse grupo, o raciocínio é que desta forma eu posso editar os arquivos de configuração em /svn/myrepo/conf e os scripts gancho em /svn/myrepo/hooks , e também mantém o Apache e o Subversion um pouco mais separados um do outro. Eu vi outros tutoriais recomendando algo semelhante, mas depois digo para você fazer isso:

sudo chwown -R www-data:subversion /svn/myrepo
sudo chmod -R g+ws /svn/myrepo

Estes mesmos tutoriais implicam que você está criando o grupo subversion especificamente para manter o Subversion e o Apache separados principalmente uns dos outros, então por que eles mudam e tornam www-data o proprietário dos arquivos? Existe algum bom motivo para tornar www-data o proprietário dos arquivos do repositório? Por que não apenas root o proprietário? Parece que manter www-data como o proprietário do repositório liga desnecessariamente o Subversion "demais" ao Apache. Existe algum bom motivo para tornar o proprietário www-data em vez de root , contanto que o grupo ainda seja subversion ?

    
por Mike Spross 13.01.2010 / 17:10

2 respostas

4

Normalmente, você não deseja que o root seja o proprietário do repositório, pois isso significa que o apache (httpd) deve estar sendo executado como root para acessar o repositório svn, o que geralmente é considerado um risco de segurança.

Na minha experiência, você interage principalmente com o subversion via apache. Como esse é o caso, parece mais fácil e natural deixar que o apache (www-data) seja o proprietário do repositório do subversion. Se você criou seu repositório subversion em uma estrutura de diretório separada de seus sites, não deve haver confusão sobre quais arquivos são usados para o quê. Por exemplo, eu tenho / data / www para meus sites e / data / svn para meus repositórios svn.

Depois, para permitir a si mesmo a capacidade de modificar os arquivos de configuração do repositório e ligar os scripts, faça-se membro do grupo www-data e execute o seguinte:

sudo chmod -R g+ws /svn/myrepo

como você mencionou acima e você está pronto para ir.

Eu não vejo um benefício em separar o proprietário do repositório svn do usuário do apache, mas se você realmente insistisse em fazer isso, você poderia criar um usuário do subversion além do grupo do subversion e tornar o proprietário do / svn / myrepo ser subversão: subversão. Em seguida, basta se tornar um membro do grupo subversion e modificar as permissões do diretório conforme acima.     

por 13.01.2010 / 18:30
2

IIRC, o Apache só precisa de acesso de gravação aos diretórios "dav", "db" e "locks". Não importa se é por conta do usuário ou do grupo. Não há razão para o Apache ter acesso de gravação a "conf" e "hooks" na maioria dos casos.

    
por 13.01.2010 / 17:36