CVS hoidla kasutamine Linuxiga

Allikas: Kuutõrvaja

Hoidla tekitamine

CVSi all arendatava projekti alustamisel peab olema kasutada olemasolev hoidla või projektijuht tekitab uue hoidla. Hoidla jaoks peab omama piisavalt kettaressurssi projekti ülalpidamiseks. Käsuga init tekitatakse tühi hoidla ning seda võib teha nii juurkasutajana kui ka tavakasutajana

bash~$ cvs -d /home/priit/repo init

Tulemusena tekitatakse kataloog /home/priit/repo ning sellesse alamkataloog CVSROOT, kus asuvad selle hoidla konfiguratsiooni- ja logifailid.

Hoidla pikk nimi on antud juhul cvs.zoo.tartu.ee:/home/priit/repo' ja lühike '/home/priit/repo'. Hoidlale vastab failisüsteemi kataloogistruktuur, kusjuures hoidla juurikas /home/priit/repo tekitatakse vaikimisi õigustega 'rwxrwxr-x'.

Hoidlas olevad failid on vaikimisi õigustega '-r--r--r--' ja kataloogid õigustega 'drwxrwxr-x'. Failid on selle kasutaja omad, kes nad hoidlasse tekitas või viimati muutis.

Projekti alustamine

Kõige alguses peab projektijuht projektile vastavad failid hoidlasse importima.

Sisenege kataloogi, kus ja mille all on projekt ja kasutage käsku import koos teiste sobivate argumentidega

bash~$ cd ~/energia
bash~$ cvs -d /home/priit/repo import -m "Loomaaia energia-programm" energia vt rt
cvs import: Importing /home/priit/repo/energia/valgustus
N energia/valgustus/muuseum
N energia/valgustus/pingviinid
N energia/valgustus/expo
N energia/valgustus/pelikanid
N energia/kyte
N energia/toit
N energia/toit/louna
N energia/toit/ohtu
N energia/toit/hommik

No conflicts created by this import

antud korralduses näitab:

  • -d Hoidla asukoht
  • import Tegu on failide esialgse hoidlasse sisestamisega; selleks otstarbeks parameetrit import enamasti kasutatakse
  • -m "kommentaar" Kommentaar (kui seda ei anna, avaneb vahepeal tekstiredaktor ja teilt küsitakse seda)
  • Hoidlasse tekitatakse kõnealune projekt kataloogi energia alla; 'eneriga'-t tuleb ka edaspidi kasutada sellele projektile viitamiseks
  • vt ja rt on vastavalt vendor tag ja release tag, mille olemasolu pole hoidla kasutamisel praktiliselt oluline

Peale käsu sisestamist antakse teada, millised failid ja kataloogid hoidlasse tekitati ja kas see õnnestus. Praktiline on käsu väljund püüda kinni UNIXi programmiga 'tee', et seda hiljem uurida. Rea alguses olev täht viitab:

  • N - hoidlasse lisati fail, mida seal enne ei olnud
  • L - fail, mida impordite, on sümboolne link ja neid CVS veel ei toeta

Peale projekti versioonikontrolli alla viimist tekib hoidlasse vastav kataloog, antud juhul energia.

Hoidlale ja projektidele ligipääsu kontrollimine

Kasutaja tegutseb alati hoidlas mingi selle süsteemi kasutaja ja grupi õigustes, kus hoidla asub. Kasutaja loodud failid tekivad tema kasutaja ja grupiga. Sarnaselt, kasutajal on õigus lugeda, muuta, luua ja eemaldada ainult neid faile, millele tal UNIXi kasutajana õigus on. Lisaks peab kasutajal olema õigus näiteks kirjutada CVSi hoidla logisse faili CVSROOT/history.

Traditsiooniliselt soovitatakse hoidla ja selle projektidele ligipääsu kontrollida, seades hoidla ja projekti kataloogidele sobivad loabitid ning võimalusel ka UNIXi kasutajad-grupid. Arusaadavalt eeldab UNIXi kasutajate-gruppidega hoidla ligipääsu manipuleerimine süsteemi juurkasutaja õigusi.

Põhimõtteliselt saab küll ka iga failile kasutajate ligipääsu kontrollida, kuid praktiliselt soovitatakse seda teha kataloogide kaupa.

CVSi serveri konfigureerimine

CVSi kasutamiseks hoidlaga samas masinas ja ka üle võrgu saab läbi ajada (kauge) koorikuga, kuid see eeldab, et CVSi kasutaja on ka hoidla masina UNIXi kasutaja. Kui CVSi kasutaja ei saa olla tingimata hoidla masina UNIXi kasutaja, siis tuleb tarvitada CVSi serverit. Sealjuures tuleb tekitada tavapärasel viisil hoidla ja CVSi kasutajad.

Tavaliselt soovitatakse CVSi server käivitada juurkasutajaõigustes, mis võimaldab tal erinevate kasutajate kasutajate-gruppidega faile hoidlasse moodustada.

