• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      安全版本SVN管理工具的設(shè)計(jì)與實(shí)現(xiàn)

      2020-11-10 04:38:45趙躍周麗娜孫永泉
      電腦知識與技術(shù) 2020年27期
      關(guān)鍵詞:管理工具日志倉庫

      趙躍 周麗娜 孫永泉

      摘要:由于傳統(tǒng)SVB版本管理工具沒有自身權(quán)限設(shè)置的功能,目前一些特殊的場合,如涉密環(huán)境下,要求對其進(jìn)行功能封裝。該文對SVN命令行進(jìn)行了深入研究,通過增加管控界面等實(shí)現(xiàn)了一個(gè)安全版本的SVN管理工具,將倉庫管理和倉庫權(quán)限管理等功能分開管理,實(shí)現(xiàn)了三員管理等功能,滿足了特殊場合使用的要求。

      關(guān)鍵詞:SVN;安全版本

      中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A

      文章編號:1009-3044(2020)27-0057-02

      開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID):

      1 概述

      由于傳統(tǒng)的SVN管理工具(如Visual SVN)本身并沒有對自身的權(quán)限控制,任何人通過皆可使用它輕松地進(jìn)行建庫,刪庫等管理操作,且這些操作并沒有日志記錄,所以不能滿足對安全性和保密性有較高要求的SVN管理需求。

      基于以上原因,需要開發(fā)一個(gè)將倉庫管理和倉庫權(quán)限管理等功能分開賦予不同的管理人員,并且能將這些操作記錄下來的安全版本SVN管理工具。安全版本SVN管理工具應(yīng)滿足以下幾點(diǎn)要求:

      1)實(shí)現(xiàn)通常SVN管理工具的大多數(shù)主要功能,如創(chuàng)建倉庫、創(chuàng)建用戶、基于目錄的權(quán)限分配等。

      2)除普通開發(fā)者賬戶外,設(shè)立三員賬戶,只有三員賬戶可以通過此管理工具進(jìn)行管理。三員賬戶功能權(quán)限各自獨(dú)立,其權(quán)限劃分如下:

      ①系統(tǒng)管理員:系統(tǒng)管理員擁有創(chuàng)建倉庫、刪除倉庫、構(gòu)建倉庫目錄結(jié)構(gòu)的能力。

      ②安全管理員:安全管理員擁有創(chuàng)建、刪除、修改用戶和組,基于倉庫目錄進(jìn)行開發(fā)者權(quán)限分配的能力。

      ③審計(jì)員:審計(jì)員可以查看三員賬戶的操作日志,也可以查看倉庫的提交日志。

      3)可對代碼倉庫進(jìn)行標(biāo)密。

      2 實(shí)現(xiàn)

      2.1界面實(shí)現(xiàn)

      軟件界面借助Qt實(shí)現(xiàn),通過信號與槽機(jī)制實(shí)現(xiàn)對象間通信,皆是Qt的傳統(tǒng)實(shí)現(xiàn)方式,在此不加以贅述。

      整體的界面設(shè)計(jì)和操作方式仿照常見的VisuaISVN的設(shè)計(jì)來實(shí)現(xiàn),以便于曾經(jīng)使用VisuaISVN的人員快速理解使用方式。

      主要的操作方式與VisuaISVN基本一致,通過左側(cè)目錄樹及右鍵菜單選擇操作,右側(cè)窗口顯示一些相關(guān)信息。進(jìn)行各種操作時(shí)的各級子窗口也盡量與VisuaISVN保持一致。

      2.2 SVN管理功能實(shí)現(xiàn)

      SVN在Windows下的服務(wù)端搭建方式常見的有兩種:

      1)Apache+ Subversion

      2)VisualSVN

      前者通過Apache代理接收SVN客戶端的請求,再通過相關(guān)插件與Subversion結(jié)合,后者據(jù)分析.其基于Subversion額外自己實(shí)現(xiàn)了一個(gè)支持HTTP的服務(wù),不再直接使用Subversion。

      本軟件直接對Subversion服務(wù)進(jìn)行管理,暫未支持HTTP服務(wù),客戶端只能在局域網(wǎng)內(nèi)用形如svn://IP/repo的形式直接訪問Subversion服務(wù)。

      以下重點(diǎn)說明SVN管理相關(guān)功能的實(shí)現(xiàn)細(xì)節(jié)。

      1)創(chuàng)建代碼倉庫

      Subversion安裝后會(huì)獲得許多有關(guān)的命令行工具,本軟件通過執(zhí)行這些命令并獲取其執(zhí)行結(jié)果,實(shí)現(xiàn)了可視化的管理。

      創(chuàng)建代碼倉庫可通過svnadmin命令實(shí)現(xiàn),假設(shè)倉庫所在目錄為repoPath,倉庫名為repoName完整命令如下:

      “cmd lc svnadmin create repoPath repoName"

      通過命令完成倉庫的創(chuàng)建后,為滿足本軟件的管理需求,需要額外修改倉庫目錄下的/conf/svnserve.conf文件。首先需要清空其中原有的內(nèi)容,然后加入如下的內(nèi)容:

      [general]

      anon-access= none

      auth-access= write

      password-db= ../../Password

      authz-db= authz

      groups-db= ../../Groups

      為使系統(tǒng)管理員具備對此新建的倉庫的管理權(quán)限,需立即修改倉庫目錄下的/conf/authz文件,假設(shè)系統(tǒng)管理員用戶名為sysManager在其中加入如下內(nèi)容:

      [/]

      sysManager= rw

      審計(jì)員需要查看倉庫日志,所以也需給予讀權(quán)限:

      [/]

      auditManager=r

      2)刪除代碼倉庫

      通過模仿SVN客戶端提交刪除請求來刪除目錄,刪除整個(gè)代碼倉庫則直接刪除其文件夾即可。完整命令如下:

      刪除目錄:

      “cmd/c svn delete -username sysManager -password123456 -m delete svn://127.O.O.1/repoName/dirPath"

      刪除倉庫:

      “cmd lc rm -rf /repoPath/repoName”

      3)獲取代碼倉庫目錄樹

      需要獲取代碼倉庫的目錄結(jié)構(gòu)來初始化界面里的倉庫目錄樹。只能通過svnlook命令的返回值來獲取目錄結(jié)構(gòu),因?yàn)閷?shí)際上無法直接看到真正的目錄結(jié)構(gòu),所有的相關(guān)信息被Sub-version存儲(chǔ)在幾個(gè)特別的文件中。

      完整命令如下:

      “cmd lc svnlook tree /repoPath/repoName”

      該命令的返回值通過管道的方式在程序中獲取到,由于描述目錄結(jié)構(gòu)的文本比較復(fù)雜,所以采用遞歸的方式解析文本,生成目錄樹。

      4)創(chuàng)建和刪除用戶

      無法通過命令的方式來創(chuàng)建和刪除用戶,因?yàn)镾ubversion并沒有相關(guān)的命令。

      Subversion通過倉庫目錄下conf目錄中的文件控制用戶相關(guān)的信息。默認(rèn)指定為/conf/ipasswd文件,修改此文件即可管理svn用戶信息。但在本程序中,為了讓所有的倉庫都有相同的用戶賬戶信息,更改了默認(rèn)的用戶信息文件為倉庫的根目錄所在的目錄(即repoPath)下的Password文件。

      通過修改svnserve.conf文件的內(nèi)容來更改指定用戶信息文件:

      [general]

      password-db= ../../Password

      相關(guān)修改已經(jīng)在創(chuàng)建倉庫時(shí)完成。

      添加用戶只需在Password文件中[users]選項(xiàng)下添加:

      userName:passWord

      需要說明的是,由于本程序添加了三員賬戶,而Subversion原本只有開發(fā)者賬戶,用戶信息文件中無法記錄用戶的身份類型,所以本程序另外使用名為Auth的文件來管理自己登陸時(shí)所需的賬戶,其中一條用戶記錄的形式如下:

      userName:passWord:character

      其中character代表用戶的身份,如系統(tǒng)管理員,開發(fā)者等。

      Auth文件只是本管理程序使用,Subversion依舊使用Pass-word文件記錄svn用戶。

      刪除用戶時(shí),需要遍歷所有倉庫的authz文件,刪除其中與之有關(guān)的記錄。

      5)創(chuàng)建.刪除、修改用戶組

      與svn用戶信息類似,組信息被Subversion默認(rèn)記錄在倉庫目錄下/confg/group文件中,本程序同樣在創(chuàng)建庫時(shí)通過修改svnserve.conf文件來更改指定的組信息文件:

      [general]

      groups-db= ../../Groups

      在[groups]下一條組信息記錄形式如下:

      gl= aaa,bbb

      其中等號前的91代表組名,等號后的是組成員,用逗號隔開。在[groups]下修改或添加組信息記錄即可實(shí)現(xiàn)對用戶組的管理。

      刪除組時(shí),也需要遍歷所有倉庫的authz文件,刪除其中與之有關(guān)的記錄。

      6)獲取倉庫目錄日志

      通過svn命令來獲取Subversion自己記錄的倉庫目錄提交日志,完整命令如下:

      “cmd/c svn log -username auditManager -password123456 svn://127.O.O.I/dirPath l grep -Ev“^一一一|^$…

      為了便于解析命令返回的文本結(jié)果,用grep對文本進(jìn)行了一些處理,去掉了不需要的一些信息。

      7)三員日志

      三員日志被本程序記錄在repoPath下的Log中,在三員用戶使用本程序時(shí),其進(jìn)行的各種SVN管理操作都會(huì)被記錄到其中,一條日志記錄形式如下:

      “2019-11-4 14: 59: 36安全管理員修改權(quán)限:[/]:hjdcx-uopl= rw hjdcxuop3=r@gl= rw“

      8)基于目錄的權(quán)限分配

      同樣與SVN用戶信息和組信息類似,權(quán)限相關(guān)信息被Sub-version記錄在倉庫目錄下的/conf/authz文件中。由于各倉庫需要具有各自的權(quán)限配置,所以不需要修改svnserve.conf文件來指定公用的權(quán)限信息文件,使用各倉庫默認(rèn)獨(dú)有的authz文件即可。程序通過修改該文件即可實(shí)現(xiàn)權(quán)限配置。

      文件典型內(nèi)容如下:

      [/]

      hjdcxuopl= rw

      hj dcxuop3=r

      [/vv/asd]

      bbb= rw

      [/vv/新建文本文檔.txt]

      bbb= rw

      其中,每個(gè)口里的內(nèi)容代表該authz文件所屬倉庫里的一個(gè)目錄,其下則是對這個(gè)目錄或文件的權(quán)限配置信息,[/]代表對整個(gè)倉庫的權(quán)限。

      權(quán)限配置信息中,等號前的代表用戶或組,若是組,則必定已@開頭,例如:

      [/]

      @A=r

      代表A組對整個(gè)倉庫具有只讀權(quán)限。等號后代表權(quán)限,‘r代表讀權(quán)限,‘w代表寫權(quán)限,留空代表沒有任何權(quán)限。

      關(guān)于權(quán)限配置的額外說明:

      ①子目錄會(huì)默認(rèn)繼承父目錄的權(quán)限信息,若一個(gè)用戶或組對一個(gè)目錄具有只讀權(quán)限,則該用戶和組對此目錄下的所有目錄都有只讀權(quán)限。

      ②authz文件中對一個(gè)目錄進(jìn)行的顯式配置會(huì)覆蓋其默認(rèn)繼承的父目錄權(quán)限。

      ③對位于目錄樹結(jié)構(gòu)中葉節(jié)點(diǎn)位置的文件或空目錄進(jìn)行配置是不生效的,即只能通過它們的父目錄來控制權(quán)限。

      9)密級標(biāo)注

      由于只有涉密和非密兩種密級,所以程序里的目錄樹中直接以紅色字體表示涉密,普通黑色字體表示非密。 為了在程序關(guān)閉后能記住標(biāo)密信息,進(jìn)行標(biāo)密操作時(shí),相關(guān)信息會(huì)記錄到repoPathT的Secret文件中。其中記錄了被標(biāo)密的目錄。

      3 結(jié)論

      本方法通過構(gòu)建界面,設(shè)計(jì)分權(quán)限管理機(jī)制,直接調(diào)用SVN的命令行實(shí)現(xiàn)了一個(gè)具備安全權(quán)限管理的SVN軟件,滿足了三員管理,權(quán)限分配,代碼倉庫分密級管理等功能。對于基于SVN軟件進(jìn)行二次開發(fā)和功能擴(kuò)展具有一定的借鑒意義。

      參考文獻(xiàn):

      [1](美)梅森.版本控制之道——使用Subversion第2版[M].陶文,譯.北京:電子工業(yè)出版社,2007.

      [2](美)Michael Pilat.(美)Ben CollinsSuSSlnan,(美)BrianW.Fitz-patrick.使用subversion進(jìn)行版本控制(影印版)[M].北京:開明出版社,2009.

      【通聯(lián)編輯:代影】

      猜你喜歡
      管理工具日志倉庫
      倉庫里的小偷
      一名老黨員的工作日志
      質(zhì)量管理工具在減少CT停機(jī)天數(shù)中的應(yīng)用
      填滿倉庫的方法
      扶貧日志
      心聲歌刊(2020年4期)2020-09-07 06:37:14
      面向Docker Compose多容器構(gòu)建管理工具的設(shè)計(jì)與實(shí)現(xiàn)
      四行倉庫的悲壯往事
      游學(xué)日志
      hosts文件管理工具
      消防設(shè)備
      马龙县| 阳江市| 富顺县| 全南县| 鹿邑县| 永和县| 虎林市| 金寨县| 宜昌市| 健康| 怀化市| 台南市| 浦县| 喀什市| 曲麻莱县| 定边县| 酉阳| 孟村| 安多县| 台东市| 连南| 甘泉县| 蒲江县| 峡江县| 余干县| 宁安市| 顺义区| 文山县| 临沂市| 荆门市| 安阳县| 什邡市| 呼图壁县| 韶关市| 扶沟县| 鹰潭市| 阿合奇县| 增城市| 浦江县| 金昌市| 绍兴县|