Kjøre en Subversion Server

Kjøre en Subversion Server

Denne delen vil beskrive hvordan du setter opp, administrerer og sikrer en Subversion server.

Subversion Server Avhengigheter

Påkrevd

Subversion-1.14.4 og OpenSSH-9.9p1

Sette opp en Subversion Server.

Følgende instruksjoner vil installere en Subversion server, som vil bli satt opp for å bruke OpenSSH som en sikker fjerntilgangs metode, med svnserve tilgjengelig for anonym adgang.

Konfiguringen av Subversion server består av følgende trinn:

1. Sett opp brukere, grupper og tillatelser

Du må være bruker root for den første delen av konfigurasjonen. Opprett svn bruker og gruppe med følgende kommandoer:

groupadd -g 56 svn &&
useradd -c "SVN Owner" -d /home/svn -m -g svn -s /bin/false -u 56 svn

Hvis du planlegger å ha flere depoter, bør du ha en gruppe dedikert til hvert depot for enkel administrasjon. Opprett svntest gruppe for testdepot og legg til svn bruker til den gruppen med følgende kommandoer:

groupadd -g 57 svntest &&
usermod -G svntest -a svn

I tillegg bør du sette umask 002 samtidig som arbeider med et depot slik at alle nye filer vil være skrivbare av eier og gruppe. Dette gjøres obligatorisk ved å lage et innpakningsskript for svn og svnserve:

mv /usr/bin/svn /usr/bin/svn.orig &&
mv /usr/bin/svnserve /usr/bin/svnserve.orig &&
cat >> /usr/bin/svn << "EOF"
#!/bin/sh
umask 002
/usr/bin/svn.orig "$@"
EOF
cat >> /usr/bin/svnserve << "EOF"
#!/bin/sh
umask 002
/usr/bin/svnserve.orig "$@"
EOF
chmod 0755 /usr/bin/svn{,serve}
[Notat]

Notat

Hvis du bruker Apache for å jobbe med depotet over HTTP, selv for anonym tilgang, bør du pakke inn /usr/sbin/httpd i et lignende skript.

2. Opprett et Subversion depot.

Det er flere måter å sette opp et subversion depot. Det anbefales å ta en titt på SVN Book tilsvarende kapittel. Et grunnleggende depot kan settes opp med instruksjonene nedenfor.

Opprett et nytt Subversion depot med følgende kommandoer (som root bruker):

install -v -m 0755 -d /srv/svn &&
install -v -m 0755 -o svn -g svn -d /srv/svn/repositories &&
svnadmin create /srv/svn/repositories/svntest

Nå som depotet er opprettet, skal det fylles ut med noe nyttig. Du må ha en forhåndsdefinert mappe utforming satt opp akkurat slik du vil at depotet ditt skal se ut. For eksempel, her er et eksempel på BLFS utformingsoppsett med en rot av svntest/. Du må sette opp et mappetre som ligner på følgende:

svntest/            # The name of the repository
   trunk/           # Contains the existing source tree
      BOOK/
      bootscripts/
      edguide/
      patches/
      scripts/
   branches/        # Needed for additional branches
   tags/            # Needed for tagging release points

Når du har opprettet mappeoppsettet som vist ovenfor, er du klar til å utføre den første importen:

svn import -m "Initial import." \
    </path/to/source/tree>      \
    file:///srv/svn/repositories/svntest

Endre nå eier- og gruppeinformasjon for depoet, og legg til en uprivilegert bruker for svn og svntest gruppene:

chown -R svn:svntest /srv/svn/repositories/svntest    &&
chmod -R g+w         /srv/svn/repositories/svntest    &&
chmod g+s            /srv/svn/repositories/svntest/db &&
usermod -G svn,svntest -a <username>

svntest er gruppen tilordnet til svntest depotet. Som nevnt tidligere, letter dette administrasjon av flere depoter ved bruk av OpenSSH for autentisering. Fremover, må du legge til den uprivilegerte brukeren din og eventuelle andre brukere som du ønsker å ha skrivetilgang til depotet, til svn og svntest gruppene.

I tillegg vil du legge merke til at i det nye depotet db mappen er set-groupID. Hvis begrunnelsen ikke umiddelbart er åpenbart når du bruker en ekstern autentiseringsmetode (som for eksempel ssh), den klebrige biten er satt slik at alle nye filer vil eies av brukeren, med gruppen svntest. Hvem som helst i svntest gruppen kan opprette filer, men fortsatt gi hele gruppen skrivetilgang til disse filene. Dette unngår å låse ut andre brukere fra depotet.

Gå nå tilbake til en uprivilegert brukerkonto, og ta en titt på det nye depotet med svnlook:

svnlook tree /srv/svn/repositories/svntest/
[Notat]

Notat

Du må kanskje logge ut og inn igjen for å oppdatere gruppemedlemskapet ditt. su <username> bør fungere også.

3. Konfigure Serveren

Som nevnt tidligere, vil disse instruksjonene konfigurere serveren til å kun bruke ssh for skrivetilgang til depoet og å gi anonym tilgang ved hjelp av svnserve. Det er flere andre måter å tilby tilgang til depotet. Disse tilleggskonfigurasjonene er best forklart på https://svnbook.red-bean.com/.

Tilgangskonfigurasjon må gjøres for hvert depot. Opprett svnserve.conf filen for svntest depoet ved hjelp av følgende kommandoer:

cp /srv/svn/repositories/svntest/conf/svnserve.conf \
   /srv/svn/repositories/svntest/conf/svnserve.conf.default &&

cat > /srv/svn/repositories/svntest/conf/svnserve.conf << "EOF"
[general]
anon-access = read
auth-access = write
EOF

Det er ikke mye i konfigurasjonsfilen i det hele tatt. Du vil merke at kun den generelle delen kreves. Ta en titt på svnserve.conf.default filen for informasjon om bruk av svnserve sin innebygde autentiseringsmetode.

4. Starte Serveren

For å starte serveren ved oppstart, installer svnserve.service enheten fra blfs-systemd-units-20240916 pakken:

make install-svnserve

I tillegg krever instruksjonene ovenfor at svn serveren bruker umask 002 slik at alle nye filer vil kunne skrives av eier og gruppe. Dette kan oppnås ved å lage en systemd enhetsoverstyringsfil ved å kjøre følgende kommando:

mkdir -p /etc/systemd/system/svnserve.service.d
echo "UMask=0002" > /etc/systemd/system/svnserve.service.d/99-user.conf

Alternativer som sendes til svnserve nissen kan endres i /etc/default/svnserve.