从 CGI-Script 中提取的 git 由 'nobody' 运行



我在网络服务器(Apache)上有一个git存储库,该存储库设置在用户a的主目录中。

git clone ssh://a@git_url:7999/path/to/repository/repo.git

git 存储库托管在存储服务器上。身份验证通过用户 a 的 ssh 密钥进行。

现在我正在尝试构建一个 CGI 脚本,它向我展示了该存储库中git log的一些摘录。这几乎有效,但我似乎无法在 CGI 脚本中git pull,因为它不是由用户a运行,而是由用户nobody运行。用户nobody没有权限读取a克隆的 git 存储库的内容,也没有在存储服务器上设置 ssh 密钥。

有没有办法从 CGI 脚本中运行git pull,使其"掩饰"为用户a以便能够拉取?

您至少有三个选项。

  1. 创建nobody拥有的单独克隆。
  2. 修改a拥有的克隆,以分配给anobody都属于的组。
  3. 创建一个以a身份运行的 cron 作业,以定期在存储库上运行git fetch。使存储库全局可读。例如,您可能需要修改CGI程序以origin/master而不是master进行操作。

对于选项 1 和 2,您需要安排nobody访问 Stash。一种可能性是为nobody创建无密码(未加密)SSH 密钥,并将公钥添加到 Stash 以进行授权。这确实会带来一些风险:任何获得nobody密钥副本的人都可以轻松做任何nobody能做的事情。

最新更新