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を実行しているユーザーが書き込み可能でなければならないためです。