J'ai configuré un serveur Linux et installé Apache, SVN et dav_svn dessus. Maintenant, quand j'essaye de télécharger vers https://x.x.x.x:x/svn/repo
avec Tortoise SVN, je reçois
Can't open file '/server/svn/repo/db/txn-current-lock': Permission denied
J'ai correctement configuré mon SSL (je peux passer à la caisse, aucun problème, même à distance en raison de la redirection de port).
Je suppose que cela a à voir avec la propriété Linux des dossiers du référentiel. Comment dois-je définir ceci/quelles sont les commandes?
C'est un problème commun. Vous rencontrez presque certainement des problèmes d'autorisations. Pour le résoudre, assurez-vous que l'utilisateur Apache
dispose d'un accès en lecture/écriture sur l'ensemble de votre référentiel. Pour ce faire, chown -R Apache:apache *
, chmod -R 664 *
pour tout ce qui se trouve dans votre référentiel svn.
Voir aussi ici et ici si vous êtes toujours bloqué.
La chaîne "664" est une représentation octale (base 8) des autorisations. Il y a ici trois chiffres représentant les autorisations pour les propriétaire _, groupe et tous les autres (parfois appelés «monde»), respectivement pour ce fichier ou répertoire .
Notez que chaque chiffre de base 8 peut être représenté avec 3 bits (000 pour "0" à 111 pour "7"). Chaque bit signifie quelque chose:
Par exemple, 764 sur un fichier signifierait que:
J'espère que ça clarifie les choses!
C'est un problème de permission. Ce ne sont pas les droits de lecture/écriture "classiques" des utilisateurs Apache, mais bien ceux de Selinux.
Apache ne peut pas écrire dans les fichiers étiquetés httpd_sys_content_t
, ils ne peuvent être lus que par Apache.
Vous avez 2 possibilités:
étiqueter les fichiers de référentiel svn en tant que httpd_sys_content_rw_t
:
chcon -R -t httpd_sys_content_rw_t /path/to/your/svn/repo
set selinux boolean httpd_unified --> on
setsebool -P httpd_unified=1
Je préfère la 2e possibilité. Vous pouvez aussi jouer avec d'autres booléens selinux connectés avec httpd
:
getsebool -a | grep httpd
J'ai également eu ce problème récemment, et c'est le SELinux qui l'a causé… .. J'essayais de faire en sorte que le post-commit de Subversion informe Jenkins que le code a été modifié pour que Jenkins puisse le construire et le déployer sur Nexus.
Je devais faire ce qui suit pour le faire fonctionner.
1) J'ai d'abord vérifié si SELinux est activé:
less /selinux/enforce
Cela affichera 1 (pour activé) ou 0 (pour désactivé)
2) désactiver temporairement SELinux:
echo 0 > /selinux/enforce
Maintenant, teste si cela fonctionne maintenant.
3) Activer SELinux:
echo 1 > /selinux/enforce
Changez la politique pour SELinux.
4) Tout d’abord, visualisez la configuration actuelle:
/usr/sbin/getsebool -a | grep httpd
Cela vous donnera: httpd_can_network_connect -> off
5) Activez cette option pour que votre post-commit fonctionne avec SELinux:
/usr/sbin/setsebool -P httpd_can_network_connect on
Maintenant, il devrait fonctionner à nouveau.
par exemple sur debian
Sudo gpasswd -a svn-admin www-data
Sudo chgrp -R www-data svn/
Sudo chmod -R g=rwsx svn/
Je viens d'avoir ce problème
J'espère que cela t'aides
3 étapes que vous pouvez suivre
chmod -R 775 <repopath>
--->permissions for repository
chown -R Apache:apache <repo path>
---> change owner as like svn conf file
chcon -R -t httpd_sys_content_t /<repo path>
----> change security context for svn repositary
Outre les autorisations du référentiel, le répertoire /tmp
doit également être accessible en écriture pour tous les utilisateurs.