Qual é a melhor maneira de compartilhar o soquete de autenticação SSH com outro usuário?

2

Estou usando Ansible para configurar um servidor remoto e estou usando o encaminhamento de agente SSH para git clone a repository from < hb="http://bitbucket.org"> bitbucket.org para usar minha chave SSH local, porque estou usando sudo Estou preservando a variável de ambiente SSH_AUTH_SOCK usando um arquivo em% diretório/etc/sudoers.d/ que contém:

Defaults env_keep += SSH_AUTH_SOCK

O que realmente torna essa variável de ambiente disponível ao usar sudo , o problema é quando eu quero clonar como outro usuário web que não tem permissão para acessar o arquivo de soquete disponível em SSH_AUTH_SOCK .

Atualmente, estou definindo a propriedade do diretório de soquete de forma recursiva para esse usuário, de modo que não forneço as permissões 0777 para o arquivo de soquete.

$ ls -l /tmp
drwx------  2 web web 4096 Aug  7 09:09 ssh-PcIG22W1CM

Tudo isso é feito usando o Ansible, mas não estou compartilhando o código Ansible, pois esse problema se aplica a qualquer outra situação.

Qual é a prática recomendada para compartilhar este arquivo de soquete sem conceder rwx permissões para todos?

    
por Pierre 07.08.2017 / 11:15

1 resposta

1

Como root, você pode conectar o soquete com:

socat UNIX-LISTEN:/var/run/authsocket.sock,umask=077,user=dev,fork "UNIX:$SSH_AUTH_SOCK"

No Linux , isso impedirá que outro usuário use connect() neste soquete.

No Linux, você pode ficar tentado a definir uma ACL no soquete ( setfacl user:$user:w $SSH_AUTH_SOCK ), mas isso não funcionará porque o cliente OpenSSH check o EUID do socket e só permite o dono e o root.

    
por 07.08.2017 / 11:53