使用 LDAP 通過 HTTP 配置 GIT 伺服器
我對 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,然後能夠為自己生成此密碼,這意味著您可以完全控制它。