首先,为什么npm建议仅以非root用户身份运行它?我不相信高,每一个其他的包管理器(apt,yum,gem,pacman)是错误的,需要sudo的。
apt
yum
gem
pacman
其次,当我遵循他们的建议(并npm install以非超级用户身份运行)时,它将不起作用(因为非超级用户没有对/ usr / local / lib的许可)。我如何遵循他们的建议?我不会去chown -R $USER /usr/local/lib,因为这对我来说似乎是个坏主意。
npm install
chown -R $USER /usr/local/lib
我通过(自述文件中的说明)安装了npmcurl http://npmjs.org/install.sh | sudo sh。
curl http://npmjs.org/install.sh | sudo sh
当我运行时sudo npm install mongoose,npm告诉我不要以root身份运行它:
sudo npm install mongoose
npm ERR! sudon't! npm ERR! sudon't! Running npm as root is not recommended! npm ERR! sudon't! Seriously, don't do this! npm ERR! sudon't!
但是当我npm install mongoose不使用sudo 运行时,我得到以下信息:
npm install mongoose
npm info it worked if it ends with ok npm info using npm@0.2.17 npm info using node@v0.4.0-pre npm info fetch http://registry.npmjs.org/mongoose/-/mongoose-1.0.7.tgz npm info calculating sha1 /tmp/npm-1297199132405/1297199132406-0.7044695958029479/tmp.tgz npm info shasum b3573930a22066fbf3ab745a79329d5eae75b8ae npm ERR! Could not create /usr/local/lib/node/.npm/.cache/mongoose/1.0.7/package.tgz npm ERR! Failed creating the tarball. npm ERR! This is very rare. Perhaps the 'gzip' or 'tar' configs npm ERR! are set improperly? npm ERR! npm ERR! couldn't pack /tmp/npm-1297199132405/1297199132406-0.7044695958029479/contents/package to /usr/local/lib/node/.npm/.cache/mongoose/1.0.7/package.tgz npm ERR! Error installing mongoose@1.0.7 npm ERR! Error: EACCES, Permission denied '/usr/local/lib/node/.npm/.cache/mongoose' npm ERR! There appear to be some permission problems npm ERR! See the section on 'Permission Errors' at npm ERR! http://github.com/isaacs/npm#readme npm ERR! This will get better in the future, I promise. npm not ok
因此它告诉我我不应该使用sudo,如果我遵循他们的建议,那么它就不起作用。
这导致了我上面的最初问题。
其实,故宫也 没有 建议不要以root身份运行。好吧,不再。
在您询问问题的同时,情况已经发生变化。这是自述文件在2011年2月7日的样子: “不建议将sudo与npm一起使用。任何人都可以发布任何内容,并且软件包安装可以运行任意脚本。” 稍后将其更详细地解释为 “选项4:不推荐使用!您可以一直在所有内容上使用sudo,而忽略令人讨厌的警告,告诉您您这样做太疯狂了。”
参见:https : //github.com/isaacs/npm/tree/7288a137f3ea7fafc9d4e7d0001a8cd044d3a22e#readme
现在,实际上已考虑将其 推荐 为安装npm的技术:
简单安装-要使用一个命令安装npm,请执行以下操作: curl http:/ /npmjs.org/install.sh | 须藤
简单安装-要使用一个命令安装npm,请执行以下操作:
curl http:/ /npmjs.org/install.sh | 须藤
参见:https : //github.com/isaacs/npm/tree/99f804f43327c49ce045ae2c105995636c847145#readme
我的建议是 永远不要这样做, 因为这基本上意味着:
正如您所看到的,从字面上看,这实际上并没有夸张,因为通过不安全的连接从Internet上请求脚本后, 根本 不用 root shell 进行 任何 验证 。至少有5种不同的地方可能出问题,其中任何一种都可能导致攻击者完全控制您的计算机:
还要注意,使用“ sh”代替“ sudo sh”通常不会降低风险,除非您以无法访问您的私有数据的其他用户身份运行它,通常情况并非如此。
如果可以下载此类脚本,则应该使用HTTPS连接,以便至少可以验证您正在与谁交谈,即使这样,我也必须先阅读才能运行它。不幸的是npmjs.org有一个自签名证书,因此在这种情况下它并没有真正的帮助。
幸运的是,npm在具有有效SSL证书的GitHub上可用,您可以从此处使用安全连接下载npm。参见:github.com/isaacs/npm了解更多信息。但是请确保npm本身不使用不安全的连接来下载它下载的文件- npm config中应该有一个选项。
希望能帮助到你。祝好运!