首先,为什么npm建议仅以非root用户身份运行它?我不相信高,每一个其他的包管理器(apt
,yum
,gem
,pacman
)是错误的,需要sudo的。
其次,当我遵循他们的建议(并npm install
以非超级用户身份运行)时,它将不起作用(因为非超级用户没有对/ usr / local /
lib的许可)。我如何遵循他们的建议?我不会去chown -R $USER /usr/local/lib
,因为这对我来说似乎是个坏主意。
我通过(自述文件中的说明)安装了npmcurl http://npmjs.org/install.sh | sudo sh
。
当我运行时sudo npm install mongoose
,npm告诉我不要以root身份运行它:
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 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 | 须藤
参见: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中应该有一个选项。
希望能帮助到你。祝好运!
问题内容: 我在Linux(Debian)上开发了C代码。有时,我需要通过执行一些命令 我想知道是否可以通过root用户执行命令。如果不是这种情况,是否有任何功能可以我在C代码上以root身份执行命令(或运行二进制文件)? 问题答案: 在遇到普通用户要执行root命令之前,我们遇到了这种情况,这是我们的解决方案(使用setuid / SUID): 假使,假设: 用户名 : 组别 : C程序文件 :
我使用Ansible安装了Nginx。要在Centos7上安装,我使用了yum软件包,因此默认情况下它是以root用户身份运行的。我希望它在Centos中以不同的用户(前nginx用户)身份启动和运行。当我尝试与其他用户一起运行时,会出现以下错误: nginx的工作。服务失败,因为控制进程已退出,错误代码为。有关详细信息,请参阅“systemctl status nginx.service”和“j
问题内容: 我正在使用Python在系统级别的Linux中进行项目。因此,我想知道,如果我以普通用户身份运行代码,并且正在访问系统文件,那么它应该具有root权限,那么我如何提示输入root密码并以超级用户身份运行其他代码。我想知道,如何以超级用户身份以密码提示运行python脚本。 任何帮助将不胜感激。先感谢您.. 问题答案: 您可以做的另一件事是,如果脚本不是以root身份执行的,则脚本会自动
问题内容: 我需要检测php是否以没有人的身份运行。我该怎么做呢? “ nobody”还有其他名称吗?“ apache”?还有其他吗? 问题答案: 如果可用,您可以使用来探测当前用户帐户,然后使用来获取用户名 。 但是,如果您以安全模式运行(通常是在禁用exec的情况下),则您的PHP进程不太可能在默认值或帐户下运行。
问题内容: 我有一些bash脚本,它们会在指定的时间添加到cron作业中,但是需要以root用户身份执行。我正在尝试运行那些脚本,即crob作业,但是它需要root用户权限,因为我在受限root用户的ubuntuec2实例中运行此作业。以root用户身份运行那些脚本的解决方法是什么。 谢谢 问题答案: 有几种可能性: 1)将脚本添加到root的crontab中。为此,您必须要做或成为root用户,
我正在Docker中制作python Django应用程序的简单图像。但是在构建容器的末尾,它抛出了下一个警告(我正在Ubuntu 20.04上构建):