Svnserve-palvelin

Johdanto

Subversion sisältää Svnserve-ohjelman, pienen arkistopalvelimen, joka käyttää omaa yhteyskäytäntöään TCP/IP-yhteyden yli. Se soveltuu erinomaisesti pieniin asennuksiin tai ympäristöihin, joissa Apache-palvelinta ei voi käyttää.

Useimmissa tapauksissa svnserve on helpompi ottaa käyttöön ja nopeampi kuin Apache-pohjainen palvelin, vaikkakin siltä puuttuu muutamia kehittyneempiä ominaisuuksia. SASL-tuen ansiosta se on myös helppo turvata.

Svnserven asennus

  1. Nouda Subversion-ohjelman viimeinen versio osoitteesta http://subversion.apache.org/getting.html. Vaihtoehtoisesti voit noutaa CollabNet-asennusohjelman osoitteesta http://www.collab.net/downloads/subversion. Jälkimmäinen asentaa svnserve-ohjelman suoraan Windows-palveluksi ja sisältää myös muutamia SASL-työkaluja.

  2. Mikäli Subversion on jo asennettu (ja svnserve on käynnissä), sinun pitää pysäyttää se ennen asennuksen jatkamista.

  3. Suorita Subversion-asennusohjelma. Jos suoritat asennuksen palvelimellasi (suositeltavaa), voit ohittaa kohdan 4.

  4. Avaa resurssienhallinta ja siirry Subversion-asennushakemistoon (yleensä C:\Program Files\Subversion); etsi bin-hakemistosta tiedostot svnserve.exe, intl3_svn.dll, libapr.dll, libapriconv.dll, libapriutil.dll, libdb*.dll, libeay32.dll ja ssleay32.dll - kopioi nämä tiedostot (vaihtoehtoisesti koko bin-hakemisto), uuteen hakemistoon palvelimellasi (esim. c:\svnserve).

Svnserven käynnistys

Kun svnserve on nyt asennettu, se pitää saada käyntiin palvelimella. Helpoiten tämä onnistuu suorittamalla seuraava komento DOS-ikkunassa (voit myös luoda Windows-pikakuvakkeen):

svnserve.exe --daemon

svnserve käynnistyy ja alkaa odottaa palvelupyyntöjä portissa 3690. Valitsin --daemon ohjaa svnserven käynnistymään palveluna, jolloin se on aina käynnissä, kunnes lopetetaan käsin.

Jos et ole vielä luonut arkistoa, seuraa Apachen-palvelimen asennuksen antamia ohjeita: ”Määrittely”.

Testataksesi svnserven toiminnan, käynnistä TortoiseSVNArkistoselain, jolla voit tutkia arkiston sisältöä.

Olettaen, että arkistosi sijaitsee paikassa c:\repos\TestRepo ja palvelimesi nimi on localhost, syötä:

svn://localhost/repos/TestRepo

arkistoselaimen kysyessä sitä.

Voit myös lisätä tietoturvaa ja säästää aikaa syöttäessäsi paikantimia svnserve-komennolle käyttämällä --root -valitsinta juuripolun asettamiseen ja pääsyn rajoittamiseen:

svnserve.exe --daemon --root drive:\path\to\repository\root

Käyttämällä edellistä testiä esimerkkinä, svnserve suoritettaisiin valitsimilla

svnserve.exe --daemon --root c:\repos

TortoiseSVN:ssä arkistoselaimen paikannin lyhentyy nyt puolestaan muotoon

svn://localhost/TestRepo

Huomaa, että --root -valitsinta tarvitaan myös, mikäli arkistosi sijaitsee palvelimellasi eri osiolla tai asemassa kuin svnserve-komento.

Svnserve ei aseta rajoituksia arkistojen määrälle. Riittää, kun sijoitat ne jonnekin määrittelemäsi juurihakemiston alle ja käytät osoitteissa juuren suhteen suhteellista paikanninta.

