1

阅读互联网上的所有教程和文章。作为一个简单的工作流程,我了解到我们可以在我们的实时服务器上创建一个push存储库,并从本地存储库等对其进行更新。

我的问题和担忧是,由于实时服务器也将是一个 Git 存储库并且它会有.git文件夹,这不是安全问题吗?如何防止访问它?

更新

假设我在服务器上的活动文件夹是/www,我可以从浏览器http://myserver.com访问它,所以我也可以访问http://myserver.com/.git/HEAD ??? 如何预防?

4

3 回答 3

4

您可能需要考虑分离存储库和工作树。

例如,在 Web 服务器所服务的文件夹之外的某个位置,运行git init --bare. 然后config将此目录中的文件替换为以下内容(其中/path/to/web/root应放置文件的路径)。

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    worktree = /path/to/web/root
[receive]
    denycurrentbranch = ignore

最后添加hooks/post-receive以下内容并将其标记为可执行

#!/bin/sh
git checkout -f

现在,每当您推送到存储库时,文件都会被签出到正确的位置,您永远不必担心存储库被意外提供。

于 2012-11-24T05:36:04.837 回答
0

Git 不关心访问您的 .git 文件夹的安全性 - 这是您的责任和操作系统强制访问它们。

基本上,如果您可以 ssh 进入您的服务器并访问 .git 文件夹 - 您可以做任何您想做的事情,git 也是如此。

处理用户、密码、ssh 密钥管理等很方便的方法就是安装Gerrit。Gerrit 是用 Java 实现的 Git 服务器,但它也恰好是很棒的代码审查引擎。代码审查部分非常有用,但是如果您不想使用,则不必使用它。您可以稍后使用代码审查,但提供 git 服务器、web ui 和用户/密钥管理、控制对不同 git 存储库的访问权限的 UI 非常好。

于 2012-11-24T04:28:12.800 回答
0

喜欢公认的答案,这是使用 git hooks 的好例子。

我是如何解决这个问题的(我很久以前也发过一个问题,网站是否应该是存储库)是,经过思考,我决定创建git发布,zip-em-up,并解压缩成“live”文件夹。

当然,使用帮助脚本和 git 别名。

我有几个脚本,例如 rgitpropup(它将分支从地面合并到 master,并推送到 origin)和 rgitrelease,它创建 GPG 签名版本,使用 dir 前缀作为参数,并将其压缩。

我给 propup 脚本加上了别名(当别名脚本时,你在它们前面加上“!”,顺便说一句。)

我想用钩子你也可以管理安装/解压缩到“live”目录......

编辑:archive是一个 git 命令,它内置了对压缩为存档格式的支持。通常它与命令结合使用,该tag命令具有对 pgp/gpg 签名的内置支持(gpg 通常是在 git 中进行数字签名的方式,不要与签名混淆)

于 2018-11-21T14:29:26.670 回答