6 votes

Problème de permissions lors de l'exécution d'une commande dans un hook postcommit dans SVN

J'ai un problème ennuyeux que je n'arrive pas à résoudre.

Qu'est-ce que j'essaie de faire ?

post-review --repository-url=http://xxx.xxx.xxx.xxx/svn/testRepo2 --revision-range=6:7 --server=http://reviews.example.test/ --username=reviewposter --password=mydullpass --submit-as=admin -p --target-groups=reviewers

Tout se passe bien lorsque j'essaie de le faire à partir de bash en me connectant en tant qu'utilisateur. La revue est postée, publiée, etc. ==> Toutes les permissions et autres paramètres divers sont corrects.

Que se passe-t-il lorsque j'essaie de faire cela à partir du crochet post-commit de SVN ?

Les ressources sont validées mais l'opération svn est bloquée - en fait, le crochet postcommit ne se termine pas.

À quoi se résume le problème ?

post-review est exécuté par l'utilisateur qui exécute le crochet post-commit - dans ce cas, l'utilisateur d'Apache www-data. C'est-à-dire que lorsque j'exécute la commande en tant que www-data :

sudo -u www-data post-review --repository-url=http://xxx.xxx.xxx.xxx/svn/testRepo2 --revision-range=6:7 --server=http://reviews.example.test/ --username=reviewposter --password=mydullpass! --submit-as=admin -p --target-groups=reviewers -d

J'obtiens (remarquez le paramètre -d dans la commande post-review - DEBUG) :

RBTools 0.4.1
Home = /home/borislav
Password for 'www-data':

C'est là qu'il attend la saisie d'un mot de passe. L'opération commit ne peut pas se terminer et reste bloquée. J'ai déjà discuté de ce problème avec les gars de ReviewBoard's google group dans ce message .

D'autre part, lorsque je fais la même commande avec la sortie de débogage mais en tant que mon utilisateur, j'obtiens :

RBTools 0.4.1
Home = /home/borislav
HTTP GETting api/
HTTP GETting http://reviews.example.test/api/info/
Using the new web API
TTP GETting http://reviews.example.test/api/repositories/
HTTP GETting http://reviews.example.test/api/repositories/1/
HTTP GETting http://reviews.example.test/api/repositories/1/info/
HTTP GETting http://reviews.example.test/api/repositories/2/
HTTP GETting http://reviews.example.test/api/repositories/2/info/
HTTP GETting http://reviews.example.test/api/repositories/3/
HTTP GETting http://reviews.example.test/api/repositories/3/info/
HTTP GETting http://reviews.example.test/api/repositories/4/
HTTP GETting http://reviews.example.test/api/repositories/4/info/
Attempting to create review request on http://xxx.xxx.xxx.xxx/svn/testRepo2 for None
Submitting the review request as admin
HTTP POSTing to http://reviews.example.test/api/review-requests/: {'submit_as': 'admin', 'repository': 'http://xxx.xxx.xxx.xxx/svn/testRepo2'}
Review request created
Attempting to set field 'target_groups' to 'reviewers' for review request '22'
HTTP PUTting to http://reviews.example.test/api/review-requests/22/draft/: {'target_groups': 'reviewers'}
Uploading diff, size: 2316
HTTP POSTing to http://reviews.example.test/api/review-requests/22/diffs/: {'basedir': '/'}
Publishing
HTTP PUTting to http://reviews.example.test/api/review-requests/22/draft/: {'public': 1}
Review request #22 posted.

http://reviews.example.test/r/22/

En fait, tout ce qui concerne l'affichage, la publication, etc. fonctionne.

L'un des développeurs de ReveiwBoard a déclaré que "Nous n'affichons pas la chaîne "Mot de passe pour ''". Cela vient donc de tout autre chose."

Je suis sûr qu'il s'agit d'une sorte d'autorisation d'exécution. Il devrait fonctionner sur Ubuntu Server, mais pas sur Debian.

Je me demandais s'il y avait un lien avec le paradigme "no root login" dans Ubuntu.

Je n'ai pas essayé sur une autre distribution Linux, ce qui n'est pas vraiment une option puisque le serveur SVN est hébergé sur Ubuntu Server.

Vous pouvez vérifier cette discussion que j'ai eue avec les gars du groupe goggle de ReviewBoard. Les examen a posteriori binaire est situé à : /usr/local/bin/post-review

J'ai essayé d'ajouter des autorisations pour www-data être en mesure d'exécuter examen a posteriori dans le fichier sudoers, mais sans succès.

Quelle est votre solution ?

T Borislav.

3voto

Alan Shutko Points 4028

L'invite de mot de passe provient en fait de svn, et non de post-review. post-review appelle le binaire svn pour récupérer les modifications du repo.

Vous ne voyez pas l'invite de mot de passe en tant qu'utilisateur parce que vous vous êtes déjà authentifié et que svn a stocké vos informations d'authentification. Vous ne l'avez pas encore fait en tant qu'utilisateur www-data, donc svn vous demande le mot de passe.

Le moyen le plus simple de résoudre ce problème est d'utiliser l'utilisateur www-data et de s'authentifier sur le repo, de manière à ce que les informations d'identification soient mises en cache.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X