W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎勵
我們一般通過 SSH 進(jìn)行授權(quán)訪問,通過 git:// 進(jìn)行無授權(quán)訪問,但是還有一種協(xié)議可以同時(shí)實(shí)現(xiàn)以上兩種方式的訪問。設(shè)置 Smart HTTP 一般只需要在服務(wù)器上啟用一個(gè) Git 自帶的名為 git-http-backend
的 CGI 腳本。該 CGI 腳本將會讀取由 git fetch
或 git push
命令向 HTTP URL 發(fā)送的請求路徑和頭部信息,來判斷該客戶端是否支持 HTTP 通信(不低于 1.6.6 版本的客戶端支持此特性)。如果 CGI 發(fā)現(xiàn)該客戶端支持智能(Smart)模式,它將會以智能模式與它進(jìn)行通信,否則它將會回落到啞(Dumb)模式下(因此它可以對某些老的客戶端實(shí)現(xiàn)向下兼容)。
在完成以上簡單的安裝步驟后,我們將用 Apache 來作為 CGI 服務(wù)器。如果你沒有安裝 Apache,你可以在 Linux 環(huán)境下執(zhí)行如下或類似的命令來安裝:
$ sudo apt-get install apache2 apache2-utils
$ a2enmod cgi alias env
該操作將會啟用 mod_cgi
, mod_alias
, 和 mod_env
等 Apache 模塊, 這些模塊都是使該功能正常工作所必須的。
接下來我們要向 Apache 配置文件添加一些內(nèi)容,來讓 git-http-backend
作為 Web 服務(wù)器對 /git
路徑請求的處理器。
SetEnv GIT_PROJECT_ROOT /opt/git
SetEnv GIT_HTTP_EXPORT_ALL
ScriptAlias /git/ /usr/lib/git-core/git-http-backend/
如果留空 GIT_HTTP_EXPORT_ALL
這個(gè)環(huán)境變量,Git 將只對無授權(quán)客戶端提供帶 git-daemon-export-ok
文件的版本庫,就像 Git 守護(hù)進(jìn)程一樣。
接著你需要讓 Apache 接受通過該路徑的請求,添加如下的內(nèi)容至 Apache 配置文件:
<Directory "/usr/lib/git-core*">
Options ExecCGI Indexes
Order allow,deny
Allow from all
Require all granted
</Directory>
最后,如果想實(shí)現(xiàn)寫操作授權(quán)驗(yàn)證,使用如下的未授權(quán)屏蔽配置即可:
<LocationMatch "^/git/.*/git-receive-pack$">
AuthType Basic
AuthName "Git Access"
AuthUserFile /opt/git/.htpasswd
Require valid-user
</LocationMatch>
這需要你創(chuàng)建一個(gè)包含所有合法用戶密碼的 .htaccess
文件。以下是一個(gè)添加 “schacon” 用戶到此文件的例子:
$ htdigest -c /opt/git/.htpasswd "Git Access" schacon
你可以通過許多方式添加 Apache 授權(quán)用戶,選擇使用其中一種方式即可。以上僅僅只是我們可以找到的最簡單的一個(gè)例子。如果愿意的話,你也可以通過 SSL 運(yùn)行它,以保證所有數(shù)據(jù)是在加密狀態(tài)下進(jìn)行傳輸?shù)摹?/p>
我們不想深入去講解 Apache 配置文件,因?yàn)槟憧赡軙褂貌煌?Web 服務(wù)器,或者可能有不同的授權(quán)需求。它的主要原理是使用一個(gè) Git 附帶的,名為 git-http-backend
的 CGI。它被引用來處理協(xié)商通過 HTTP 發(fā)送和接收的數(shù)據(jù)。它本身并不包含任何授權(quán)功能,但是授權(quán)功能可以在 Web 服務(wù)器層引用它時(shí)被輕松實(shí)現(xiàn)。你可以在任何所有可以處理 CGI 的 Web 服務(wù)器上辦到這點(diǎn),所以隨便挑一個(gè)你最熟悉的 Web 服務(wù)器試手吧。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: