web-dev-qa-db-fra.com

Exécution de Composer sans utiliser Sudo (propriétaire modifié et autorisations essayés)

Chaque fois que j'exécute composer (par exemple, Sudo composer install, Sudo composer self-update etc.), je dois l'exécuter avec Sudo car le propriétaire du fichier est root.

Cependant, chaque fois que j'utilise composer avec Sudo root, le dossier du fournisseur lui appartient, puis je dois changer le propriétaire de ce dossier/de ces privilèges de la racine à www-data.

Quelle est la meilleure façon de résoudre ce problème afin de ne pas utiliser Sudo à chaque fois?

Changez le propriétaire de /usr/local/bin/composer de la racine en www-data?

Est-ce le moyen idéal de gérer cela afin d'éviter de devoir changer de propriétaire et d'attribuer une autorisation chaque fois que j'utilise Sudo composer install?

Edit: Les autorisations pour composer sont actuellement -rwxr-xr-x. Et j'ai essayé de passer du propriétaire de /usr/local/bin/composer à www-data:www-data avec des autorisations définies sur 775, et je ne peux toujours pas exécuter composer sans exécuter Sudo.

11

Si "tout le monde" est autorisé à lire et à exécuter composer, vous n'avez pas besoin d'utiliser Sudo:

Sudo chmod 755 /var/local/bin/composer

Comme vous avez déjà exécuté composer au moins une fois sous le nom root, le répertoire de cache du compositeur (par utilisateur) appartient maintenant à root et ne peut donc pas être écrit en écriture par votre utilisateur normal.

Sudo chown -R lamp:lamp /home/lamp/.composer

va réparer le propriétaire du fichier.

6
tkausl

Je traite ce problème depuis des semaines.

Je pense que la solution consiste à exécuter composer mise à jour automatique avec -H

Sudo -H composer self-update

Avant de faire cela, assurez-vous de supprimer les répertoires .composer de la racine et le répertoire de base de l'utilisateur que vous souhaitez exécuter composeur.

Sudo rm -rf /root/.composer
Sudo rm -rf /home/ubuntu/.composer

L'exécution de Sudo composer mise à jour automatique sans l'indicateur -H créera ~/.composer qui appartient à root et empêchera d'autres commandes composer d'avoir des erreurs d'autorisation.

composer config
composer install 

À mon avis, appeler Sudo composer la mise à jour automatique ne devrait pas créer de fichiers appartenant à root dans le répertoire de base des utilisateurs actuels.

Notez que si vous suivez ces instructions sur Ubuntu 14.04, composer placera le cache dans:

 ~/.cache/composer

Plutôt que:

~/.composer/cache

Cela est dû à la variable d'environnement XDG_RUNTIME_DIR définie dans Ubuntu 14.04 mais qui ne semble pas être définie dans Ubuntu 12.04.

ne discussion connexe ici

5
Lance