web-dev-qa-db-fra.com

"Ne pas exécuter bundler en tant que root" - quelle est la différence exacte faite en utilisant root?

Si vous exécutez Ruby bundler à partir de la ligne de commande lorsque vous êtes connecté en tant que root, vous obtenez l'avertissement suivant:

N'exécutez pas Bundler en tant que root. Bundler peut demander Sudo s'il est nécessaire, et l'installation de votre bundle en tant que root interrompra cette application pour tous les utilisateurs non root sur cette machine.

Quelle est cette différence exacte que l'exécution de bundler en tant que root fait pour les gemmes qu'il installe?

Est-ce à voir avec les autorisations des fichiers réels qu'il installe pour chaque gemme? Est-ce que Ruby essaiera d'accéder aux fichiers gem en tant qu'utilisateur non root (et si oui, quel utilisateur/groupe utiliserait Ruby utiliser et comment pourrais-je savoir )?

Quels seraient les symptômes d'une application interrompue en raison de l'utilisation du bundler en tant que root?


Ma raison spécifique de demander est parce que j'essaie d'utiliser bundler sur un VPS Centos très basique où je n'ai pas besoin de configurer d'utilisateurs non root. Je suis avoir d'autres problèmes avec les gemmes installées via bundler (Error: file to import not found or unreadable: gemname malgré la présence du bijou en question dans gem list), et je me demande si l'installation des gemmes via bundler en tant que root pourrait avoir rendu les fichiers illisibles pour Ruby.

Je veux savoir si j'ai besoin de configurer un compte d'utilisateur non root uniquement pour l'exécution de bundler, et si je le fais, quels groupes et privilèges cet utilisateur devra autoriser Ruby à exécuter le gestionnaire de gemmes installe.

Ou puis-je simplement chown ou chgrp les dossiers de gemmes? Si oui, cela dépend-il de la façon dont Ruby est installé? (J'ai utilisé RVM et mes gemmes se retrouvent dans /usr/local/rvm/gems/ qui appartient à root dans le groupe rvm) La réponse à cette question peu reliée implique que des aspects non spécifiés de la façon dont Ruby est installé influencent les exigences d'autorisation du bundler .

La recherche du message "Ne pas exécuter le bundler en tant que root" ne produit que ne question sans réponse et les plaintes selon lesquelles cet avertissement est apparemment "comme s'il disait de s'endormir à 20 heures") (lien contient NSFW langue) .

14

J'ai donc dû fouiller dans l'historique du journal git du dépôt du bundler, car GitHub ne permet pas la recherche dans git valide les messages.

Le commit c1b3fd165b2ec97fb254a76eaa3900bc4857a357 dit :

Affiche un avertissement lorsque le bundler est exécuté par root. Lorsqu'un utilisateur exécute l'installation de bundle avec Sudo bundler, un avertissement s'affiche, lui indiquant les conséquences potentielles.

ferme # 2936

En lisant ce problème, vous comprenez la vraie raison pour laquelle vous ne devez pas utiliser l'utilisateur root:

L'exécution de l'installation du bundle Sudo peut entraîner des problèmes énormes et en cascade pour les utilisateurs qui tentent d'installer des gemmes sur OS X dans les gemmes du système. Nous devons imprimer un avertissement et expliquer que Bundler demandera Sudo si nécessaire. Nous devons également avertir les gens que le bundle Sudo cassera les gemmes git, car ils doivent être accessibles en écriture par l'utilisateur sous lequel Bundler s'exécute.

11
Pak