欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
httpd,Apache的HTTP服務(wù)器

Apache的HTTP服務(wù)器是一個(gè)Subversion可以利用的“重型”網(wǎng)絡(luò )服務(wù)器,通過(guò)一個(gè)自定義模塊,httpd可以讓Subversion版本庫通過(guò)WebDAV/DeltaV協(xié)議在客戶(hù)端前可見(jiàn),WebDAV/DeltaV協(xié)議是HTTP 1.1的擴展(見(jiàn)http://www.webdav.org/來(lái)查看詳細信息)。這個(gè)協(xié)議利用了無(wú)處不在的HTTP協(xié)議是廣域網(wǎng)的核心這一點(diǎn),添加了寫(xiě)能力—更明確一點(diǎn),版本化的寫(xiě)—能力。結果就是這樣一個(gè)標準化的健壯的系統,作為Apache 2.0軟件的一部分打包,被許多操作系統和第三方產(chǎn)品支持,網(wǎng)絡(luò )管理員也不需要打開(kāi)另一個(gè)自定義端口。 [22]這樣一個(gè)Apache-Subversion服務(wù)器具備了許多svnserve沒(méi)有的特性,但是也有一點(diǎn)難于配置,靈活通常會(huì )帶來(lái)復雜性。

下面的討論包括了對Apache配置指示的引用,給了一些使用這些指示的例子,詳細地描述不在本章的范圍之內,Apache小組維護了完美的文檔,公開(kāi)存放在他們的站點(diǎn)http://httpd.apache.org。例如,一個(gè)一般的配置參考位于http://httpd.apache.org/docs-2.0/mod/directives.html。

同樣,當你修改你的Apache設置,很有可能會(huì )出現一些錯誤,如果你還不熟悉Apache的日志子系統,你一定需要認識到這一點(diǎn)。在你的文件httpd.conf里會(huì )指定Apache生成的訪(fǎng)問(wèn)和錯誤日志(CustomLogErrorLog指示)的磁盤(pán)位置。Subversion的mod_dav_svn使用Apache的錯誤日志接口,你可以瀏覽這個(gè)文件的內容查看信息來(lái)查找難于發(fā)現的問(wèn)題根源。

為了讓你的版本庫使用HTTP網(wǎng)絡(luò ),你基本上需要兩個(gè)包里的四個(gè)部分。你需要Apache httpd 2.0和包括的mod_dav DAV模塊,Subversion和與之一同分發(fā)的mod_dav_svn文件系統提供者模塊,如果你有了這些組件,網(wǎng)絡(luò )化你的版本庫將非常簡(jiǎn)單,如:

  • 配置好httpd 2.0,并且使用mod_dav啟動(dòng),

  • 為mod_dav安裝mod_dav_svn插件,它會(huì )使用Subversion的庫訪(fǎng)問(wèn)版本庫,并且

  • 配置你的httpd.conf來(lái)輸出(或者說(shuō)暴露)版本庫。

你可以通過(guò)從源代碼編譯httpd和Subversion來(lái)完成前兩個(gè)項目,也可以通過(guò)你的系統上的已經(jīng)編譯好的二進(jìn)制包來(lái)安裝。最新的使用Apache HTTP的Subversion的編譯方法和Apache的配置方式可以看Subversion源代碼樹(shù)根目錄的INSTALL文件。

一旦你安裝了必須的組件,剩下的工作就是在httpd.conf里配置Apache,使用LoadModule來(lái)加載mod_dav_svn模塊,這個(gè)指示必須先與其它Subversion相關(guān)的其它配置出現,如果你的Apache使用缺省布局安裝,你的mod_dav_svn模塊一定在A(yíng)pache安裝目錄(通常是在/usr/local/apache2)的modules子目錄,LoadModule指示的語(yǔ)法很簡(jiǎn)單,影射一個(gè)名字到它的共享庫的物理位置:

LoadModule dav_svn_module     modules/mod_dav_svn.so

注意,如果mod_dav是作為共享對象編譯(而不是靜態(tài)鏈接到httpd程序),你需要為它使用使用LoadModule語(yǔ)句,一定確定它在mod_dav_svn之前:

LoadModule dav_module         modules/mod_dav.soLoadModule dav_svn_module     modules/mod_dav_svn.so

在你的配置文件后面的位置,你需要告訴Apache你在什么地方保存Subversion版本庫(也許是多個(gè)),位置指示有一個(gè)很像XML的符號,開(kāi)始于一個(gè)開(kāi)始標簽,以一個(gè)結束標簽結束,配合中間許多的其它配置。Location指示的目的是告訴Apache在特定的URL以及子URL下需要特殊的處理,如果是為Subversion準備的,你希望可以通過(guò)告訴Apache特定URL是指向版本化的資源,從而把支持轉交給DAV層,你可以告訴Apache將所有路徑部分(URL中服務(wù)器名稱(chēng)和端口之后的部分)以/repos/開(kāi)頭的URL交由DAV服務(wù)提供者處理。一個(gè)DAV服務(wù)提供者的版本庫位于/absolute/path/to/repository,可以使用如下的httpd.conf語(yǔ)法:

<Location /repos>DAV svnSVNPath /absolute/path/to/repository</Location>

如果你計劃支持多個(gè)具備相同父目錄的Subversion版本庫,你有另外的選擇,SVNParentPath指示,來(lái)表示共同的父目錄。舉個(gè)例子,如果你知道你會(huì )在/usr/local/svn下創(chuàng )建多個(gè)Subversion版本庫,并且通過(guò)類(lèi)似http://my.server.com/svn/repos1,http://my.server.com/svn/repos2的URL訪(fǎng)問(wèn),你可以用后面例子中的httpd.conf配置語(yǔ)法:

<Location /svn>DAV svn# any "/svn/foo" URL will map to a repository /usr/local/svn/fooSVNParentPath /usr/local/svn</Location>

使用上面的語(yǔ)法,Apache會(huì )代理所有URL路徑部分為/svn/的請求到Subversion的DAV提供者,Subversion會(huì )認為SVNParentPath指定的目錄下的所有項目是真實(shí)的Subversion版本庫,這通常是一個(gè)便利的語(yǔ)法,不像是用SVNPath指示,我們在此不必為創(chuàng )建新的版本庫而重啟Apache。

請確定當你定義新的位置,不會(huì )與其它輸出的位置重疊,例如你的主要DocumentRoot/www,不要把Subversion版本庫輸出到<Location /www/repos>,如果一個(gè)請求的URI是/www/repos/foo.c,Apache不知道是直接到repos/foo.c訪(fǎng)問(wèn)這個(gè)文件還是讓mod_dav_svn代理從Subversion版本庫返回foo.c。

在本階段,你一定要考慮訪(fǎng)問(wèn)權限問(wèn)題,如果你已經(jīng)作為普通的web服務(wù)器運行過(guò)Apache,你一定有了一些內容—網(wǎng)頁(yè)、腳本和其他。這些項目已經(jīng)配置了許多在A(yíng)pache下可以工作的訪(fǎng)問(wèn)許可,或者更準確一點(diǎn),允許Apache與這些文件一起工作。Apache當作為Subversion服務(wù)器運行時(shí),同樣需要正確的訪(fǎng)問(wèn)許可來(lái)讀寫(xiě)你的Subversion版本庫。(見(jiàn)服務(wù)器和訪(fǎng)問(wèn)許可:一個(gè)警告。)

你會(huì )需要檢驗權限系統的設置滿(mǎn)足Subversion的需求,同時(shí)不會(huì )把以前的頁(yè)面和腳本搞亂。這或許意味著(zhù)修改Subversion的訪(fǎng)問(wèn)許可來(lái)配合Apache服務(wù)器已經(jīng)使用的工具,或者可能意味著(zhù)需要使用httpd.confUserGroup指示來(lái)指定Apache作為運行的用戶(hù)和Subversion版本庫的組。并不是只有一條正確的方式來(lái)設置許可,每個(gè)管理員都有不同的原因來(lái)以特定的方式操作,只需要意識到許可關(guān)聯(lián)的問(wèn)題經(jīng)常在為Apache配置Subversion版本庫的過(guò)程中被疏忽。

此時(shí),如果你配置的httpd.conf保存如下的內容

<Location /svn>DAV svnSVNParentPath /usr/local/svn</Location>

這樣你的版本庫對全世界是可以“匿名”訪(fǎng)問(wèn)的,直到你配置了一些認證授權政策,你通過(guò)Location指示來(lái)使Subversion版本庫可以被任何人訪(fǎng)問(wèn),換句話(huà)說(shuō),

  • 任何人可以使用Subversion客戶(hù)端來(lái)從版本庫URL取出一個(gè)工作拷貝(或者是它的子目錄),

  • 任何人可以在瀏覽器輸入版本庫URL交互瀏覽的方式來(lái)查看版本庫的最新修訂版本,并且

  • 任何人可以提交到版本庫。

最簡(jiǎn)單的客戶(hù)端認證方式是通過(guò)HTTP基本認證機制,簡(jiǎn)單的使用用戶(hù)名和密碼來(lái)驗證一個(gè)用戶(hù)所自稱(chēng)的身份,Apache提供了一個(gè)htpasswd工具來(lái)管理可接受的用戶(hù)名和密碼,這些就是你希望賦予Subversion特別權限的用戶(hù),讓我們給Sally和Harry賦予提交權限,首先,我們需要添加他們到密碼文件。

$ ### First time: use -c to create the file$ ### Use -m to use MD5 encryption of the password, which is more secure$ htpasswd -cm /etc/svn-auth-file harryNew password: *****Re-type new password: *****Adding password for user harry$ htpasswd -m /etc/svn-auth-file sallyNew password: *******Re-type new password: *******Adding password for user sally$

下一步,你需要在httpd.confLocation區里添加一些指示來(lái)告訴Apache如何來(lái)使用這些密碼文件,AuthType指示指定系統使用的認證類(lèi)型,這種情況下,我們需要指定Basic認證系統,AuthName是你提供給認證域一個(gè)任意名稱(chēng),大多數瀏覽器會(huì )在向用戶(hù)詢(xún)問(wèn)名稱(chēng)和密碼的彈出窗口里顯示這個(gè)名稱(chēng),最終,使用AuthUserFile指示來(lái)指定使用htpasswd創(chuàng )建的密碼文件的位置。

添加完這三個(gè)指示,你的<Location>區塊一定像這個(gè)樣子:

<Location /svn>DAV svnSVNParentPath /usr/local/svnAuthType BasicAuthName "Subversion repository"AuthUserFile /etc/svn-auth-file</Location>

這個(gè)<Location>區塊還沒(méi)有結束,還不能做任何有用的事情,它只是告訴Apache當需要授權時(shí),要去向Subversion客戶(hù)端索要用戶(hù)名和密碼。我們這里遺漏的,是一些告訴Apache什么樣客戶(hù)端需要授權的指示。哪里需要授權,Apache就會(huì )在哪里要求認證,最簡(jiǎn)單的方式是保護所有的請求,添加Require valid-user來(lái)告訴Apache任何請求需要認證的用戶(hù):

<Location /svn>DAV svnSVNParentPath /usr/local/svnAuthType BasicAuthName "Subversion repository"AuthUserFile /etc/svn-auth-fileRequire valid-user</Location>

一定要閱讀后面的部分(“授權選項”一節)來(lái)得到Require的細節,和授權政策的其他設置方法。

需要警惕:HTTP基本認證的密碼是用明文傳輸,因此非常不可靠的,如果你擔心密碼偷窺,最好是使用某種SSL加密,所以客戶(hù)端認證使用https://而不是http://,為了方便,你可以配置Apache為自簽名認證。 [23] 參考Apache的文檔(和OpenSSL文檔)來(lái)查看怎樣做。

商業(yè)應用需要越過(guò)公司防火墻的版本庫訪(fǎng)問(wèn),防火墻需要小心的考慮非認證用戶(hù)“吸取”他們的網(wǎng)絡(luò )流量的情況,SSL讓那種形式的關(guān)注更不容易導致敏感數據泄露。

如果Subversion使用OpenSSL編譯,它就會(huì )具備與Subversion服務(wù)器使用https://的URL通訊的能力,Subversion客戶(hù)端使用的Neon庫不僅僅可以用來(lái)驗證服務(wù)器證書(shū),也可以必要時(shí)提供客戶(hù)端證書(shū),如果客戶(hù)端和服務(wù)器交換了SSL證書(shū)并且成功地互相認證,所有剩下的交流都會(huì )通過(guò)一個(gè)會(huì )話(huà)關(guān)鍵字加密。

怎樣產(chǎn)生客戶(hù)端和服務(wù)器端證書(shū)以及怎樣使用它們已經(jīng)超出了本書(shū)的范圍,許多書(shū)籍,包括Apache自己的文檔,描述這個(gè)任務(wù),現在我們可以覆蓋的是普通的客戶(hù)端怎樣來(lái)管理服務(wù)器與客戶(hù)端證書(shū)。

當通過(guò)https://與Apache通訊時(shí),一個(gè)Subversion客戶(hù)端可以接收兩種類(lèi)型的信息:

  • 一個(gè)服務(wù)器證書(shū)

  • 一個(gè)客戶(hù)端證書(shū)的要求

如果客戶(hù)端接收了一個(gè)服務(wù)器證書(shū),它需要去驗證它是可以相信的:這個(gè)服務(wù)器是它自稱(chēng)的那一個(gè)嗎?OpenSSL庫會(huì )去檢驗服務(wù)器證書(shū)的簽名人或者是核證機構(CA)。如果OpenSSL不可以自動(dòng)信任這個(gè)CA,或者是一些其他的問(wèn)題(如證書(shū)過(guò)期或者是主機名不匹配),Subversion命令行客戶(hù)端會(huì )詢(xún)問(wèn)你是否愿意仍然信任這個(gè)證書(shū):

$ svn list https://host.example.com/repos/projectError validating server certificate for ‘https://host.example.com:443‘:- The certificate is not issued by a trusted authority. Use thefingerprint to validate the certificate manually!Certificate information:- Hostname: host.example.com- Valid: from Jan 30 19:23:56 2004 GMT until Jan 30 19:23:56 2006 GMT- Issuer: CA, example.com, Sometown, California, US- Fingerprint: 7d:e1:a9:34:33:39:ba:6a:e9:a5:c4:22:98:7b:76:5c:92:a0:9c:7b(R)eject, accept (t)emporarily or accept (p)ermanently?

這個(gè)對話(huà)看起來(lái)很熟悉,這是你會(huì )在web瀏覽器(另一種HTTP客戶(hù)端,就像Subversion)經(jīng)??吹降膯?wèn)題,如果你選擇(p)ermanent選項,服務(wù)器證書(shū)會(huì )存放在你存放那個(gè)用戶(hù)名和密碼緩存(見(jiàn)“客戶(hù)端憑證緩存”一節。)的私有運行區auth/中,緩存后,Subversion會(huì )自動(dòng)記住在以后的交流中信任這個(gè)證書(shū)。

你的運行中servers文件也會(huì )給你能力可以讓Subversion客戶(hù)端自動(dòng)信任特定的CA,包括全局的或是每主機為基礎的,只需要設置ssl-authority-files為一組逗號隔開(kāi)的PEM加密的CA證書(shū)列表:

[global]ssl-authority-files = /path/to/CAcert1.pem;/path/to/CAcert2.pem

許多OpenSSL安裝包括一些預先定義好的可以普遍信任的“缺省的”CA,為了讓Subversion客戶(hù)端自動(dòng)信任這些標準權威,設置ssl-trust-default-catrue。

當與Apache通話(huà)時(shí),Subversion客戶(hù)端也會(huì )收到一個(gè)證書(shū)的要求,Apache是詢(xún)問(wèn)客戶(hù)端來(lái)證明自己的身份:這個(gè)客戶(hù)端是否是他所說(shuō)的那一個(gè)?如果一切正常,Subversion客戶(hù)端會(huì )發(fā)送回一個(gè)通過(guò)Apache信任的CA簽名的私有證書(shū),一個(gè)客戶(hù)端證書(shū)通常會(huì )以加密方式存放在磁盤(pán),使用本地密碼保護,當Subversion收到這個(gè)要求,它會(huì )詢(xún)問(wèn)你證書(shū)的路徑和保護用的密碼:

