Subversion gebruikersrechten

Pagina: 1
Acties:

  • Yuri_MB
  • Registratie: Februari 2007
  • Laatst online: 16-01 10:55
Hey,

Ik ben helaas even het spoor volledig bijster. Ik draai een simpele barebone met daarop Ubuntu 8.10. Ik heb daarop SVN geinstalleerd met apache2. Door niet veel meer te doen dan

code:
1
sudo apt-get install subversion apache2 libapache2-mod-svn


of libapache2-svn, ben even de precieze naam kwijt. Verder is het geconfigureerd zodat het webaccess toe laat tot mijn repositories. Het is zo opgezet dat het meerdere repositories aan kan, dus: Ik heb een map /var/svn/repos/ en daarin staan mijn repositories.

Omdat er meerdere mensen aan repositories werken die niet allemaal toegang hebben tot alle repositories heb ik besloten het per repository te beveiligen. Dit gaat goed tot 1 ding. Ik wil namelijk dat iedereen de root map kan zien. Dus, welke repositories er allemaal zijn. De lijst wordt gegenereerd door de lijn

code:
1
SVNListParentPath on


in mijn dav_svn.conf.

Zodra ik alle user autenthicatie uit zet, dus

code:
1
AuthzSVNAccessFile /etc/apache2/dav_svn.authz


uit commentaar, gaat alles naar behoren. Maar ik wil dus dat iedere user kan zien welke repositories er zijn, door te surfen naar
code:
1
127.0.0.1/svn
(nog lokaal aan het testen, vandaar 127.0.0.1 nu), en dat de user-authenticatie pas gebeurt op het moment dat iemand een repositorie aan klikt.

De authz file is op dit moment:

code:
1
2
3
4
5
6
[ / ]
* = rw

[example:/]
yuri = rw
sam =


Dit gaat dus goed voor 127.0.0.1/svn/example, de gebruiker yuri mag er in, de gebruiker sam mag niets. Maar de [/] staat dus niet gelijk aan 127.0.0.1/svn, wat ik hoopte. Ik denk dat dit komt doordat ik SVNParentPath gebruik en niet SVNPath. In de help staat namelijk dat dit tot gevolg heeft dat als ik niet expliciet de naam van een repository op geef (zoals example gedaan is), de regel voor iedere repository geldt. Dus effectief zet ik de roots van alle repositories open voor iedereen (niet de bedoeling !!)

Goed, lang verhaal, maar hoop dat ik hiermee een goede situatieschets heb gegeven. Wat ik dus wil is dat iedereen 127.0.0.1/svn mag opvragen (anonymous access), waar slechts een door apache gegenereerde folder index moet verschijnen met alle repository mappen en dat op het moment dat iemand op een repository klikt de bijbehorende user authenticatie gebeurt.

Mijn dav_svn.conf (overgetikt, forgive me typo's)

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
<Location /svn>
DAV svn
SVNParentPath /var/svn/repos
SVNListParentPath on

AuthzSVNAccessFile <mijnhtpasswdfile>
Satisfy Any
Require valid-user

AuthType basic
AuthName "..."
AuthUserFile <mijnuserfile>
</Location>



[edit] Iets te snel, wat typo's gecorrigeerd

  • maleadt
  • Registratie: Januari 2006
  • Laatst online: 26-01 20:38
Bug in subversion. Voeg een trailing slash toe aan je Location directive, en je zal zien dat 127.0.0.1/svn/ werkt. 127.0.0.1/svn zal nog steeds een 403 opleveren, maar dat kan je fixen met een rewrite rule
code:
1
2
RewriteEngine on
RewriteRule ^(/svn)$ $1/ [R]


EDIT: deze thread beschrijft hetzelfde probleem.

[ Voor 18% gewijzigd door maleadt op 17-04-2009 10:18 ]


  • Yuri_MB
  • Registratie: Februari 2007
  • Laatst online: 16-01 10:55
maleadt: Thx voor de reply, maar helaas werkt dit ook niet. /svn/ werkt nog steeds niet.

code:
1
2
3
4
Forbidden

You don't have permission to access /svn/ on this server.
Apache/2.2.9 (Ubuntu) DAV/2 SVN/1.5.1 mod_ssl/2.2.9 OpenSSL/0.9.8g Server at einstein Port 80


De gebruikelijke forbidden page helaas.

  • maleadt
  • Registratie: Januari 2006
  • Laatst online: 26-01 20:38
Werkt hier? Je hebt apache toch herstart na een "/" toe te voegen aan "<Location /svn>" in je config? Probeer ook eens een slash toe te voegen aan je SVNParentPath (zou geen verschil moeten maken, maarkom).
Wat zegt apache's error.log?

  • Yuri_MB
  • Registratie: Februari 2007
  • Laatst online: 16-01 10:55
oh god sorry, ik heb je reply compleet verkeerd gelezen, ik heb gewoon in de url de trailling slash toegevoegd, zonder de location te wijzigen, toch slechter geslapen dan ik dacht blijkbaar.

Ik ga het morgen meteen weer proberen, dank je!

  • Yuri_MB
  • Registratie: Februari 2007
  • Laatst online: 16-01 10:55
Ah nu heb ik het opgelost, mede dankzij jou maleadt, thanks daarvoor!
Na die / werkte het nog niet naar behoren, om de volgende reden (voor future problems):

code:
1
2
3
4
5
6
[ / ]
* = r

[repo1:/]
yuri = rw
sam = r


Zodra ik naar /svn/repo1 ging als anonymous user kwam ik er toch in, terwijl je geen rechten krijgt. Er staat in de help file dat er wordt gezocht naar de best bijbehorende regel, dus als de regel voor een pad er niet was, dan ging hij kijken naar het parent path. Blijkbaar is het zo dat als je niet in de repository:/ aangeeft dat anonymous er niets te zoeken heeft, met:

code:
1
* =


dan gaat hij op zoek naar de server-brede regels. Die vindt hij wel, en daar staat read access in, voila!
Oplossing:

code:
1
2
3
[repoXX:/]
...regels...
* =


That's all, thanks!
Pagina: 1