Eu uso o plugin ssh-agent do oh-my-zsh para ter um symlink estático no meu atual SSH_AUTH_SOCK
criado. Ao se conectar por meio do SSH com o encaminhamento de agente, o arquivo /tmp/ssh-agent-$USER-screen
é vinculado a /tmp/ssh-<whatever>/agent.<some numbers>
:
agross@router ~
$ ls -la /tmp/ssh-agent*
lrwxrwxrwx. 1 agross agross 30 Jan 7 21:35 /tmp/ssh-agent-agross-screen -> /tmp/ssh-uoof1WiDSw/agent.7745
agross@router ~
$ ls -la /tmp/ssh-uoof1WiDSw/
srwxr-xr-x. 1 agross agross 0 Jan 7 21:35 agent.7745
Eu testei o symlink com sucesso com ssh-add -l
:
agross@router ~
$ ssh-add -l
2048 15:5a:dd... /home/agross/.ssh/id_rsa (RSA)
agross@router ~
$ echo $SSH_AUTH_SOCK
/tmp/ssh-agent-agross-screen
Assim que eu su
não consigo mais acessar o link simbólico, mas o destino do link simbólico funciona bem.
[root@router ~]# socat -v - UNIX-CONNECT:/tmp/ssh-agent-agross-screen
2016/01/07 21:51:04 socat[16054] E connect(3, AF=1 "/tmp/ssh-agent-agross-screen", 30): Permission denied
[root@router ~]# socat - UNIX-CONNECT:/tmp/ssh-uoof1WiDSw/agent.7745
<empty line is printed so I guess I'm connected>
[root@router ~]# echo $SSH_AUTH_SOCK
/tmp/ssh-agent-agross-screen
[root@router ~]# ssh-add -l
Could not open a connection to your authentication agent.
[root@router ~]# SSH_AUTH_SOCK=/tmp/ssh-uoof1WiDSw/agent.7745 ssh-add -l
2048 15:5a:dd... /home/agross/.ssh/id_rsa (RSA)
Eu pesquisei que as permissões no symlink não são avaliadas, ao invés disso, as permissões no symlink target são relevantes para decidir se um usuário (root?) pode acessar um arquivo. E acessar o alvo do symlink funciona perfeitamente.
Qual poderia ser o problema aqui?
Eu estou rodando o CentOS 7, caso isso seja importante. Obrigada!
Atualizado após perguntas:
SSH_AUTH_SOCK
é exportado
Eu não acho que isso importe não sendo capaz de se conectar ao symlink com socat
, embora.
[root@router ~]# export | grep SSH
declare -x SSH_AUTH_SOCK="/tmp/ssh-agent-agross-screen"
SELinux
Parece que isso também não importa.
[root@router ~]# getenforce
Enforcing
[root@router ~]# setenforce 0
[root@router ~]# socat - UNIX-CONNECT:/tmp/ssh-agent-agross-screen
2016/01/08 09:54:09 socat[21673] E connect(3, AF=1 "/tmp/ssh-agent-agross-screen", 30): Permission denied
[root@router ~]# setenforce 1
[root@router ~]# socat - UNIX-CONNECT:/tmp/ssh-agent-agross-screen
2016/01/08 09:54:45 socat[21675] E connect(3, AF=1 "/tmp/ssh-agent-agross-screen", 30): Permission denied
Symlink em ~ vs symlink em / tmp
Obrigado ao @masm pelo ponteiro. Um symlink no meu diretório home funciona, enquanto o link simbólico em / tmp não funciona.
[root@router ~]# ls -lZ /home/agross
lrwxrwxrwx. agross agross unconfined_u:object_r:user_home_t:s0 foo -> /tmp/ssh-QlnhyjUQDp/agent.15895
[root@router ~]# socat -v - UNIX-CONNECT:/home/agross/foo
<empty line>
[root@router ~]# ls -lZ /tmp
lrwxrwxrwx. agross agross unconfined_u:object_r:user_tmp_t:s0 ssh-agent-agross-screen -> /tmp/ssh-QlnhyjUQDp/agent.15895
[root@router ~]# socat -v - UNIX-CONNECT:/tmp/ssh-agent-agross-screen
2016/01/08 18:14:48 socat[15989] E connect(3, AF=1 "/tmp/ssh-agent-agross-screen", 30): Permission denied