$ svn list https://host.example.com/repos/projectAuthentication realm: https://host.example.com:443Client certificate filename: /path/to/my/cert.p12Passphrase for ‘/path/to/my/cert.p12‘:  ********…

注意這個(gè)客戶(hù)端證書(shū)是一個(gè)“p12”文件,為了讓Subversion使用客戶(hù)端證書(shū),它必須是運輸標準的PKCS#12格式,大多數瀏覽器可以導入和導出這種格式的證書(shū),另一個(gè)選擇是用OpenSSL命令行工具來(lái)轉化存在的證書(shū)為PKCS#12格式。

再次,運行中servers文件允許你為每個(gè)主機自動(dòng)響應這種要求,單個(gè)或兩條信息可以用運行參數來(lái)描述:

[groups]examplehost = host.example.com[examplehost]ssl-client-cert-file = /path/to/my/cert.p12ssl-client-cert-password = somepassword

一旦你設置了ssl-client-cert-filessl-client-cert-password參數,Subversion客戶(hù)端可以自動(dòng)響應客戶(hù)端證書(shū)請求而不會(huì )打擾你。 [24]

此刻,你已經(jīng)配置了認證,但是沒(méi)有配置授權,Apache可以要求用戶(hù)認證并且確定身份,但是并沒(méi)有說(shuō)明這個(gè)身份的怎樣允許和限制,這個(gè)部分描述了兩種控制訪(fǎng)問(wèn)版本庫的策略。

