Manter a propriedade em um diretório, independentemente de quem adiciona / edita arquivos dentro dele

1

Temos um diretório de desenvolvimento compartilhado pela nossa equipe. Toda vez que um usuário adiciona um arquivo, a propriedade muda para esse usuário. Existe uma maneira de garantir que o proprietário dos arquivos adicionados em um diretório permaneça sempre o mesmo?

    
por gAMBOOKa 16.06.2011 / 09:34

3 respostas

4

Se você estiver acessando o diretório via SMB usando o Samba, poderá usar o parâmetro force user em smb.conf . Caso contrário, você não poderá forçar o proprietário . No entanto, se o problema é meramente que os usuários não podem editar os arquivos uns dos outros no diretório, você pode corrigi-lo fazendo isso:

  1. Faça com que todos usem umask 002 (ou 007). Verifique /etc/profile e /etc/login.defs . Isso garantirá que os arquivos sejam graváveis em grupo.
  2. Tornar o diretório (e todos os subdiretórios) de propriedade de um grupo específico do qual todo membro da equipe é membro.
  3. Cria o diretório (e todos os subdiretórios) setuid group (" chmod g+s "). Este é um recurso especial no Unix que fará com que todos os novos arquivos pertencentes ao grupo comum.
por 16.06.2011 / 11:09
1

Não, mas você pode tornar o diretório setgid para que o proprietário do grupo tenha a propriedade de grupo de todos os arquivos criados nele.

    
por 16.06.2011 / 09:37
0

A solução padrão para esse problema - compartilhar um repositório de controle de versão entre vários usuários - é fazer com que todos interajam com o repositório por meio de um servidor em execução como um usuário dedicado, e não através do sistema de arquivos. Como você descobriu, usar o sistema de arquivos é problemático.

Você não especificou qual sistema de controle de versão está usando, mas com o Suversion ou o git você configuraria um usuário dedicado em seu sistema, e então faria seus desenvolvedores acessarem o repositório através do ssh. Com o Subversion você usaria svn+ssh urls; há alguma documentação no manual do svn .

O comportamento padrão do git é usar o ssh para acessar repositórios "remotos". Eu coloquei "remote" entre aspas, porque no seu caso você estará executando o "servidor" no sistema local.

    
por 16.06.2011 / 15:49