Minha aplicação é executada como sudo, como faço para git pull usando as credenciais do meu usuário?

0

Eu executo meu aplicativo como sudo, mas preciso usar um git pull com base nas informações dos arquivos ~/.gitconfig e ~/.netrc que meu usuário atual possui. Como faço isso sem colocar minhas credenciais na conta de usuário root.

    
por ForeverConfused 08.10.2015 / 22:09

1 resposta

1

De acordo com a página man do sudo , alterar a variável de ambiente HOME pode ser o comportamento padrão, mas não precisa ser. Se a variável de ambiente HOME não for atualizada, você provavelmente não alterará nada e funcionará. Verifique a página de manual de sudoers para obter mais informações sobre sudo políticas, incluindo a atualização da variável de ambiente HOME .

Esta pergunta do StackOverflow aborda a localização do diretório base de um usuário programaticamente. Você poderia usar essa abordagem (obviamente não usando a abordagem de variável de ambiente HOME , se isso for alterado por sudo ). Observe que getuid retorna o UID "real" do processo de chamada, que será o usuário desejado ( geteuid obtém o UID efetivo , que no seu caso seria root). Você pode então encontrar os arquivos de configuração e credenciais do usuário, e usá-los, ou possivelmente apenas (temporariamente ou de outra forma) editar a variável de ambiente do processo ' HOME antes de chamar git funções.

Você também pode fazer com que seu programa use um caminho para um arquivo de configuração e / ou credencial git como um parâmetro. Os usuários precisariam fornecer esses dados manualmente, mas você poderia passá-los para git em seu programa.

Advertência importante: Todas essas sugestões operam no pressuposto de que o usuário pode ser confiável (ou seja, se o usuário puder chamar o sudo, ele poderá assumir completamente o sistema).

Se o seu programa usa uma política sudo personalizada que permite que ele seja chamado por usuários não confiáveis (ou é a própria raiz do setuid e executável por usuários não confiáveis), então você precisa ser muito mais cuidadoso. Por exemplo, um usuário não confiável que deseja acessar algo usando as credenciais git de outro usuário pode criar um link simbólico para o arquivo de configuração / credencial do usuário alvo e usar seu programa (ou pode passar o perfil do outro usuário, se você foi com a abordagem de argumento de linha de comando). A melhor maneira de atenuar essa ameaça, além de "não executar seu programa como root", é usar seteuid(getuid()) para diminuir temporariamente seu UID efetivo para o UID real do usuário, o que significa tentar acessar arquivos de outros usuários em acesso negado. Você pode restaurar o UID efetivo depois, se necessário.

    
por 09.10.2015 / 00:47

Tags