我在Bitbucket上有一个名为“foo-apps”的Git存储库。我有一个Linux Web服务器,其中包含此存储库的本地克隆,我希望此服务器的关联Apache网页通过Bash脚本与此存储库(例如git pull
和git checkout
)执行一些Git命令。问题是,只有用户“foo”有权与“foo-apps”存储库关联,并且网页以Apache用户“www-data”运行。
似乎www-data可以在本地存储库上执行git log
和其他一些命令,但不能执行git pull
或git checkout
命令。 (只是你知道我的系统:我有一个包含JavaScript的HTML文件,其中包含一个AJAX请求,它调用一个PHP文件,该文件调用我的Bash脚本,其中包含Git命令。)
当Web界面触发进程时,我可以通过哪些方法成功获取Git命令?我并不反对任何有效的建议,即使它们包括对我的系统进行全面改革......但是,我希望用我已经得到的最简单有效的解决方案。
以下是我想过的一些想法,并尝试了一下。他们似乎都没有工作,但请记住,我只是“半试过”他们,因为我没有信心我使用首选方法:
sudo
,su
等。(我认为这种想法更像是我想要的......我不喜欢我对Bitbucket存储库的设置有很多控制权。我也可以在脚本中输入密码。)此网络服务器位于封闭的网络上,安全性对我来说并不是一个高度关注的问题。
我不知道它是否有用,但以下是我在尝试这些方法时遇到的一些与Git相关的主要错误:
error: cannot open .git/FETCH_HEAD: Permission denied
fatal: BUG: get_tempfile_fd() called for inactive object
/usr/bin/git: /usr/bin/git: cannot execute binary file