2

どういうわけか私のgitoliteにはサンプルの設定ファイルが付属しておらず、どこにも見つからないようです。誰かが私にコピーを見つけてくれたら、この質問にそのファイルで答えてください!

とにかく、gitolite設定ファイルのフォーマットは十分に単純です、ここに私のものからの抜粋があります

gitolite conf
# please see doc/gitolite.conf.mkd for details on syntax and features

@nmscDevs = dev1@compaid.com dev2@compaid.com dev3@compaid.com
@buildMgr = william_slepecki@compaid.com dev4@compaid.com

repo    gitolite-admin
    RW+     =   gitadmin william_slepecki@compaid.com

repo    grindstone
    RW+ = gitadmin
    RW+ prod$ = @buildMgr
    - prod$ = @nmscDevs
    RW = @nmscDevs

keydirフォルダーにいくつかの公開鍵があります。

keydir/
gitadmin.pub
william_slepecki@compaid.com.pub

私の問題は、gitoliteが個々のユーザーに設定された権限を無視しているように見えることです。gitadminユーザーにフルコントロールを与えない限り、リポジトリでは何も機能しません(読み取り、書き込みなど)。そうすると、誰もがgitadminユーザーの権限を使用しているようです。このようにリポジトリのクローンを作成します

git clone git@server:grindstone.git

しかし、私がこのようなものでクローンを作成しようとすると

git clone 'dev1@compaid.com'@server:grindstone.git

パスワードの入力を求められました。個々のユーザーがサーバーにSSHで接続できるように、サーバーにアカウントを持っている必要がありますか?

パーミッションはgitoliteでどの程度正確に機能しますか?gitユーザーがサーバーにSSHで接続するにはアカウントが必要であると理解するようになりました。その後、gitoliteが引き継ぐと、gitリクエストとともに渡される電子メールを使用して権限を決定します。ここで間違っていますか?私は何が欠けていますか?

ところで、これが私の.ssh/configです

host server
     user git
     hostname server
     identityfile ~/.ssh/gitadmin

host server
     user william_slepecki@compaid.com
     hostname server
     identityfile ~/.ssh/id_rsa

更新:最新バージョンのgitoliteにアップグレードしました。クローンを作成しようとすると、これが表示されます。

$ git clone git@server:testing.git
Cloning into 'testing'...
FATAL: R any testing gitadmin DENIED by fallthru
(or you mis-spelled the reponame)
fatal: The remote end hung up unexpectedly

私の設定ファイルは次のようになります:

repo testing
    RW+ = william_slepecki 

.sshの設定は変更されていません。さらに、私は私のログにこれを持っています

2012-05-08.13:01:13     19027   ssh     ARGV=gitadmin   SOC=git-upload-pack 'testing.git'       FROM=10.99.5.146
2012-05-08.13:01:13     19027           access(testing, gitadmin, R, 'any'),-> R any testing gitadmin DENIED by fallthru
2012-05-08.13:01:13     19027           trigger,Writable,access_1,ACCESS_1,testing,gitadmin,R,any,R any testing gitadmin DENIED by fallthru

これが私のグローバルなgitconfigのトップスニップです

[user]
    name = Willie Slepecki
    email = william_slepecki@compaid.com

なぜ世界でこれはまだgitadminがレポにあると主張しているのですか、そしてなぜそれはwilliam_slepeckiを使用していないのですか?これは正確にどこで使用する名前を取得しますか?

4

2 に答える 2

2

私はあなたの2つの主なエラーを指摘します:

最初のエラー:Gitoliteは、keydirにあるキーのユーザー部分(「@」の前の部分)のみを使用します。
例:gitolitewilliam_slepeckiは、キーに対して1人のユーザーのみを認識します。ここwilliam_slepecki@compaid.com.pubwilliam_slepecki@anothercompaid.org.pubの唯一のポイントは、このユーザーが2つの異なるキーで認証できることです。キーに権限を付与することはできず、ユーザーにのみ許可を与えることができます。

2番目のエラー:あなたのgitoliteサービスはおそらく1人の通常のシステムユーザーによってのみ提供されgitているので、接続をgit@server.com:repo.git行う必要があります。gitoliteユーザーはシステムアカウントを必要としないか、持っていません。sshキーだけなので、に接続するwilliam_slepecki@server.com:repo.gitことはできません。

于 2012-05-08T13:14:50.690 に答える
2

さて、私の問題は数倍でした。

まず、gitadmin キーの役割を誤解していました。サーバー上に実際のアカウントを持っているのはそれが唯一のユーザーであるため、すべての開発者ワークステーションに存在する必要があると思いました。それは間違っていたことが判明しました。gitolite は keydir ディレクトリのキーを取得し、プッシュ時に git/.ssh/authenticated_keys ファイルに追加します。これにより、keydir 内のすべてのキーがユーザー git としてマシンにログインできるようになります。git ユーザーにはコンソールが関連付けられていないため、セキュリティ ホールはありません。

次に、私の ~/.ssh/conf ファイルです。#1の仕組みがわからなかったので、gitコマンドの一部として、gitが何らかの形でメールアドレスをユーザー名として渡していると思いました。#1 を見つけたら、構成ファイルをクリーンアップして git@server ユーザーをマップし、それ以外のすべてに通常の方法を使用することができました。

これら 2 つの問題を理解して解決すると、すべての権限が正しく機能し始めました。サーバーのgitadminユーザーキーを置き換えて、開発者ステーションのキーを無効にし、すべての開発者構成を更新しました。経営陣は再び幸せです。

みんな、ありがとう。

于 2012-05-08T18:45:09.240 に答える