最簡(jiǎn)單的訪(fǎng)問(wèn)控制形式是授權特定用戶(hù)為只讀版本庫訪(fǎng)問(wèn)或者是讀/寫(xiě)訪(fǎng)問(wèn)版本庫。

你可以通過(guò)在<Location>區塊添加Require valid-user指示來(lái)限制所有的版本庫操作,使用我們前面的例子,這意味著(zhù)只有客戶(hù)端只可以是harry或者sally,而且他們必須提供正確的用戶(hù)名及對應密碼,這樣允許對Subversion版本庫做任何事:

<Location /svn>DAV svnSVNParentPath /usr/local/svn# how to authenticate a userAuthType BasicAuthName "Subversion repository"AuthUserFile /path/to/users/file# only authenticated users may access the repositoryRequire valid-user</Location>

有時(shí)候,你不需要這樣嚴密,舉個(gè)例子,Subversion自己在http://svn.collab.net/repos/svn的源代碼允許全世界的人執行版本庫的只讀操作(例如檢出我們的工作拷貝和使用瀏覽器瀏覽版本庫),但是限定只有認證用戶(hù)可以執行寫(xiě)操作。為了執行特定的限制,你可以使用LimitLimitExcept配置指示,就像Location指示,這個(gè)區塊有開(kāi)始和結束標簽,你需要在<Location>中添加這個(gè)指示。

