unsafe-perm | Error: EACCES: permission denied, mkdir... | Node-sass / node-gyp

今天使用npm安装全局依赖,出现了报错如下:

Error: EACCES: permission denied, mkdir... .node-gyp

网上搜类似的错误可能还会在安装node-sass时候出现。经过一番搜索,基本锁定了解决方式,即使用如下命令进行全局安装

npm install -g xxx --unsafe-perm

亲测是可以成功安装的,但本着知其所以然的态度还仔细钻研了一下。原因简单来说你即使使用sudo npm install,但执行安装时候并非使用root用户安装

首先来看下官方解释

unsafe-perm
Default: false if running as root, true otherwise
Type: Boolean
Set to true to suppress the UID/GID switching when running package scripts. If set explicitly to false, then installing as a non-root user will fail.

以上意思是说,普通用户这个值默认就是true,但如果是root用户则为false。而false的时候会切换用户,也就是root的时候会切换为其他用户。我觉得可以理解为出于安全考虑,即所谓的unsafe(不安全)是因为你用root权限执行安装可能会覆盖其他用户或用户组的文件,而非root用户则没有问题,所以可以默认设置为true。

unsafe-perm 可以保证用户不会被切换,即仍旧是root用户,即可以保证成功安装。

这里有一篇文章讲的非常不错

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值