web-dev-qa-db-ja.com

「Bundlerをrootとして実行しないでください」-rootを使用することによる正確な違いは何ですか?

RootとしてログインしているときにコマンドラインからRuby bundlerを実行すると、次の警告が表示されます。

Bundlerをrootとして実行しないでください。 Bundlerは必要に応じてSudoを要求することができ、バンドルをrootとしてインストールすると、このマシン上のすべての非rootユーザーに対してこのアプリケーションが機能しなくなります。

Rootとしてbundlerを実行することで、インストールするgemにこの違いは何ですか?

それはそれが各gemにインストールする実際のファイルのパーミッションと関係がありますか? Ruby非rootユーザーとしてgemファイルにアクセスしようとします(その場合、どのユーザー/グループがRubyを使用し、どのようにして見つけるか)?

Rootとして使用されているbundlerが原因で壊れたアプリケーションの症状は何ですか?


私が尋ねる特定の理由は、root以外のユーザーを設定する必要がない非常に基本的なCentos VPSでバンドラーを使用しようとしているためです。私は bundleを介してインストールされたgemに他の問題があります (問題のgemがError: file to import not found or unreadable: gemnameに存在するにもかかわらずgem list)、そしてbundlerを介してgemをインストールするかどうか疑問に思っていますrootがファイルをRubyから読み取れなくなった可能性があるため。

バンドルを実行するためだけに非rootユーザーアカウントを設定する必要がある場合、およびこのユーザーが実行できるようにするためにこのユーザーが許可する必要があるグループと権限を設定する必要がある場合、私は解決したいと思いますRuby gems bundlerがインストールします。

または、gemフォルダーをchownまたはchgrpするだけでいいですか?もしそうなら、それはRubyがどのようにインストールされるかと関係がありますか?(私はRVMを使用し、私の宝石は/usr/local/rvm/gems/になり、これはグループrvmのrootが所有しています)- この大まかに関連する質問の回答は、Rubyがインストールされる方法の不特定の側面が、バンドルの許可要件に影響を与える を意味します。

「Bundlerをrootとして実行しないでください」というメッセージを調べると、 未回答の質問 および この警告は明らかに「午後8時に寝るように言っているようなもの」であるとのクレーム)(リンクNSFW言語) を含みます。

したがって、GitHub 検索を許可しない がgit commitでメッセージをコミットするため、バンドラーのリポジトリのgitログ履歴を詳しく調べる必要がありました。

コミットc1b3fd165b2ec97fb254a76eaa3900bc4857a357さんのコメント:

バンドルがrootによって実行されたときに警告を出力します。ユーザーがSudo bundlerでbundle installを実行すると、警告が表示され、潜在的な結果が通知されます。

閉じる #2936

この問題を読むと、rootユーザーを使用してはならない本当の理由がわかります。

Sudoバンドルインストールを実行すると、OS X上のgemをシステムgemにインストールしようとするユーザーに、大きなカスケード問題が発生する可能性があります。警告を印刷し、必要に応じてBundlerがSudoを要求することを説明する必要があります。また、Sudoバンドルはgit gemを破壊することを人々に警告する必要があります。これは、Bundlerを実行しているユーザーが書き込み可能でなければならないためです。

11
Pak