LimitLimitExcept中使用的參數是可以被這個(gè)區塊影響的HTTP請求類(lèi)型,舉個(gè)例子,如果你希望禁止所有的版本庫訪(fǎng)問(wèn),只是保留當前支持的只讀操作,你可以使用LimitExcept指示,并且使用GET,PROPFIND,OPTIONSREPORT請求類(lèi)型參數,然后前面提到過(guò)的Require valid-user指示將會(huì )在<LimitExcept>區塊中而不是在<Location>區塊。

<Location /svn>DAV svnSVNParentPath /usr/local/svn# how to authenticate a userAuthType BasicAuthName "Subversion repository"AuthUserFile /path/to/users/file# For any operations other than these, require an authenticated user.<LimitExcept GET PROPFIND OPTIONS REPORT>Require valid-user</LimitExcept></Location>

這里只是一些簡(jiǎn)單的例子,想看關(guān)于A(yíng)pache訪(fǎng)問(wèn)控制Require指示的更深入信息,可以查看Apache文檔中的教程集http://httpd.apache.org/docs-2.0/misc/tutorials.html中的Security部分。

也可以使用Apache的httpd模塊mod_authz_svn更加細致的設置訪(fǎng)問(wèn)權限,這個(gè)模塊收集客戶(hù)端傳遞過(guò)來(lái)的不同的晦澀的URL信息,詢(xún)問(wèn)mod_dav_svn來(lái)解碼,然后根據在配置文件定義的訪(fǎng)問(wèn)政策來(lái)裁決請求。

如果你從源代碼創(chuàng )建Subversion,mod_authz_svn會(huì )自動(dòng)附加到mod_dav_svn,許多二進(jìn)制分發(fā)版本也會(huì )自動(dòng)安裝,為了驗證它是安裝正確,確定它是在httpd.confLoadModule指示中的mod_dav_svn后面:

LoadModule dav_module         modules/mod_dav.soLoadModule dav_svn_module     modules/mod_dav_svn.soLoadModule authz_svn_module   modules/mod_authz_svn.so

為了激活這個(gè)模塊,你需要配置你的Location區塊的AuthzSVNAccessFile指示,指定保存路徑中的版本庫訪(fǎng)問(wèn)政策的文件。(一會(huì )兒我們將會(huì )討論這個(gè)文件的格式。)

Apache非常的靈活,你可以從三種模式里選擇一種來(lái)配置你的區塊,作為開(kāi)始,你選擇一種基本的配置模式。(下面的例子非常簡(jiǎn)單;見(jiàn)Apache自己的文檔中的認證和授權選項來(lái)查看更多的細節。)

