【问题标题】:Permission denied during npm install even though I run it as root即使我以 root 身份运行,在 npm 安装期间权限被拒绝
【发布时间】:2018-01-06 19:59:38
【问题描述】:

与标题相同。我以 root 身份运行 npm install,但仍然出现权限错误。我该怎么办?我从来没有遇到过这种情况。我在项目文件夹中尝试了chmod -R 777 *chown nobody:nogroup -R *,但没有任何改变。

这是错误

Error: Command failed: npm install http fs path passport passport-facebook express-session connect-redis redis express-param compression express-enforces-ssl helmet ms connect-multiparty passport-runkeeper underscore.string moment-timezone nodemailer-ses-transport stripe simple-onesignal sequelize underscore uuid strava-v3 multer sharp bluebird querystring node-libcurl  --save
    npm WARN deprecated graceful-fs@3.0.11: please upgrade to graceful-fs 4 for compatibility with current and future versions of Node.js
    node-pre-gyp info it worked if it ends with ok
    node-pre-gyp verb cli [ '/usr/local/bin/node',
    node-pre-gyp verb cli   '/Users/philipyoonshin_spryfit/spryfit-node/node_modules/node-libcurl/node_modules/.bin/node-pre-gyp',
    node-pre-gyp verb cli   'install',
    node-pre-gyp verb cli   '--fallback-to-build' ]
    node-pre-gyp info using node-pre-gyp@0.6.36
    node-pre-gyp info using node@8.9.4 | darwin | x64
    node-pre-gyp verb command install []
    node-pre-gyp info check checked for "/Users/philipyoonshin_spryfit/spryfit-node/node_modules/node-libcurl/lib/binding/node_libcurl.node" (not found)
    node-pre-gyp http GET https://github.com/JCMais/node-libcurl/releases/download/v1.2.0/node_libcurl-v1.2.0-node-v57-darwin-x64.tar.gz
    node-pre-gyp http 200 https://github.com/JCMais/node-libcurl/releases/download/v1.2.0/node_libcurl-v1.2.0-node-v57-darwin-x64.tar.gz
    node-pre-gyp info install unpacking node_libcurl.node
    node-pre-gyp info tarball done parsing tarball
    node-pre-gyp info ok 
    gyp ERR! configure error 
    gyp ERR! stack Error: EACCES: permission denied, mkdir '/Users/philipyoonshin_spryfit/spryfit-node/node_modules/sharp/build'
    gyp ERR! System Darwin 17.3.0
    gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
    gyp ERR! cwd /Users/philipyoonshin_spryfit/spryfit-node/node_modules/sharp
    gyp ERR! node -v v8.9.4
    gyp ERR! node-gyp -v v3.6.2
    gyp ERR! not ok 
    npm ERR! code ELIFECYCLE
    npm ERR! errno 1
    npm ERR! sharp@0.18.4 install: `node-gyp rebuild`
    npm ERR! Exit status 1
    npm ERR! 
    npm ERR! Failed at the sharp@0.18.4 install script.
    npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

【问题讨论】:

  • 您应该永远以 root 身份运行 npm。查看 nvm 以管理 Node 版本。
  • @elclanrs 我以 root 身份运行 npm 的唯一原因是 npm install 不断让我出错。
  • 如果您必须以 root 身份运行 npm 并像这样运行 chmod,那么您的安装有问题。同样,我建议 nvm 来管理 Node 和 npm,否则你会遇到麻烦,因为 npm 脚本可以以 root 身份运行!!!
  • @elclanrs 我知道来自chmod -R 777 * 的安全问题,但我对这个错误太生气了 :( 我会尝试 nvm 并再次回复!谢谢

标签: javascript node.js npm npm-install node-gyp


【解决方案1】:

出于安全原因,npm 始终使用非特权用户运行安装后脚本。因此,即使您使用sudo 运行命令,安装脚本也会以非特权身份运行。

这是出于明显的安全原因,如果 npm 没有降级权限,这意味着您将完全控制您的机器给任何 npm 包 - 其中一些可能是恶意的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 2020-09-10
    • 2019-01-28
    • 2019-10-18
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多