CVSi serveri konfigureerimine

Lisage hoidla masina faili /etc/inetd.conf ühele reale

2401 stream tcp nowait root /usr/bin/cvs cvs -f --allow-root=/home/repo pserver

Kui teie UNIX nõuab failis /etc/inetd.conf sümboolsete teenusenimede kasutamist, lisage faili /etc/services rida

cvspserver 2401/tcp

ja kirjutage faili /etc/inetd.conf arvu 2401 asemele 'pserver'.

Kui te soovite CVSi kasutada tavakasutaja õigustes, mis on tõenäoliselt turvalisem, siis asendage kasutaja nime element root eeltoodud reas selle kasutaja nimega. Tüüpiliselt tehaks sel juhul süsteemi spetsiaalne kasutaja, näiteks cvs grupiga cvs. Arvestage, et kuna CVS töötab sel juhul kasutaja cvs õigustes, siis saab ta toimetada hoidlas nii nagu UNIXi kasutaja cvs seda teha saab.

Kasutajate tekitamine

Looge kasutajate paroolifail, näiteks /home/priit/repo/CVSROOT/passwd, mille sisu on järgmise struktuuriga, elemente eraldab koolon (:)

cvsikasutajanimi:crypt()parool[:vastavunixikasutajanimi]

kus:

  • cvsikasutajanimi - kasutajanimi, mida kasutatakse CVSi serverisse sisselogimisel ja mida kasutab CVS näiteks oma logides
  • crypt()parool - krüptitud parool ASCII kujul, sarnaselt /etc/passwd DESi variandile
  • vastavunixikasutajanimi - kui see väli eksisteerib, siis ei pruugi cvsikasutaja olla hoidla masina UNIXi kasutaja; vastava CVSi kasutaja toimingud sooritataks hoidla masinas vasatavaunixikasutaja õigustes

Näiteks CVSi paroolifail, mis kirjeldab CVSi kasutajad mart ja laa, kes on hoidla masina UNIXi kasutaja ning CVSi kasutaja priit kes ei ole

mart:H.wxPexbEa0qA
priit:A.xgPhjeRT0nB:cvs
laa:A.xNgPhjTRGhi:cvs

Pange tähele, et kui kasutaja laa pöördub CVSi hoidla pööle kasutades pserverit, siis toimetab ta seal kasutaja cvs õigustes. Kui ta pöördub aga hoidla pööle kasutades kauget koorikut, siis UNIXi kasutajana laa. Lisaks võib laa tekitada täiendavad võimalused hoidla kataloogi liikumiseks, kui ta logib end süsteemi sisse ja ei kasutagi CVSi klienti. Turvalise hoidla tekitamisel peab neid asjaolusid arvesse võtma ja valima olukorrale sobiva lahenduse.

CVS saadab paroole üle võrgu avatud tekstina. Apache veebiserveriga tuleb kaasa programm htpasswd, mis sobib ASCII vormis krüptitud paroolide moodustamiseks, näiteks

bash~$ touch /home/priit/repo/CVSROOT/passwd
bash~$ /usr/local/apache/bin/htpasswd -b /home/priit/repo/CVSROOT/passwd mart m1a2r3t4

Veenduge, et paroolifailil on sobivad failiõigused.

Kui CVSi hoidla konfiguratsioonifaile saab ja tuleb muuta, tehes vastava mooduli CVSROOT väljavõtte ning peale muutusi sissekande, siis paroolifaili tuleb muuta vahetult.

CVSi saab kasutada koos Kerberos IV 'ga, mis teeb pserveri kasutamise turvalisemaks. Lisaks on olmas CVSi paigad, cvsauth, mis väidetavalt võimaldab krüpteerida kogu andmevahetuse kliendi ja serveri vahel, kaasa arvatud kasutaja autentimine.

Mitme hoidla kasutamine

Soovides kasutada versioonikontrolli paindlikumalt ning sisulistele projektidele anda suurem iseseisvus, saab moodustada ka ühte masinasse mitu hoidlat, mida saavad kasutajad korraga tarvitada. Kui traditsiooniliselt seostatakse hoidla all olevad alamkataloogid projektiga, siis selles punktis seostame hoidla projektiga ning hoidla alla tehtud katalooge käsitleme alamprojektidena või suurema projekti osadena. Kataloogi, kus hoidlad asuvad, võiks nimetada superhoidlaks.

Mitme hoidla kasutamiseks moodustage mitu hoidlat tavapärasel viisil, ning /etc/inetd.conf failis näidake korduvalt parameetri --allow-root kasutamisega vastavate kataloogide asukohad. Mitmete hoidlate puhul võib saada takistuseks, et inetd.conf faili maksimaalne lubatud reapikkus. Sellest saab mööda kasutades abiskripti /etc/hoidlad