最簡(jiǎn)單的區塊是允許任何人可以訪(fǎng)問(wèn),在這個(gè)場(chǎng)景里,Apache決不會(huì )發(fā)送認證請求,所有的用戶(hù)作為“匿名”對待。

在另一個(gè)極端,你可以配置為拒絕所有人的認證,所有客戶(hù)端必須提供證明自己身份的證書(shū),你通過(guò)Require valid-user指示來(lái)阻止無(wú)條件的認證,并且定義一種認證的手段。

第三種流行的模式是允許認證和匿名用戶(hù)的組合,舉個(gè)例子,許多管理員希望允許匿名用戶(hù)讀取特定的版本庫路徑,但希望只有認證用戶(hù)可以讀(或者寫(xiě))更多敏感的區域,在這個(gè)設置里,所有的用戶(hù)開(kāi)始時(shí)用匿名用戶(hù)訪(fǎng)問(wèn)版本庫,如果你的訪(fǎng)問(wèn)控制策略在任何時(shí)候要求一個(gè)真實(shí)的用戶(hù)名,Apache將會(huì )要求認證客戶(hù)端,為此,你可以同時(shí)使用Satisfy AnyRequire valid-user指示。

一旦你的基本Location區塊已經(jīng)配置了,你可以創(chuàng )建一個(gè)定義一些授權規則的訪(fǎng)問(wèn)文件。

