npm sudo 全局安装和 unsafe-perm

24

我正在尝试使用以下命令安装npm模块:

sudo npm install -g now

然而,当我尝试这样做时,会出现一个警告:

警告!请尝试使用 --unsafe-perm 选项重新安装Now CLI。
示例:npm i -g --unsafe-perm now

这个不安全的权限让我感到担忧,我想澄清一下是否需要遵循它来修复警告,还是可以忽略它?

https://docs.npmjs.com/misc/config#unsafe-perm上的解释对于我来说并不明确。此Sam-github于2016年3月30日发表的评论更清楚地解释了其含义。

但即使读了两篇文章多次,我仍然不清楚--unsafe-perm正在做什么以及其含义是什么。因此,

  • 默认值:如果作为root运行,则为false
  • 设置为true以在运行包脚本时抑制UID / GID切换。

上述两个"running"是指相同的事情还是不同的事情? 如果是同一件事,那么它是在安装时还是运行时?

我想做的就是:

  • 安装它
  • 让我的系统中的任何人都能够使用它,并且具有最小的安全风险

那我该怎么做呢?


你是在尝试安装 npm install capture-now 还是 npm install now - antzshrek
@antzshrek,sudo npm install -g now - xpt
我为您发布了一个解决方案,希望它能有所帮助。 - antzshrek
1个回答

11

正如你从unsafe-perm中正确地读到的:

  • 默认值:如果以root身份运行则为false,否则为true
  • 类型:布尔值

将其设置为true可在运行软件包脚本时抑制UID/GID切换。如果显式设置为false,则以非root用户安装将失败。

回答你的第一个问题:

  

我想要的只是能够安装它,请按以下步骤操作。

如果您要使用sudo安装now,则需要指定--unsafe-perm选项以root帐户身份运行npm。 您也可以在终端直接运行该命令:

sudo npm install --unsafe-perm=true -g now

回答你的下一个问题:

我想要的只是让任何人都能够使用我的系统,同时最大程度地降低安全风险。

我建议你在 root 模式下运行你的 now 安装程序,这样任何用户都可以使用它,而且没有 root 权限,他们也不能通过任何方式卸载它。所以也许你应该忽略“常规做法”。


3
不要使用sudo本地安装模块。绝对不要这样做,这是不必要的。如果我不这样做,使用npm install -g now命令时,会出现以下警告:npm WARN checkPermissions Missing write access to /usr/lib/node_modules npm ERR! path /usr/lib/node_modules npm ERR! code EACCES - xpt
@xpt,有运气了吗? - antzshrek
1
实际上,我认为并没有回答完所有我的问题,特别是“让任何人都能够使用我的系统”,以及“最小化安全风险”。 - xpt
抱歉耽搁了,但现在您可以查看已编辑的答案。 - antzshrek
1
谢谢antzshrek!“如果你现在要使用sudo安装,你需要指定--unsafe-perm选项以root账户运行npm。”那我为什么要这样做呢?root+unsafe听起来不太对。为什么sudo npm install不够好?unsafe带来了什么sudo npm install没有的东西? - xpt
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接