Denne delen vil beskrive hvordan du setter opp, administrerer og sikrer 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:
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}
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.
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/
Du må kanskje logge ut og inn igjen for å oppdatere
gruppemedlemskapet ditt. su
<username>
bør fungere også.
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.
For å starte serveren ved oppstart, installer svnserve.service
enheten fra blfs-systemd-units-20240205 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
.