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.