Git: push via ssh para um repositório de raiz com logins de raiz ssh desativado

1

isso é possível?

Resumo, estou executando o mestre de marionetes em um servidor e, idealmente, queremos logins root via ssh desativado, queremos forçar todo o acesso via sudo se o acesso root for necessário

no entanto, temos fantoche instalado usando um repositório git para gerenciar os manifestos, este repo é atualmente de propriedade de raiz e atualmente eu só sei de 2 soluções

  1. (menos ideal) permite o acesso root somente via autenticação de chave - se sim, o que posso bloquear para permitir somente os comandos git push?
  2. possui o repositório em / etc / puppet como um proprietário diferente - o fantoche funcionará de forma confiável com isso?
  3. A configuração e o comando relevantes do Sudo podem contornar isso?
por anthonysomerset 17.11.2011 / 17:29

3 respostas

1

Para responder a minha própria pergunta, eu olhei para a informação que o Daniel forneceu, mas ele não registrou, eu pesquisei o git group write e deparei com link

dando a propriedade do meu grupo de repositórios por um grupo comum (fantoche) e adicionando os usuários relevantes a esse grupo e, em seguida, executando:

chmod -R g+swX /etc/puppet/
cd /etc/puppet
git repo-config core.sharedRepository true

funcionou perfeitamente para mim, eu posso empurrar para um repositório de propriedade da raiz, o fantoche ainda funciona e eu não uso um login root ssh para fazer isso

Win, Win

UPDATE

Eu tive esse problema novamente também com o fantoche, mas procurei manipulá-lo de uma maneira melhor e resolvi isso alternativamente com o bit correto da configuração do sudoers adicionando o seguinte após a linha env_reset:

Defaults    env_keep += SSH_AUTH_SOCK

isso me permite executar um comando assim:

cd /etc/puppet && sudo git pull && sudo git submodule sync && sudo git submodule update --init --recursive

digamos um Rakefile (meu usuário já tem permissões nopasswd via Sudo) e tudo funciona de acordo. O que eu consegui foi basicamente passar meu ssh-agent encaminhado através do ssh-key para o usuário root e então fazer um git pull como se eu estivesse conectado como meu usuário não-root sem armazenar minha chave ssh sob o usuário root (ou meu não conta privilegiada no servidor) Win Win

    
por 17.11.2011 / 19:13
2

O Git repos pode ser configurado para manter as permissões de gravação do grupo (opção --shared ao criar o repositório). Usando isso, você pode adicionar quaisquer contas que precisem acessar o repositório para um grupo específico, para que possam acessá-lo.

Eu faço isso para o nosso servidor git. Eu também coloco um link simbólico no diretório pessoal de cada usuário para cada repositório que eles acessam também, para que todos possam acessar com uma URL relativa.

    
por 17.11.2011 / 18:19
1

O que eu gosto de fazer é ter um repositório de git "staging" nu no mestre de marionetes que eu envio para o que roda vários ganchos de pré-commit e post-commit. Ganchos de pré-commits verificam a sintaxe do puppet (para que código com bad syntax não possa ser confirmado) e hooks post-commit dropam o código em / etc / puppet, e reiniciam o Apache (para corrigir um bug antigo no fantoche 2.6)

Ter uma área de teste que você envia faz com que o processo de implantação do código de marionetes seja mais atômico. Caso contrário, pode ser possível para o seu puppetmaster estar servindo código com dedicação parcial aos clientes.

    
por 21.11.2011 / 18:21