Varoitus

Älä luo tai kytkeydy Berkeley DB -tekniikalla toteutettuun arkistoon verkkojaon kautta. Se ei voi sijaita etätiedostojärjestelmässä. Ei edes silloin, kun olet kytkenyt verkkojaon asemakirjaimeen. Jos yrität käyttää Berkeley DB-tekniikalla toteutettua arkistoa verkkojaon kautta, tulokset eivät ole ennustettavissa - saatat saada heti kummallisia virheitä, tai voi mennä kuukausia ennen kuin havaitset, että arkisto on hienovaraisesti mennyt rikki.

Svnserven suorittaminen Windows-palveluna

Svnserven suorittaminen normaalina käyttäjänä ei ole yleensä paras tapa. Se tarkoittaa, että palvelimellasi pitää aina olla joku käyttäjä kirjautuneena, myös mahdollisten uudelleen käynnistysten jälkeen. On parempi suorittaa svnserve Windows-palveluna. Subversion-versiosta 1.4 lähtien svnserve voidaan asentaa Windows-palveluksi.

Asentaaksesi svnserven palveluna, joka käynnistyy automaattisesti Windowsin käynnistyessä, suorita seuraava komento (kaikki yhdellä rivillä).

sc create svnserve binpath= "c:\svnserve\svnserve.exe --service 
    --root c:\repos" displayname= "Subversion" depend= tcpip 
    start= auto

Mikäli joissain poluissa on välilyöntejä, pitää ne ympäröidä lainausmerkein:

sc create svnserve binpath= "
    \"C:\Program Files\Subversion\bin\svnserve.exe\"
    --service --root c:\repos" displayname= "Subversion" 
    depend= tcpip start= auto

Voit myös lisätä kuvauksen luotuasi palvelun. Tämä näkyy Windowsin Palvelut-toiminnossa.

sc description svnserve "Subversion server (svnserve)"

Huomaa sc -komennon käyttämä epätavallinen komentorivisyntaksi. Alkiossa avain= arvo avaimen ja merkin = välillä ei saa olla välilyöntiä, mutta ennen arvoa tulee olla välilyönti.

Vihje

Microsoft suosittelee nykyisin, että palvelut suoritetaan joko Local Service tai Network Service -tunnuksella. Katso lisätietoja dokumentista The Services and Service Accounts Security Planning Guide. Luodaksesi palvelun Local Service -tunnukselle, lisää seuraava yllä olevaan esimerkkiin:

obj= "NT AUTHORITY\LocalService"

Huomaa, että Local Service -tunnukselle tulee antaa riittävät oikeudet sekä Subversioniin että arkistoihisi. Tämä pätee myös komentojonojen käyttämiin sovelluksiin. Tällaisille käyttäjille on valmiiksi ryhmä nimeltä "LOCAL SERVICE".

Kun olet asentanut palvelun, sinun pitää avata Windowsin Palvelut-toiminto ja käynnistää se (vain yhden kerran; jatkossa se käynnistyy automaattisesti uudelleen käynnistyksen yhteydessä.)

Katso lisätietoja dokumentista Windows Service Support for Svnserve.

Mikäli asensit aiemman version svnservestä käyttäen SVNService -kehyskomentoa, ja haluat nyt käyttää suoraa Windows-komentoa, sinun pitää poistaa kehyskomennon rekisteröinti (muista pysäyttää palvelu ensin!). Käytä komentoa

svnservice -remove

poistaaksesi palvelun rekisteriasetukset.

Perustunnistaminen svnserveä käytettäessä

Oletusarvoisesti svnserve tarjoaa anonyymin lukuoikeuden arkistoon. Voit siis käyttää svn://-paikanninta työkopion hakuun tai päivittämiseen ja tutkia arkistoa TortoiseSVN:n arkistoselaimella. Et voi kuitenkaan toimittaa muutoksia arkistoon.

