我在set服务器(Apache)上有一个git存储库,它设置在用户a的主目录中。
git clone ssh://a@git_url:7999/path/to/repository/repo.gitgit存储库托管在stash-server上。认证通过用户a的ssh密钥工作。
现在,我正在尝试构建一个CGI脚本,它显示了该存储库上git log的一些摘录。这很有效,但我似乎无法在CGI脚本中运行git pull,因为它不是由用户a运行的,而是由用户nobody运行的。用户nobody没有权限读取由a克隆的git存储库的内容,也没有在存储服务器上设置ssh-key。
有没有一种方法可以从CGI脚本中运行git pull,使其“屏蔽”为用户a,以便能够拉入?
发布于 2016-07-19 23:34:15
你至少有三个选择。
nobody拥有的单独克隆。a拥有的克隆修改为assigned to a group,a和nobody都将cron作业作为a运行,以定期在存储库上运行git fetch。使存储库具有全局可读性。例如,您可能需要修改您的CGI程序,使其在origin/master而不是master下运行。对于选项1和2,您需要安排nobody能够访问Stash。一种可能性是为nobody创建一个无密码(未加密)的SSH密钥,并将公钥添加到Stash以进行授权。这确实带来了一些风险:任何获得nobody密钥副本的人都可以轻松地做nobody能做的任何事情。
https://stackoverflow.com/questions/18955443
复制相似问题