web-dev-qa-db-fra.com

Comment puis-je éviter que git exige Sudo sur chaque commande git

J'ai créé un répertoire /var/www dans lequel stocker mon clone d'applications Web. Lorsque j'ai initialement cloné l'application depuis github, il m'a fallu utiliser Sudo et chaque fois que je fais un git pull, cela nécessite Sudo. Je rencontre des problèmes à cause de cela. Par exemple, mes clés SSH ne correspondent pas. Ainsi, lorsque je fais mon git pull, je dois utiliser https au lieu de ssh et entrer manuellement mon nom d'utilisateur et mon mot de passe chaque fois que je veux extraire et mettre à jour mon application. Comment configurer cela afin de ne pas utiliser Sudo à chaque fois que j'utilise git?

10
Scott

Quelques choses se passent ici:

  • Lorsque vous Sudo git checkout ..., tous ces fichiers appartiennent à l'utilisateur racine et au groupe racine. Avec les autorisations standard, c'est pourquoi les modifications ultérieures de ces fichiers nécessitent que vous soyez root.

  • /var/www/ appartient par défaut au groupe www-data. Quelque chose que votre utilisateur n'est pas par défaut.

Le moyen le plus simple d'écrire dans /var/www/ est simplement ajoutez votre utilisateur au groupe www-data . Vous pouvez bien sûr modifier le répertoire qui appartient à votre utilisateur, mais cela peut avoir des effets d'entraînement néfastes si vous ne les préemptez pas.

Vous devrez vous reconnecter après avoir ajouté votre utilisateur au groupe www-data.

Dans votre cas particulier, vous devrez réparer votre fouillis actuel de données appartenant à la racine. Vous pouvez soit le supprimer en tant que root (et le revérifier), mais si vous avez un travail non sauvegardé, il vous suffira de nettoyer davantage pour que tout soit récupéré par votre utilisateur. L'exemple suivant est extrêmement paresseux et suppose que ce dont nous parlons est la seule chose dans/var/www /:

Sudo chown -R www-data: /var/www/
12
Oli

Hm, changer de propriétaire de dossier? J'ai déplacé mon dossier www dans/home/nom d'utilisateur, vous pouvez modifier son emplacement dans/etc/Apache2/sites-enabled/000-default

0
michel

Je suis un peu en retard avec cette réponse, mais j’ai trouvé que pour éviter de saisir un mot de passe à chaque fois, je devais changer le repo de https à ssh.

de la section d'aide de Github.com:

La commande git remote set-url modifie une URL de référentiel distant existante.

Terminal ouvert.

Remplacez le répertoire de travail actuel par votre projet local.

Répertoriez vos télécommandes existantes afin d’obtenir le nom de la télécommande que vous souhaitez modifier.

git remote -v
Origin  https://github.com/USERNAME/REPOSITORY.git (fetch)
Origin  https://github.com/USERNAME/REPOSITORY.git (Push)

Modifiez l'URL de votre télécommande de HTTPS en SSH avec la commande git remote set-url.

git remote set-url Origin [email protected]:USERNAME/REPOSITORY.git

Vérifiez que l'URL distante a changé.

git remote -v

# Vérifier la nouvelle URL distante

Origin  [email protected]:USERNAME/REPOSITORY.git (fetch)
Origin  [email protected]:USERNAME/REPOSITORY.git (Push)
0
jonnyjandles