Erreur SVN lors de la validation de l’access refusé: ‘foobar’ MKACTIVITY MYREPO:

Je travaille actuellement avec Apache et SVN avec l’authentification ActiveDirectory. L’utilisateur utilise le client TortoiseSVN.

Je tiens à souligner que j’ai deux repos avec le même nom et un mappage différent, mais que je suis redirigé vers la même “URL d’utilisateur”, car les permissions sont les mêmes pour les deux mises en pension.

Par exemple ‘http: // mysrvr / svn / foo / bar / corge’ et ‘http: // mysrvr / svn / foo / corge’

ou ‘http: // mysrvr / svn / foo / bar / corge et’ ‘http: // mysrvr / svn / foo / grault / corge’

Ce 2 repo est répliqué avec 8 “repo pairs” et les 7 autres fonctionnent correctement.

Voici mon erreur:

Commit failed (les détails suivent):

access à ‘/ svn / myDir / MYREPO /! svn / act / 65bf494c-a66a-4f45-870e-d988f691a45d’ interdit

Fini!

Ce ne sont pas des permissions, car l’utilisateur foobar a un access rw et il a réussi à extraire le référentiel. Cette erreur se produit lors de la validation.

Des choses qui aideraient à s’orienter vers une solution précise:

  • Les autres paires de pensions se portent bien. Et les permissions sont les mêmes.
  • Mon utilisateur administrateur svn peut faire sur le même PC local que l’utilisateur en difficulté qui commet.
  • URL UPPERCASE / minuscule n’est pas le problème, j’ai vérifié
  • NTLM et Active Directory ne sont pas non plus un problème car il a access à l’autre référentiel avec le même fichier d’autorisation.
  • D’autres utilisateurs du même repository expérimentent le même problème. Alors que je peux encore faire la validation sur leurs PC locaux. (comme s’ils n’avaient pas de permission en écriture)

Voici les journaux Apache:

Apache error.log

[jj mm 12:38:02 2011] [erreur] [client 10.xxx] Accès refusé: ‘foobar’ MKACTIVITY MYREPO:

[jj mm 12:39:40 2011] [erreur] [client 10.xxx] Accès refusé: ‘foobar’ MKACTIVITY MYREPO:

[jj mm 12:39:54 2011] [erreur] [client 10.xxx] Accès refusé: ‘foobar’ MKACTIVITY MYREPO:

Apache access.log

10.xxx – foobar [jj / mm / aaaa: 12: 38: 02 GMT] “OPTIONS / svn / myDir / MYREPO HTTP / 1.1” 200 198

10.xxx – foobar [jj / mm / aaaa: 12: 38: 02 GMT] “PROPFIND / svn / myDir / MYREPO HTTP / 1.1” 207 667

10.xxx – foobar [jj / mmm / aa: 12h38: 02 GMT] “MKACTIVITY / svn / myDir / MYREPO /! Svn / act / 65bf494c-a66a-4f45-870e-d988f691a45d HTTP / 1.1” 403 266

svn_activity.log

[jj / mmm / aa: 12: 34: 20 -0300] waldo commet r2

[jj / mmm / aa: 12: 39: 07 -0300] statut fred / src / trunk r1447

À partir de svn_activity.log, je peux déduire les captures d’Apache et rebondir l’access, étant donné qu’il n’ya pas d’access foobar au moment indiqué précédemment.

Donc, en espérant que les données que j’ai collectées sont utiles pour résoudre ce problème … des idées?

J’ai trouvé ça!

Ok, voici la réponse:

Quel était le problème:

Mes utilisateurs récupèrent un repository dans le répertoire / svn / myDir / MYREPO

Apache sait qu’il doit traduire MYREPO dans un répertoire en minuscules. Lorsque vous extrayez ou effectuez une opération de lecture, cela fonctionne correctement.

Mais lorsque les utilisateurs ont essayé de faire l’opération de validation, Apache modifie en quelque sorte l’ordre des opérations à effectuer pour répondre à la demande des utilisateurs, accepte d’abord l’opération d’écriture et tente d’écrire, puis passe en minuscule.

Encore une fois, il essaie d’écrire dans / svn / myDir / MYREPO , le problème est que:

  • les permissions sur le repo sont définies sur myrepo et non sur MYREPO
  • le repo proprement dit est myrepo et non MYREPO

Donc … MYREPO n’existe pas! myrepo le fait. C’est pourquoi il jette cette erreur:

  • ACCES REFUSEE car il n’y a pas de permission écrite pour MYREPO.
  • Et il reconnaît le repo de manière lisible, car Apache comprend ce que vous demandez et traduit.

Mais pour écrire, commencez par travailler avec elle et ensuite prenez un moment pour comprendre ce qu’il fait. Et l’exception vient avant la compréhension pour qu’Apache n’y parvienne jamais.

Comment le résoudre:

C’est la chose la plus simple:

  • Aller au repo vérifié
  • Faire un déménagement de
      http: // YourServer / svn / myDir / MYREPO 

    à

      http: // YourServer / svn / myDir / myrepo 

Ma recommandation:

Ma recommandation pour svn-administrateurs et les utilisateurs à partir de maintenant, c’est faire

TOUT LE FAIBLE … désolé, je me corrige:

tout en minuscule!

Ajoutez à la solution ci-dessus, avant Subversion 1.7, s’il vous plait, que Subversion a traité les noms et les chemins du référentiel sans tenir compte de la casse, en les convertissant en minuscules avant de les comparer au contenu de votre access. fichier. Il fait maintenant ces comparaisons avec sensibilité à la casse. Si vous avez effectué une mise à niveau vers Subversion 1.7 à partir d’une version antérieure, vous devez examiner vos fichiers d’access pour vérifier leur exactitude.

Source – http://svnbook.red-bean.com/en/1.7/svn-book.html#svn.serverconfig.pathbasedauthz