Apache-2.2

使用 LDAP 通過 HTTP 配置 GIT 伺服器

  • March 15, 2014

我對 GIT 很陌生,總的來說在基礎設施設置方面不是很有經驗。但是,我想做的似乎很基本,我做不到。

我正在嘗試在 Apache 中創建一個通過 HTTPS 公開的 GIT 伺服器。我的 GIT 儲存庫具有以下配置(在 CentOS 系統上):

SetEnv GIT_PROJECT_ROOT /opt/repo-git/my-custom-repo.git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/libexec/git-core/git-http-backend/
SetEnv REMOTE_USER=$REDIRECT_REMOTE_USER

<Directory "/opt/repo-git/my-custom-repo.git">
 Options -Indexes FollowSymLinks
 AllowOverride AuthConfig FileInfo
 Order allow,deny
 Allow from all
</Directory>

<Directory "/usr/libexec/git-core">
 AllowOverride None
 Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
 Order allow,deny
 Allow from all
</Directory>

<Location /git>
 Order deny,allow
 Allow from all
 Dav on
 AuthType Basic
 AuthzLDAPAuthoritative on
 AuthName "Trac"
 Require valid-user
 AuthBasicProvider ldap
 AuthLDAPURL "ldap://my-ldap-configuration-that-works"
 AuthLDAPBindDN "my-ldap-dn"
 AuthLDAPBindPassword "my-password"
</Location>

使用此配置,我可以使用git clone https://<my-ip>/git. 但是我無法推動我在 TortoiseGit 中收到以下錯誤:

Counting objects: 3, done.
Writing objects: 100% (3/3), 207 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: error: insufficient permission for adding an object to repository database ./objects
remote: fatal: failed to write object
error: unpack failed: unpack-objects abnormal exit
To https://<my-ip>/git
! [remote rejected] master -> master (unpacker error)
error: failed to push some refs to 'https://<my-ip>/git'

此類錯誤在此處此處此處和更多地方報告。

這些來源都對我沒有幫助 - 他們實際上提出了同樣的事情。我無法得到的是我應該為儲存庫設置什麼組和所有者。我目前正在設置apache哪個是執行 Apache 伺服器的使用者。但是我懷疑Apache configuratoin 中的GIT 魔法使用其他使用者進行我的送出(例如我的LDAP 使用者)。這是沒有意義的,但是,每次當 LDAP 發生更改時,我是否要更改我的每台伺服器上的文件權限?

在這種配置中是否有任何特殊的預設 git 使用者可以使用?

我確認apache使用者和組可以完全控制我的 GIT 儲存庫。

我能夠讓 Git 配置為我工作。

我的目標配置是為儲存庫設置 GIT,在其上設置GERRIT以進行程式碼審查,並將所有這些與我公司的 LDAP 集成。

你可以看到我花了將近 3 週的時間才讓它全部執行起來,但現在我終於把它全部完成了。

GERRIT是最重要的里程碑——事實證明它提供了我自己需要的功能——它為儲存庫提供了 http 介面,然後使用一個系統帳戶對儲存庫執行實際操作。

GERRIT 還與 LDAP 完美集成,允許您為項目訪問權限配置 ldap 組,並使用 LDAP 使用者進行儲存庫互動。

唯一的小事是一個人需要使用 GERRIT 生成的密碼和他的 LDAP 使用者來訪問儲存庫。然而,這並不是一個巨大的缺點,因為您使用完整的 LDAP 憑據登錄到 GERRIT UI,然後能夠為自己生成此密碼,這意味著您可以完全控制它。

引用自:https://serverfault.com/questions/578111