訪(fǎng)問(wèn)文件的語(yǔ)法與svnserve.conf和運行中配置文件非常相似,以(#)開(kāi)頭的行會(huì )被忽略,在它的簡(jiǎn)單形式里,每一小節命名一個(gè)版本庫和一個(gè)里面的路徑,認證用戶(hù)名是在每個(gè)小節中的選項名,每個(gè)選項的值描述了用戶(hù)訪(fǎng)問(wèn)版本庫的級別:r(只讀)或者rw(讀寫(xiě)),如果用戶(hù)沒(méi)有提到,訪(fǎng)問(wèn)是不允許的。

具體一點(diǎn):這個(gè)小節的名稱(chēng)是[repos-name:path]或者[path]的形式,如果你使用SVNParentPath指示,指定版本庫的名字是很重要的,如果你漏掉了他們,[/some/dir]部分就會(huì )與/some/dir的所有版本庫匹配,如果你使用SVNPath指示,因此在你的小節中只是定義路徑也很好—畢竟只有一個(gè)版本庫。

[calc:/branches/calc/bug-142]harry = rwsally = r

在第一個(gè)例子里,用戶(hù)harrycalc版本庫中/branches/calc/bug-142具備完全的讀寫(xiě)權利,但是用戶(hù)sally只有讀權利,任何其他用戶(hù)禁止訪(fǎng)問(wèn)這個(gè)目錄。

當然,訪(fǎng)問(wèn)控制是父目錄傳遞給子目錄的,這意味著(zhù)我們可以為Sally指定一個(gè)子目錄的不同訪(fǎng)問(wèn)策略:

[calc:/branches/calc/bug-142]harry = rwsally = r# give sally write access only to the ‘testing‘ subdir[calc:/branches/calc/bug-142/testing]sally = rw

現在Sally可以讀取分支的testing子目錄,但對其他部分還是只可以讀,同時(shí),Harry對整個(gè)分支還繼續有完全的讀寫(xiě)權限。

也可以通過(guò)繼承規則明確的的拒絕某人的訪(fǎng)問(wèn),只需要設置用戶(hù)名參數為空:

[calc:/branches/calc/bug-142]harry = rwsally = r[calc:/branches/calc/bug-142/secret]harry =

在這個(gè)例子里,Harry對bug-142目錄樹(shù)有完全的讀寫(xiě)權限,但是對secret子目錄沒(méi)有任何訪(fǎng)問(wèn)權利。

有一件事需要記住的是需要找到最匹配的目錄,mod_authz_svn模塊首先找到匹配自己的目錄,然后父目錄,然后父目錄的父目錄,就這樣繼續下去,更具體的路徑控制會(huì )覆蓋所有繼承下來(lái)的訪(fǎng)問(wèn)控制。

缺省情況下,沒(méi)有人對版本庫有任何訪(fǎng)問(wèn),這意味著(zhù)如果你已經(jīng)從一個(gè)空文件開(kāi)始,你會(huì )希望給所有用戶(hù)對版本庫根目錄具備讀權限,你可以使用*實(shí)現,用來(lái)代表“所有用戶(hù)”:

[/]* = r

這是一個(gè)普通的設置;注意在小節名中沒(méi)有提到版本庫名稱(chēng),這讓所有版本庫對所有的用戶(hù)可讀,不管你是使用SVNPath或是SVNParentPath。當所有用戶(hù)對版本庫有了讀權利,你可以賦予特定用戶(hù)對特定子目錄的rw權限。

星號(*)參數需要在這里詳細強調:這是匹配匿名用戶(hù)的唯一模式,如果你已經(jīng)配置了你的Location區塊允許匿名和認證用戶(hù)的混合訪(fǎng)問(wèn),所有用戶(hù)作為Apache匿名用戶(hù)開(kāi)始訪(fǎng)問(wèn),mod_authz_svn會(huì )在要訪(fǎng)問(wèn)路徑的定義中查找*值;如果找不到,Apache就會(huì )要求真實(shí)的客戶(hù)端認證。

訪(fǎng)問(wèn)文件也允許你定義一組的用戶(hù),很像Unix的/etc/group文件:

[groups]calc-developers = harry, sally, joepaint-developers = frank, sally, janeeveryone = harry, sally, joe, frank, sally, jane

組可以被賦予通用戶(hù)一樣的訪(fǎng)問(wèn)權限,使用“at”(@)前綴來(lái)加以區別:

[calc:/projects/calc]@calc-developers = rw[paint:/projects/paint]@paint-developers = rwjane = r

...并且非常接近。

mod_dav_svn模塊做了許多工作來(lái)確定你標記為“不可讀”的數據不會(huì )因意外而泄露,這意味著(zhù)需要緊密監控通過(guò)svn checkout或是svn update返回的路徑和文件內容,如果這些命令遇到一些根據認證策略不是可讀的路徑,這個(gè)路徑通常會(huì )被一起忽略,在歷史或者重命名操作時(shí)—例如運行一個(gè)類(lèi)似svn cat -r OLD foo.c的命令來(lái)操作一個(gè)很久以前改過(guò)名字的文件 — 如果一個(gè)對象的以前的名字檢測到是只讀的,重命令追蹤就會(huì )終止。

所有的路徑檢查在有時(shí)會(huì )非常昂貴,特別是svn log的情況。當檢索一列修訂版本時(shí),服務(wù)器會(huì )查看所有修訂版本修改的路徑,并且檢查可讀性,如果發(fā)現了一個(gè)不可讀路徑,它會(huì )從修訂版本的修改路徑中忽略(可以查看--verbose選項),并且整個(gè)的日志信息會(huì )被禁止,不必多說(shuō),這種影響大量文件修訂版本的操作會(huì )非常耗時(shí)。這是安全的代價(jià):即使你并沒(méi)有配置mod_authz_svn模塊,mod_dav_svn還是會(huì )詢(xún)問(wèn)httpd來(lái)對所有路徑運行認證檢查,mod_dav_svn模塊沒(méi)有辦法知道那個(gè)認證模塊被安裝,所以只有詢(xún)問(wèn)Apache來(lái)調用所提供的模塊。

在另一方面,也有一個(gè)安全艙門(mén)允許你用安全特性來(lái)交換速度,如果你不是堅持要求有每目錄授權(如不使用 mod_authz_svn和類(lèi)似的模塊),你就可以關(guān)閉所有的路徑檢查,在你的httpd.conf文件,使用SVNPathAuthz指示:

SVNPathAuthz指示缺省是打開(kāi)的,當設置為“off”時(shí),所有的路徑為基礎的授權都會(huì )關(guān)閉;mod_dav_svn停止對每個(gè)目錄調用授權檢查。

我們已經(jīng)覆蓋了關(guān)于認證和授權的Apache和mod_dav_svn的大多數選項,但是Apache還提供了許多很好的特性。

一個(gè)非常有用的好處是使用Apache/WebDAV配置Subversion版本庫時(shí)可以用普通的瀏覽器察看最新的版本庫文件,因為Subversion使用URL來(lái)鑒別版本庫版本化的資源,版本庫使用的HTTP為基礎的URL也可以直接輸入到Web瀏覽器中,你的瀏覽器會(huì )發(fā)送一個(gè)GET請求到URL,根據訪(fǎng)問(wèn)的URL是指向一個(gè)版本化的目錄還是文件,mod_dav_svn會(huì )負責列出目錄列表或者是文件內容。

因為URL不能確定你所希望看到的資源的版本,mod_dav_svn會(huì )一直返回最新的版本,這樣會(huì )有一些美妙的副作用,你可以直接把Subversion的URL傳遞給文檔作為引用,這些URL會(huì )一直指向文檔最新的材料,當然,你也可以在別的網(wǎng)站作為超鏈使用這些URL。

你通常會(huì )在版本化的文件的URL之外得到更多地用處—畢竟那里是有趣的內容存在的地方,但是你會(huì )偶爾瀏覽一個(gè)Subversion的目錄列表,你會(huì )很快發(fā)現展示列表生成的HTML非?;?,并且一定沒(méi)有在外觀(guān)上(或者是有趣上)下功夫,為了自定義這些目錄顯示,Subversion提供了一個(gè)XML目錄特性,一個(gè)單獨的SVNIndexXSLT指示在你的httpd.conf文件版本庫的Location塊里,它將會(huì )指導mod_dav_svn在顯示目錄列表的時(shí)候生成XML輸出,并且引用你選擇的XSLT樣式表文件:

<Location /svn>DAV svnSVNParentPath /usr/local/svnSVNIndexXSLT "/svnindex.xsl"…</Location>

使用SVNIndexXSLT指示和創(chuàng )建一個(gè)XSLT樣式表,你可以讓你的目錄列表的顏色模式與你的網(wǎng)站的其它部分匹配,否則,如果你愿意,你可以使用Subversion源分發(fā)版本中的tools/xslt/目錄下的樣例樣式表。記住提供給SVNIndexXSLT 指示的路徑是一個(gè)URL路徑—瀏覽器需要閱讀你的樣式表來(lái)利用它們!

Apache作為一個(gè)健壯的Web服務(wù)器的許多特性也可以用來(lái)增加Subversion的功能性和安全性,Subversion使用Neon與Apache通訊,這是一種一般的HTTP/WebDAV庫,可以支持SSL和Deflate壓縮(是gzipPKZIP程序用來(lái)“壓縮”文件為數據塊的一樣的算法)之類(lèi)的機制。你只需要編譯你希望Subversion和Apache需要的特性,并且正確的配置程序來(lái)使用這些特性。

Deflate壓縮給服務(wù)器和客戶(hù)端帶來(lái)了更多地負擔,壓縮和解壓縮減少了網(wǎng)絡(luò )傳輸的實(shí)際文件的大小,如果網(wǎng)絡(luò )帶寬比較緊缺,這種方法會(huì )大大提高服務(wù)器和客戶(hù)端之間發(fā)送數據的速度,在極端情況下,這種最小化的傳輸會(huì )造成超時(shí)和成功的區別。

不怎么有趣,但同樣重要,是Apache和Subversion關(guān)系的一些特性,像可以指定自定義的端口(而不是缺省的HTTP的80)或者是一個(gè)Subversion可以被訪(fǎng)問(wèn)的虛擬主機名,或者是通過(guò)代理服務(wù)器訪(fǎng)問(wèn)的能力,這些特性都是Neon所支持的,所以Subversion輕易得到這些支持。

最后,因為mod_dav_svn是使用一個(gè)半完成的WebDAV/DeltaV方言,所以通過(guò)第三方的DAV客戶(hù)端訪(fǎng)問(wèn)也是可能的,幾乎所有的現代操作系統(Win32、OS X和Linux)都有把DAV服務(wù)器影射為普通的網(wǎng)絡(luò )“共享”的內置能力,這是一個(gè)復雜的主題;察看附錄 C, WebDAV和自動(dòng)版本化來(lái)得到更多細節。



[22] 他們討厭這樣做。

[23] 當使用自簽名的服務(wù)器時(shí)仍會(huì )遭受“中間人”攻擊,但是與偷取未保護的密碼相比,這樣的攻擊比一個(gè)偶然的獲取要艱難許多。

[24] 更多有安全意識的人不會(huì )希望在運行中servers文件保存客戶(hù)端證書(shū)密碼。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
原]使用mod_dav_svn訪(fǎng)問(wèn)Subversion倉庫
Windows 下安裝并配置 SVN 服務(wù)器全過(guò)程
SVN服務(wù)器配置詳解
CentOS下Redmine與SVN的整合——基于A(yíng)pache和Mysql安全認證與讀寫(xiě)控制
SVN入門(mén)及配置使用
Subversion快速指南
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久