#!/bin/sh
exec cvs -f \
--allow-root=/shoidla/laul \
--allow-root=/shoidla/lein \
--allow-root=/shoidla/naer \
--allow-root=/shoidla/nutt \
pserver

ning inetd.confis muuta vastav rida selliseks

cvspserver  stream  tcp  nowait  cvs /etc/hoidlad hoidlad

Mitme hoidla kasutamise eelis on eelkõige selles, et nii saab iga hoidlaga seostada projektijuhi, kes saab muuta hoidla paroolifaile, kusjuures tema tegevus ei puutu teisi projekte. Näiteks loomaks järgmiste omadustega CVSi süsteemi:

   * Kasutatakse superhoidlat ehk mitut hoidlat, iga hoidlat käsitletakse sisuliselt projektina. Neile vastavad kataloogid asuvad kataloogis /home/shoidla
   * Ligipääs kõigile versioonikontrolli all olevatele failidele UNIXi masina seest ja väljast CVSi vahenditega on kontrolli all.
   * Iga hoidlaga on seostatud üks hoidla administraator, kes saab ainsana muuta oma hoidla paroolifaili sisu ning kokkuvõttes kontrollida, kes hoidlale
     ligi saab.
   * Reeglina ei saa ühe hoidla kasutajad, sh administraator, pääseda ligi teistele hoidlatele ei CVS vahenditega ega UNIXi süsteemi seest.
   * Kõik versioonikontrolli all olevad failid kuuluvad UNIXi kasutajale cvs grupiga cvs, va konfiguratsioonifailid.
   * Kõik hoidla tavakasutajad on CVSi kasutajad ning ei ole UNIXi süsteemi kasutajad. Nemad kasutavad CVSi hoidlaid vaid pserveri vahendusel.
   * Kõik ühe hoidla kasutajad saavad ligi kõigile hoidla failidele, so mõnede hoidla kasutajate eest ei saa teha kättesaamatuks teatud hoidlas olevaid
     alamprojekte. 

Looge süsteemi kasutaja cvs grupiga cvs. Selle kasutaja kodukataloog või selle olemasolu pole tähtis.

Näiteks tekitame neli hoidlat, so projekti: laul, naer, nutt, valu ning samanimeliste kasutaja- ja grupinimedega hoidlate administraatoritele vastavad UNIXi kasutajad. Tagamaks nimetatud tingimuste rahuldamist, tuleb luua järmine kataloogistruktuur

/home/shoidla     /laul        /CVSROOT    /passwd
775               750          570         740
root.root         cvs.laul     cvs.laul    laul.cvs
                               /laulu all olevad alamprojektid
                               770
                               cvs.cvs

                  /naer        /CVSROOT    /passwd
                  750          570         740
                  cvs.naer     cvs.naer    naer.cvs
                               /naeru all olevad alamprojektid
                               770
                               cvs.cvs
              .........

Kuna CVSi kasutajate ligipääsu kontrollib pserver ja see on nende ainuke võimalus hoidlas olevatele failidele ligi pääseda, siis saavad hoidlale ligi vaid selleks autoriseeritud kasutajad. Eeldusel, et süsteemi UNIXi kasutajad ei kuulu ühtegi projektinimelisse gruppi, puudub neil ligipääs hoidla failidele. Ainsad süsteemi kasutajad, kellel on õigus UNIXi süsteemi poolt hoidlasse siseneda, on hoidlate administraatorid ning nad pääsevad vaid oma hoidla juurde selleks, et redigeerida CVSROOT/passwd faili. Konfiguratsioonifailide muutmiseks kasutavad nad CVSi klienti, administraatori kasutajana üle kauge kooriku tegutsevad nad hoidlas administraatori õigustes.

Kirjeldatud kataloogistruktuuri moodustab skript, see tuleb käivitada süsteemi juurkasutaja õigustes.

#!/bin/sh
sh="/home/shoidla"
mkdir $sh
cvsu="cvs"
cvsg="cvs"
cd $sh
for i in laul naer nutt valu
do
   echo $i
   su - $cvsu -c "cvs -d $sh/$i init"
   touch $sh/$i/CVSROOT/passwd
   chown -R $cvsu.$i $sh/$i
   chown $i.$cvsg $sh/$i/CVSROOT/passwd
   chmod 750 $sh/$i
   chmod 570 $sh/$i/CVSROOT
   chmod 740 $sh/$i/CVSROOT/passwd
done

Seejärel tuleb iga hoidla administraatoril tekitada oma hoidla kasutajad, redigeerides CVSROOT/passwd faili. Näiteks projektil laul on kolm kasutajat: rahvalaul, lorilaul, serenaad. Sel juhul tuleb tekitada selline paroolifail

rahvalaul:parool:cvs
lorilaul:parool:cvs
serenaad:parool:cvs

Edasi saavad need kasutajad oma hoidlasse projekte importida tavapärasel moel ning jätkata hoidla rutiinset kasutamist.

© EENet 2000