Wenn Sie ruby Bundler über die Befehlszeile ausführen, während Sie als root angemeldet sind, erhalten Sie die folgende Warnung:
Führen Sie Bundler nicht als root aus. Bundler kann nach sudo fragen, wenn es benötigt wird, und installieren Sie Ihr Bundle als root bricht diese Anwendung für alle Nicht-root-Benutzer auf diesem Computer.
Was ist der genaue Unterschied, den der laufende Bundler als root zu den Edelsteinen macht, die er installiert?
Hat es mit den Berechtigungen der tatsächlichen Dateien zu tun, die es für jedes Juwel installiert? Will Ruby versuchen, auf die gem-Dateien als Nicht-Root-Benutzer zuzugreifen (und wenn ja, welchen Benutzer / welche Gruppe würde Ruby verwenden und wie würde ich herausfinden)?
Was wären die Symptome einer Anwendung, die durch die Verwendung von Bundler als Root unterbrochen wurde?
Mein besonderer Grund dafür ist, dass ich Bundler für ein sehr einfaches Centos-VPS verwende, bei dem ich keine Nicht-Root-Benutzer einrichten muss. Ich bin haben andere Probleme mit Edelsteinen installiert über Bündler ( Error: file to import not found or unreadable: gemname
, obwohl das fragliche Juwel in gem list
vorhanden ist), und ich frage mich, ob die Installation der Edelsteine über Bundler als root die Dateien erstellt haben könnte Ruby nicht lesbar.
Ich möchte herausfinden, ob ich ein Benutzerkonto ohne Rootberechtigung nur für das Ausführen von Bundler einrichten muss und welche Gruppen und Privilegien dieser Benutzer benötigt, damit Ruby den Gems Bundler installieren kann.
Oder kann ich nur chown
oder chgrp
die Edelsteinordner? Wenn ja, hängt es davon ab, wie Ruby installiert ist? (Ich habe RVM verwendet und meine Edelsteine enden in /usr/local/rvm/gems/
, das der Wurzel in der Gruppe rvm gehört) Diese Antwort bezieht sich darauf, dass nicht spezifizierte Aspekte der Installation von Ruby die Berechtigungsanforderungen von Bundler beeinflussen .
Bei der Untersuchung der Meldung "Bundler als Root nicht ausführen" wird nur angezeigt unbeantwortete Frage und Beschwerden, dass diese Warnung anscheinend "wie es ist zu sagen schlafen um 20 Uhr "(Link enthält NSFW Sprache) .
Also musste ich in die git log Geschichte von Bundlers Repo einsteigen, weil GitHub erlaubt die Suche nicht mehr in git sendet Nachrichten mehr.
Das commit c1b3fd165b2ec97fb254a76eaa3900bc4857a357
sagt:
Druckwarnung, wenn Bundler von root ausgeführt wird. Wenn ein Benutzer ein Bundle installiert, wird mit sudo Bundler eine Warnung ausgegeben, die ihn erlaubt Sie wissen von möglichen Konsequenzen.
schließt # 2936
Wenn Sie dieses Problem lesen, verstehen Sie, warum Sie den root
user nicht verwenden sollten:
Die Installation von sudo bundle kann große und kaskadierende Probleme verursachen Benutzer versuchen, Edelsteine auf OS X in die System-Edelsteine zu installieren. Wir sollten Drucken Sie eine Warnung aus und erklären Sie, dass Bundler bei Bedarf zur Eingabe von sudo auffordert erforderlich. Wir sollten die Leute auch warnen, dass sudo bundle git bricht Edelsteine, weil sie vom Benutzer, den Bundler ausführt, beschreibbar sein müssen als.
Für RENV-Benutzer. Ich habe gerade dieses Problem für mich selbst gelöst. Sie verwenden mehr als wahrscheinlich den usr Bundler. Überprüfen Sie dies, indem Sie gem list bundler
Wenn dies leer ist, müssen Sie Bundler für rbenv über
installieren gem install bundler --no-ri --no-rdoc
laden Sie Ihre CLI neu und Sie können jetzt Bundle ohne das sudo ausführen.
Es ist nicht schwer, einen neuen Benutzer zu erstellen, nur "useradd name" und "userwd name" und dann "su name", um zu diesem Benutzer zu wechseln.
Aber um Ihre Frage zu beantworten. Nun, normalerweise werden Dinge nur als root ausgeführt, wenn sie als root ausgeführt werden müssen (meist beschränkt auf System-Tools wie Paket-Manager). Ansonsten ist es viel besser, als Nicht-Root-Benutzer zu laufen. Wenn du eine Satire-Erklärung willst, dann lies das.
Meistens ist es Sicherheit, da die meisten JIT Sprachen extrem unsicher sind (angeblich können Sie eine kompilierte Version von Ruby machen, aber ich habe Ruby nie berührt, also weiß ich es nicht wirklich.) Indem ich eine Anwendung starte als root, wenn es gehackt wird, dann kann die Person im Wesentlichen tun was sie wollen auf der Maschine. Wenn Sie es als normaler Benutzer ausführen, können Sie den Zugriff dieses Benutzers auf ein bestimmtes Verzeichnis einschränken, was bedeutet, dass die Gesamtwirkung eines Hackers verringert würde.
Aber Ihr erstes Zitat dort, wenn Sie immer noch planen, immer als root zu laufen, dann gehen Sie einfach mit der Installation durch und es spielt keine Rolle. Wenn Sie es jedoch als root ausführen und später Anwendungen als Benutzer ohne Rootberechtigung ausführen, erhalten Sie wahrscheinlich Zugriffsberechtigungen.