Unix’ User/Group-Kombinationen reichen nicht aus, um z.B. einigen Usern Schreib- und anderen nur Lesezugriff auf CVS-Repositories bzw. einzelnen Repository-Untervereichnissen zu geben. Mit ALCs ist dies jedoch möglich.
Wir benutzen zwei Gruppen für Benutzer, die entweder nur lesend oder auch schreibend auf unser Repository zugreifen dürfen:
Das Repository für unser Projekt ist schnell erstellt:
mkdir -m 2770 /cvs/repository/myproject
chgrp -R cvs-project-w /cvs/repository/myproject
cvs -d /cvs/repository/myproject init
chmod g+rw /cvs/repository/myproject/CVSROOT
# ggf. auch diese beiden Zeilen, siehe unten
# chmod -R o+r /cvs/repository/myproject/CVSROOT
# chmod o+x /cvs/repository/myproject/CVSROOT
chmod g+x
chmod g+rw /cvs/repository/myproject/CVSROOT
Mitglieder der Gruppe cvs-myproject-w können jetzt bereits fröhlich arbeiten.
Um nun auch z.B. externen Mitarbeitern Lesezugriff zu gestatten, benutzen wir die zweite Gruppe cvs-myproject-r. Dieser Gruppe gestatten wir per ACL lesenden Zugriff. Dazu muss das entsprechende Dateisystem ACLs unterstützen.
mount -o remount,acl $CVS_PARTITION
setfacl -d -m 'group:cvs-myproject-r:r-x' /cvs/repository/myproject
setfacl -m 'group:cvs-myproject-r:r-x' /cvs/repository/myproject
Die Syntax ist denkbar einfach: ‘-m’ für modify, ‘-d’ für default um das Ganze auf zukünftige Dateien zu vererben, ‘group:cvs-myproject-r:r-x’ für Gruppe cvs-myproject-r darf lesen und ausführen. Wobei ausführen hier für Verzeichnis-Kontext zu verstehen ist, Mitglieder der Gruppe cvs-myproject-r dürfen sich durch die Verzeichnisstruktur hangeln, die entsprechenden Verzeichnisse betreten.
Für Setups, bei denen Benutzergruppen nur Teile eines Repository sehen dürfen: Es ist notwendig, das Verzeichnis CVSROOT und seinen Inhalt für alle CVS-User lesbar zu machen, entweder worldreadable oder ebenfalls per ACLs.
setfacl -d -R -m 'group:cvs-myproject-r:r-x' /cvs/repository/CVSROOT
setfacl -R -m 'group:cvs-myproject-r:r-x' /cvs/repository/CVSROOT
Will man die CVS history nicht für jeden lesbar machen, dem cvs genügt es, wenn die Datei schreibbar ist:
[Subversion mit svnserve und apache](/Members/menole/cvs-und-svn/subversion-mit-svnserve-und-apache "Durch Subversion-Repositories kann man sich auf verschiedenen Wegen bewegen. Nicht untypisch ist, Zugriff sowohl über svn+ssh:// und http(s):// parallel anzubieten.
In diesem Teil wird die Einrichtung eines Subversion-Repositories beschrieben.")