Dans le serveur distant, j'ai un hook post-receive mis en place afin de faire une extraction git de mon référentiel:
#!/bin/sh
GIT_WORK_TREE=/var/www/<website> git checkout -f
Mais lorsque je fais un push de ma machine locale vers le référentiel git sur le serveur, j'obtiens les messages d'erreur suivants:
remote: error: unable to unlink old '<file>' (Permission denied)
Cela apparaît plusieurs fois, un message d'erreur pour presque chaque fichier.
Cependant, j'ai un fichier README.txt que je peux modifier en utilisant git, voici ses autorisations:
-rw-r--r-- 1 <serverusername> <serverusername> 2939 Aug 2 10:58 README.txt
Mais d'autres fichiers avec exactement le même propriétaire et les mêmes autorisations me donnent cette erreur.
Dans un autre référentiel local pour un autre site Web, j'ai les fichiers avec le nom d'utilisateur de ma machine locale en tant que propriétaire, et lorsque je pousse vers le serveur distant, il respecte le propriétaire du serveur distant des fichiers et fonctionne comme un charme.
Évidemment, cela semble être une erreur liée aux autorisations, mais je ne trouve pas de moyen de la corriger, des suggestions?
la source
sudo chmod -R g+w
sur les dossiers coupables.mv
actions qu'à de simples écrasements.ls -l
affichage indique le type de fichier et n'est pas lié aux autorisations. Les neuf caractères restants sont répartis en trois ensembles, chacun représentant une classe d'autorisations en trois caractères. Le premier ensemble représente la classe d'utilisateurs. Le deuxième ensemble représente la classe de groupe. Le troisième ensemble représente les autres classes. Leg+w
dans chmod donne au groupe défini (leg
paramètre) l'autorisation d'écrire (lew
paramètre)Cette commande résoudrait le problème. Il donne des autorisations d'écriture sur le dossier.
la source
Si vous utilisez un IDE, le problème est probablement que le fichier a été utilisé par un processus. Comme votre chat utilise peut-être le fichier. Essayez d'identifier ce processus particulier et fermez-le. Cela devrait résoudre votre problème.
la source
Je pense que le problème peut être lié à la propriété du dossier, alors définissez-le sur la propriété actuelle de l'utilisateur
Vous pouvez trouver la solution [ici] [1]la source
J'ai eu le même problème et aucune des solutions ci-dessus n'a fonctionné pour moi. J'ai supprimé le dossier incriminé. Ensuite:
Supprimé tous les fichiers en attente pour nettoyer l'état de git, puis a fait:
Cela a finalement fonctionné.
REMARQUE: si le dossier était, par exemple, un dossier public avec des fichiers de construction, n'oubliez pas de reconstruire les fichiers
la source
FWIW - J'ai eu un problème similaire et je ne suis pas sûr si cela l'a atténué (au-delà du mod d'autorisation): la fermeture d'Eclipse qui utilisait la branche avec ce problème.
la source
C'est une vieille question, mais cela peut aider les utilisateurs de Mac.
Si vous copiez manuellement des fichiers depuis Time Machine, au lieu de les restaurer via Time Machine, cela ajoutera des ACL à tout, ce qui peut gâcher vos autorisations.
Par exemple, la section de cet article qui dit «Comment réparer les autorisations de fichiers Mac OS X» montre que «tout le monde» a des autorisations personnalisées, ce qui gâche tout:
Vous devez supprimer les ACL de ces répertoires / fichiers. Cette réponse de super utilisateur y va, mais voici la commande:
sudo chmod -RN .
Ensuite, vous pouvez vous assurer que vos répertoires et fichiers disposent des autorisations appropriées. J'utilise
750
pour les répertoires et644
pour les fichiers.la source
J'obtiens cette erreur, et d'autres erreurs git étranges, quand j'ai un serveur en cours d'exécution (dans Intellij). Arrêter le serveur et réessayer la commande git le corrige fréquemment pour moi.
la source
A travaillé pour moi
la source
Le tirage a peut-être créé un changement local.
Ajoutez votre fichier non suivi:
Changements de réserve.
Abandonnez les modifications locales.
Tirez avec l'autorisation sudo
la source
sudo chown -R $USER:$USER .
A fait le travail pour moi.
la source
Certains fichiers sont protégés en écriture et même git ne peut pas les écraser. Modifiez l'autorisation du dossier pour autoriser l'écriture, par exemple sudo chmod 775 nomdossier
Et puis exécutez
encore
la source
N'oubliez pas de vérifier également l'autorisation du répertoire racine lui-même!
Vous pouvez trouver:
et l'erreur «permission refusée» apparaîtra.
la source
Après avoir vérifié l'autorisation du dossier, tout va bien avec 744. J'ai eu un problème avec un plugin qui est installé sur mon site WordPress. Le plugin a accroché qui sont dans le travail de maïs que je soupçonnais.
Avec un simple
sudo it can fix the issue
Vous le faites fonctionner.
la source