Salliaksesi arkistoon kirjoittamisen sinun on muokattava conf/svnserve.conf-tiedostoa, joka sijaitsee arkiston sisältävässä hakemistossa. Tämä tiedosto määrittää svnserve-palvelun asetukset ja sisältää myös hyödyllistä tietoa.

Voit sallia anonyymin kirjoitusoikeuden asettamalla yksinkertaisesti:

[general]
anon-access = write

Huomaa kuitenkin, että tieto muutosten tekijästä ei tällöin säily, koska svn:author -ominausuus in tyhjä. Et voi myöskään määritellä, kuka saa tehdä muutoksia arkistoon. Tästä syystä tällainen asetus on riskialtis!

Eräs keino päästä tästä yli on luoda tunnussanatietokanta:

[general]
anon-access = none
auth-access = write
password-db = userfile

missä userfile on tiedosto, joka sijaitsee samassa hakemistossa kuin svnserve.conf. Tämä tiedosto voi sijaita muualla tiedostojärjestelmässäsi (hyödyllistä kun useilla arkistoilla on samat saantioikeudet) ja siihen voidaan viitata absoluuttisella polulla , tai suhteessa conf-hakemistoon. Jos sisällytät polun, se tulee kirjoittaa /unix/käyttöjärjestelmän/tyylillä. \ tai asematunnukset eivät toimi. Tiedoston userfile rakenteen tulee olla seuraava:

[users]
username = password
...

esimerkki kieltäisi kaikenlaisen käytön anonyymeiltä käyttäjiltä ja antaisi luku- ja kirjoitusoikeudet tiedostossa userfile luetelluille käyttäjille.

Vihje

Jos pidät yllä useita arkistoja käyttäen samaa tunnussanatietokantaa, tunnistusalueen käyttö helpottaa käyttäjien elämää, koska TortoiseSVN voi tallettaa salasanatietosi, eikä niitä tarvitse syöttää kuin kerran. Löydät lisätietoa Subversion-kirjasta, erityisesti osista Create a 'users' file and realm ja Client Credentials Caching.

Parempaa tietoturvaa SASLin avulla

Mikä SASL on?

Cyrus Simple Authentication and Security Layer (SASL) on Carnegie Mellon -yliopistossa kehitetty avoimen lähdekoodin ohjelmisto. Se lisää tunnistus- ja salausominaisuudet mihin tahansa verkkoyhteyskäytäntöön, ja Subversion-ohjelman versiosta 1.5 lähtien sekä svnserve-palvelin että TortoiseSVN-asiakas tukevat sitä.

Täydellisempi kuvaus löytyy Subversion-kirjan luvusta Using svnserve with SASLUsing svnserve with SASL

SASL-tunnistaminen

Aktivoidaksesi SASL-mekanismeja palvelimella joudut tekemään kolme asiaa. Ensinnäkin, luo [sasl] -osio arkistosi svnserve.conf -tiedostoon ja lisää siihen seuraava asetus:

use-sasl = true

Luo seuraavaksi svn.conf-niminen tiedosto sopivaan paikkaan - tyypillisesti Subversion-asennushakemistoon.

Kolmanneksi, luo kaksi uutta rekisteriavainta kertoaksesi SASLin käyttöön. Luo avain [HKEY_LOCAL_MACHINE\SOFTWARE\Carnegie Mellon\Project Cyrus\SASL Library] ja lisää siihen kaksi uutta merkkijonoavainta: SearchPath, joka kertoo sasl*.dll-tiedostot sisältävän hakemistopolun (tavallisesti Subversion-asennushakemisto), ja avain ConfFile, joka sisältää svn.conf-tiedoston hakemistopolun. Jos käytät Collabnet-asennusohjelmaa, rekisteriavaimet luodaan automaattisesti.

Muokkaa svn.conf-tiedostoa seuraavasti:

pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: DIGEST-MD5
sasldb_path: C:\TortoiseSVN\sasldb

