나는 그것을 사용하고 있다안시푸르원격 서버를 설정하기 위해 SSH 에이전트를 사용하여 git clone
저장소 로 전달합니다.bitbucket.orgsudo
다음을 포함하는 환경 변수를 유지하기 위해 디렉터리의 파일을 사용하고 있으므로 로컬 SSH 키를 사용합니다 .SSH_AUTH_SOCK
/etc/sudoers.d/
Defaults env_keep += SSH_AUTH_SOCK
이렇게 하면 이 환경 변수를 사용할 수 있게 됩니다 sudo
. 문제는 web
사용 가능한 소켓 파일에 액세스할 수 없는 다른 사용자 로 복제하려고 할 때입니다 SSH_AUTH_SOCK
.
0777
현재는 이 사용자에 대해 소켓 디렉터리의 소유권을 반복적으로 설정하고 있으므로 소켓 파일에 권한을 부여하지 않습니다 .
$ ls -l /tmp
drwx------ 2 web web 4096 Aug 7 09:09 ssh-PcIG22W1CM
이 모든 작업은 Ansible을 사용하여 수행되었지만 이 질문은 다른 상황에도 적용되므로 Ansible 코드를 공유하지 않겠습니다.
rwx
모든 사람에게 권한을 부여하지 않고 이 소켓 파일을 공유하는 가장 좋은 방법은 무엇입니까?
답변1
루트로서 다음을 사용하여 소켓을 브리지할 수 있습니다.
socat UNIX-LISTEN:/var/run/authsocket.sock,umask=077,user=web,fork "UNIX:$SSH_AUTH_SOCK"
리눅스에서, 이는 다른 사용자가 connect()
이 소켓에 액세스하는 것을 방지합니다.
Linux에서는 setfacl user:$user:w $SSH_AUTH_SOCK
소켓( )에 ACL을 설정하려고 할 수 있지만 OpenSSH 클라이언트가EUID 확인소켓에 대한 권한이며 소유자 및 루트 사용자에게만 허용됩니다.