1

インターネット上のすべてのチュートリアルと記事を読む。簡単なワークフローとして、ライブサーバーにベアpushリポジトリを作成し、ローカルリポジトリなどから更新できることを理解しました.

私の質問と懸念は、ライブサーバーもGitリポジトリになり、.gitフォルダーがあるため、それはセキュリティ上の問題ではないでしょうか? それへのアクセスを防ぐ方法は?

アップデート

Suppose my live folder on server is /www and I can access it from the browser http://myserver.com so I can also access http://myserver.com/.git/HEAD ??? How to prevent it?

4

3 に答える 3

4

リポジトリと作業ツリーを分離することを検討することをお勧めします。

たとえば、Webサーバーが提供するフォルダの外で、を実行しますgit init --bareconfig次に、このディレクトリ内のファイルを次のように置き換えます(ここ/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 フォルダーへのアクセスのセキュリティを気にしません。それらへのアクセスを強制するのはユーザーの責任であり、OS です。

基本的に、サーバーに ssh して .git フォルダーにアクセスできる場合は、必要なことを何でも実行でき、git も同様です。

ユーザー、パスワード、ssh キー管理などを処理する非常に便利な方法は、Gerritをインストールすることです。Gerrit は Java で実装された Git サーバーですが、優れたコード レビュー エンジンでもあります。コード レビュー パーツは非常に便利ですが、使いたくない場合は使用する必要はありません。後でコード レビューを使用するように移動できますが、Git サーバー、Web UI、およびユーザー/キー管理が提供され、さまざまな Git リポジトリへのアクセス許可を制御する UI は非常に優れています。

于 2012-11-24T04:28:12.800 に答える
0

受け入れられた答え、gitフックの使用の素晴らしい例が大好きです。

この問題をどのように回避したか (ウェブサイトがリポジトリであるべきかどうかという質問をずっと前に投稿しました) は、考えた結果、git リリースを作成し、zip-em-up し、「ライブ」に解凍することにしました。フォルダ。

もちろん、ヘルパー スクリプトと git エイリアスを使用します。

rgitpropup (ブランチをゼロからマスターにマージし、オリジンにプッシュする) や、GPG 署名付きリリースを作成し、引数として dir プレフィックスを使用して圧縮する rgitrelease など、いくつかのスクリプトがあります。

propup スクリプトに別名を付けました (スクリプトに別名を付けるときは、スクリプトの前に「!」を付けます)。

フックを使用すると、「ライブ」ディレクトリへのインストール/解凍も管理できると思います...

EDIT:archiveは git コマンドであり、アーカイブ形式への圧縮のサポートが組み込まれています。tag通常、これは pgp/gpg 署名を一括サポートするコマンドと組み合わせて使用​​されます(gpg は一般的に git でデジタル署名する方法であり、サインオフと混同しないでください)。

于 2018-11-21T14:29:26.670 に答える