当前位置: 首页 > 面试题库 >

以超级用户身份运行npm,这不是一个好主意吗?

林德辉
2023-03-14
问题内容

npm尝试在Linux上没有SU权限的情况下安装/更新软件包时遇到错误。

解决问题的 简单 方法是execute sudo npm install <package>,但是我不确定这是否是一个好主意。

最好的方法是成为.npm文件夹的所有者,正如我在StackOverflow的问题和博客文章中发现的那样。

我的问题是:为什么npm以SU身份运行不是一个好主意?


问题答案:

运行npm超级用户具有运行某些不可信代码作为超级用户的风险,其可以与你的整个系统潜在的混乱。运行npm作为非特权用户运行用更少的特权码的风险,因此不能乱用整个系统-
只是用自己的文件(可以是同样糟糕,这取决于你如何看待它)。

我经常建议做的是将Node安装在主目录中,而不是在系统上全局安装(如果是您自己的计算机)。这样,你不必与运行sudosu用于npm甚至为make install节点本身。

我运行了很多版本的Node,有时是使用不同的开关从源代码编译的,而我使用的约定是将Node安装在版本化目录中,该目录既可以全局安装/opt(但随后需要sudo),也可以本地安装在home目录中~/opt

我这样做是这样的:

wget https://nodejs.org/dist/v7.1.0/node-v7.1.0.tar.gz
tar xzvf node-v7.1.0.tar.gz
cd node-v7.1.0
./configure --prefix=$HOME/opt/node-v7.1.0
make && make test && make install

然后创建一个~/opt/node指向的符号链接~/opt/node-v7.1.0,我有:

PATH="$HOME/opt/node/bin:$PATH"

在我.profile.bashrc

这样,我不必以超级用户身份运行即可安装Node或运行npm。

另外,我可以通过更改符号链接来快速切换默认的Node版本,如果更改PATH或使用诸如的完整路径运行Node,则可以随时运行其他版本~/opt/node-v7.0.0/bin/node

我不想在这里进行过多的讨论,因为这个答案是关于为什么npm以超级用户身份运行不是一个好主意-
此安装过程只是一个不必以npm超级用户身份运行的解决方案。

设置npm权限以避免以超级用户身份运行的其他选项在npm docs 中的“
修复npm权限”中进行了描述(感谢RyanZim在注释中指出)。



 类似资料:
  • 问题内容: 因此,我试图使用子进程从python脚本中以超级用户身份运行一个进程。在ipython shell中,类似 工作正常,但是一旦将其粘贴到脚本中,我就会开始获得:。 我猜这是由于sudo处理ubuntu上的环境的方式。(我也尝试和与无济于事) 所以我的问题基本上是,如果我想以超级用户身份运行,并在需要时提示用户输入超级用户密码,我该怎么做?我无意在脚本中存储密码。 编辑: 我尝试将命令既

  • 问题内容: 我使用指南安装了jenkins,该指南在服务器中创建了一个“ jenkins”用户,并且显然在其下运行jenkins服务器。 我在服务器上的所有设置(虚拟环境,python软件包安装)均针对其他用户(“ ci-user”)。我有什么办法可以以“ ci_user”而不是“ jenkins”的身份运行我的工作?我想避免为“詹金斯”用户再次进行所有设置。 问题答案: 文件中有变量。您可以将其

  • 问题内容: 我正在尝试使用ruby脚本进行一些无头的测试。本质上,我正在执行display:1上的Xvfb,然后使用watir- webdriver启动。 如果您以root用户身份运行脚本,则效果很好-我可以运行x11vnc并观看脚本执行浏览器并与之交互。 问题是,我需要能够从Rails应用程序调用此ruby脚本,而不是以root身份运行…如果我尝试以常规用户身份从命令行运行脚本,则Xvfb会在:

  • 问题内容: 我已经在计算机上安装了postfix,并且正在以编程方式(使用python)动态地更新virtual_alias(在某些操作上)。更新/ etc / postfix / virtual_alias中的条目后,我将运行以下命令: 但是我得到了错误: 我想以非人为方式运行上述sudo命令(这意味着我正在从python脚本运行此系统命令。)。那么如何使该命令以编程方式运行? 问题答案: 您可

  • 正在尝试在本地集群中运行Service Fabric应用程序,以作为其他用户运行。用例是试图连接到我的on prem数据库,但是由于N/W服务帐户没有访问权限,我需要以登录用户的身份运行我的SF。我以管理员用户和域用户的身份完全遵循了下面的网址,但没有运气。 https://docs.microsoft.com/en-us/Azure/service-fabric/service-fabric-a

  • 问题内容: 我有一些bash脚本,它们会在指定的时间添加到cron作业中,但是需要以root用户身份执行。我正在尝试运行那些脚本,即crob作业,但是它需要root用户权限,因为我在受限root用户的ubuntuec2实例中运行此作业。以root用户身份运行那些脚本的解决方法是什么。 谢谢 问题答案: 有几种可能性: 1)将脚本添加到root的crontab中。为此,您必须要做或成为root用户,