【问题标题】:"Don't run bundler as root" - what is the exact difference made by using root?“不要以 root 身份运行 bundler” - 使用 root 的确切区别是什么?
【发布时间】:2014-10-15 18:21:15
【问题描述】:

如果您在以 root 身份登录时从命令行运行 ruby​​ bundler,则会收到以下警告:

不要以 root 身份运行 Bundler。如果需要,Bundler 可以要求 sudo, 并以 root 身份安装你的包将破坏这个应用程序 这台机器上的非 root 用户。

以 root 身份运行 bundler 对其安装的 gem 有什么确切的区别?

是否与它为每个 gem 安装的实际文件的权限有关? Ruby 是否会尝试以非 root 用户身份访问 gem 文件(如果是,Ruby 将使用哪个用户/组,我将如何找到)?

由于捆绑程序被用作根用户而损坏的应用程序会出现什么症状?


我询问的具体原因是因为我试图在一个非常基本的 Centos VPS 上使用捆绑程序,我不需要设置任何非 root 用户。我是having other problems with gems installed via bundlerError: file to import not found or unreadable: gemname,尽管有问题的 gem 存在于gem list),我想知道是否以 root 身份通过 bundler 安装 gem 可能会使文件对 Ruby 不可读。

我想弄清楚我是否确实需要设置一个非 root 用户帐户,纯粹是为了运行 bundler,如果我这样做了,这个用户需要哪些组和权限才能允许 Ruby 运行 gems bundler 安装。

或者我可以只 chownchgrp gem 文件夹吗?如果是这样,它是否取决于 Ruby 的安装方式? (我使用了 RVM,我的 gems 最终在 /usr/local/rvm/gems/ 中,归 rvm 组中的 root 所有)This loosely related question's answer implies that unspecified aspects of how Ruby is installed influence bundler's permissions requirements

研究“不要以 root 身份运行捆绑程序”消息仅出现 an unanswered questioncomplaints that this warning is apparently "like it saying to go to sleep at 8PM" (link contains NSFW language)

【问题讨论】:

    标签: ruby gem bundler


    【解决方案1】:

    所以我不得不深入研究 bundler 的 repo 的 git log 历史记录,因为 git 中的 GitHub doesn't allow search 不再提交消息了​​。

    提交c1b3fd165b2ec97fb254a76eaa3900bc4857a357 说:

    当 bundler 由 root 运行时打印警告。当用户使用 sudo bundler 运行 bundle install 时,会打印一个警告,让 他们知道潜在的后果。

    关闭#2936

    阅读本期,你明白了不应该使用root用户的真正原因:

    运行 sudo bundle install 可能会导致巨大的级联问题 试图将 OS X 上的 gem 安装到系统 gem 中的用户。我们应该 打印警告并说明 Bundler 将提示输入 sudo 如果它是 需要。我们还应该警告人们 sudo bundle 会破坏 git gems,因为它们必须可由 Bundler 运行的用户写入 作为。

    【讨论】:

    • 很好,很好的答案,谢谢!旁注,这些家伙真的没有做任何事情来挑战程序员不擅长沟通或编写清晰的面向用户的消息的刻板印象......
    • 不错!在大多数人“生活”的开发环境中,警告是很好的建议。但是 Ruby 文化在这个问题上有点短视(“固执己见”?)。例如,在服务器部署上,有一个很好的案例可以跳过 RVM、RBENV 和所有相关的喧嚣,只需以 root 身份将一个版本的 Ruby 和所有 Gems 安装在一个地方。尤其是现在,如果您需要另一个用户/用户环境,您只需启动一个不同的 VM。很容易将更多时间浪费在部署其他部分的多 Ruby/Gem 环境上。
    • 所以这个警告只针对 OS X 的东西?我的意思是在标准的 nix 上可以吗?
    • 一旦你搞砸了并以 root 身份运行 bundler 来安装某些东西,你应该怎么做?
    • 当用户确实知道他/她在做什么时,能够禁用消息会很棒。捆绑--真的
    猜你喜欢
    • 2021-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-29
    • 2013-12-19
    • 2022-09-29
    相关资源
    最近更新 更多