我在用着安西布尔用于设置远程服务器,我使用 SSH 代理转发到git clone
存储库bitbucket.org使用我的本地 SSH 密钥,因为我正在使用目录中的文件来sudo
保留环境变量,其中包含: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
作为 root,您可以使用以下命令桥接套接字:
socat UNIX-LISTEN:/var/run/authsocket.sock,umask=077,user=web,fork "UNIX:$SSH_AUTH_SOCK"
在 Linux 上,这将阻止其他用户访问connect()
此套接字。
在 Linux 上,您可能想在套接字 ( setfacl user:$user:w $SSH_AUTH_SOCK
) 上设置 ACL,但这不起作用,因为 OpenSSH 客户端检查 EUID套接字的权限,并且只允许所有者和根用户使用。