Considere um servidor que hospede vários repositórios Git:
$ ls -l /opt/git/
drwxrwxr-x 7 ubuntu root 4096 Jan 2 2014 george.git
drwxrwxr-x 7 ubuntu root 4096 Dec 29 2013 john.git
drwxrwsr-x 7 ubuntu root 4096 Jul 4 2013 paul.git
drwxrwsr-x 7 ubuntu root 4096 Jun 30 2013 ringo.git
Até agora, todos os desenvolvedores tinham acesso a todos os repositórios do Git via SSH. Agora estou adicionando um desenvolvedor que deve ter acesso somente ao john.git
repo. Eu criei um usuário Linux yoko
, mas não sei como devo deixar yoko
acessar o diretório /opt/git/john.git
da maneira mais segura sem permitir que ele acesse os outros diretórios em /opt/git/
.
Qual é a maneira canônica de restringir o acesso como tal?
Minha inclinação é tornar o john.git
como grupo foobar
e adicionar esse grupo aos grupos do usuário yoko
. No entanto, o que acontece se mais tarde eu precisar adicionar outro usuário que possa acessar dois repos? Por exemplo, talvez eu queira adicionar o usuário cynthia
com acesso a ambos os john.git
e paul.git
. Eu deveria ter um grupo separado para cada repositório do Git? Eu pude ver que ficar muito difícil de gerenciar
Observe que esses usuários devem ter acesso a nada além de seus próprios diretórios /home/user/
e, além disso, ao (s) repo (s) do Git que são permitidos. Se houver uma maneira de fazer uma ligação simbólica, ou seja, /home/yoko/john.git
to /opt/git/john.git
de uma maneira que impeça o acesso ao restante de /opt/git/
, o melhor seria, mas não consigo configurar o sistema como tal.
O servidor está executando o Ubuntu Server 12.04, mas eu poderia atualizá-lo para o 14.04, se houver necessidade. Os usuários se conectam via SSH usando chaves RSA, sem senha. Eles estarão executando git pull
e git push
no servidor, nada mais.