루트는 다른 사용자의 심볼릭 링크 소켓에 연결할 수 없습니다

루트는 다른 사용자의 심볼릭 링크 소켓에 연결할 수 없습니다

SSH_AUTH_SOCK저는 현재 생성한 정적 심볼릭 링크 에 oh-my-zsh의 ssh-agent 플러그인을 사용하고 있습니다 . 프록시 전달이 활성화된 SSH를 통해 연결할 때 파일은 /tmp/ssh-agent-$USER-screen다음에 심볼릭 링크됩니다 /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

심볼릭 링크를 성공적으로 테스트했습니다 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

더 이상 su심볼릭 링크에 액세스할 수 없지만 심볼릭 링크 대상은 제대로 작동합니다.

[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)

내 연구에 따르면 심볼릭 링크에 대한 권한은 평가되지 않지만 오히려 심볼릭 링크 대상에 대한 권한은 사용자(심지어 루트?)가 파일에 액세스할 수 있는지 여부를 결정하는 데 관련이 있는 것으로 나타났습니다. 그리고 심볼릭 링크 대상에 액세스하는 것은 완벽하게 작동합니다.

여기서 무엇이 잘못되었을 수 있습니까?

만일을 대비해 CentOS 7을 실행하고 있습니다. 감사합니다!


업데이트된 질문:

SSH_AUTH_SOCK수출됨

하지만 심볼릭 링크에 연결할 수 없다는 것은 중요하지 않다고 생각합니다 socat.

[root@router ~]# export | grep SSH
declare -x SSH_AUTH_SOCK="/tmp/ssh-agent-agross-screen"

SELinux

이것은 그것과 아무 관련이 없는 것 같습니다.

[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

~의 심볼릭 링크와 /tmp의 심볼릭 링크 비교

팁을 주신 @masm에게 감사드립니다. 내 홈 디렉토리의 심볼릭 링크는 작동하지만 /tmp의 심볼릭 링크는 작동하지 않습니다.

[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

답변1

fs.protected_symlinks=1범인은 다음과 같습니다.

[root@router ~]# sysctl fs.protected_symlinks
fs.protected_symlinks = 1
[root@router ~]# sysctl -w fs.protected_symlinks=0
fs.protected_symlinks = 0

[root@router ~]# socat -v - UNIX-CONNECT:/tmp/ssh-agent-agross-screen

[root@router ~]# sysctl -w fs.protected_symlinks=1
fs.protected_symlinks = 1

[root@router ~]# socat -v - UNIX-CONNECT:/tmp/ssh-agent-agross-screen
2016/01/09 01:46:21 socat[20591] E connect(3, AF=1 "/tmp/ssh-agent-agross-screen", 30): Permission denied

명예:https://askubuntu.com/questions/599719/how-can-i-set-a-symlink-from-tmp-mysql-sock

관련 정보