Viimeinen rivi ilmoittaa tunnistustietokannan (tiedosto sasldb) sijainnin. Tietokanta voi sijaita missä tahansa, mutta se pn näppärää sijoittaa arkistot sisältävään hakemistoon. Varmista, että svnserve-palvelu kykenee lukemaan tiedoston.

Jos svnserve on jo käynnissä, joudut käynnistämään sen uudelleen, jotta se lukisi määritykset uudelleen.

Nyt, kun kaikki on valmista, riittää, kun luot käyttäjät ja salasanat. Tämän tehdäksesi tarvitset ohjelmaa saslpasswd2. Jos käytät CollabNetin toimittamaa asennusta, tämä ohjelma löytyy asennushakemistosta. Anna seuraava komento:

saslpasswd2 -c -f C:\TortoiseSVN\sasldb -u realm username

Valitsin -f määrittää tietokannan sijainnin, ja merkkijonon realm on täsmättävä arkistosi svnserve.conf-tiedoston vastaavan kanssa. Viimeinen parameteri username on uuden käyttäjän nimi. Huomaa, että realm ei saa sisältää välilyöntejä.

Voit luetella tietokannan käyttäjätunnukset ohjelmalla sasldblistusers2.

SASL-salaus

Salliaksesi tai estääksesi eri salaustasoja, voit asettaa kaksi arvoa arkistosi svnserve.conf -tiedostoon:

[sasl]
use-sasl = true
min-encryption = 128
max-encryption = 256

Muuttujat min-encryption ja max-encryption määrittävät palvelimen vaatiman salaustason. Aseta molemmat arvot nolliksi estääksesi salauksen täysin. Aseta molemmat arvot ykkösiksi käyttääksesi yksinkertaista tarkistussummaa tiedon siirtoon (estää tiedon muuttamisen ja takaa tietojen yhtenäisyyden ilman salausta). Jos haluat sallia (muttet vaatia) salausta, aseta minimiarvo nollaksi ja maksimiarvo bittisalausavaimen pituuteen. Vaatiaksesi salausta aina, aseta molemmat arvot suuremmiksi kuin yksi. Edellisessä esimerkissämme vaadimme asiakkailta vähintään 128-bittistä ja korkeintaan 256-bittistä salausta.

Tunnistaminen svn+ssh -yhteyskäytännöllä

Toinen tapa tunnistaa svnserve-pohjaisen palvelimen käyttäjät on käyttää SSH-tekniikkaa. Se ei ole yhtä helppo asentaa kuin SASL, mutta voi olla joskus hyödyllinen.

Tällöin svnserveä ei suoriteta palveluna, vaan SSH käynnistää svnserven puolestasi tunnistettuna SSH-käyttäjänä. Tätä varten palvelimelle pitää asentaa SSH-palvelu.

Luvussa Liite G, Svnserven turvaaminen SSH-tekniikalla kuvataan palvelimen asennuksen vaiheet. Löydät lisää SSH-artikkeleita FAQ-osiosta etsimällä termiä ”SSH”.

Lisätietoa svnservestä löytyy Subversion-kirjasta, kappaleesta Version Control with Subversion.

Polkuihin perustuva valtuutus svnservellä

Subversion-versiosta 1.3 alkaen svnserve tukee samaa mod_authz_svn polkuihin perustuvaa valtuutusmekanismia kuin mikä on käytössä Apache-palvelimella. Ottaaksesi sen käyttöön sinun pitää muokata tiedostoa conf/svnserve.conf arkiston asennushakemistossa ja lisätä rivi, joka viittaa valtuutustiedostoosi.

[general]
authz-db = authz

Tässä authz on tiedosto, johon määrittelet saantioikeudet. Voit käyttää erillistä tiedostoa kullekin arkistolle tai voit jakaa saman tiedoston useiden arkistojen välillä. Luvusta ”Polkuperustainen valtuutus” löydät tiedoston rakenteen kuvauksen.