Linux目录权限问题(NPM的node_modules目录)

时间:2015-03-25 00:05:48

标签: linux ubuntu permissions npm acl

我试图找出如何通过node_modules目录获取权限。这就是问题......

user1转到包含package.json的文件夹并运行npm install,从而生成包含所有者和组node_modules的{​​{1}}目录。

user1然后转到该文件夹​​(它是共享文件夹)并尝试运行类似user2的内容,但他们没有对此目录的权限,因此它失败。< / p>

好的,那很好..所以我npm install --save some_dep node_modules是两个用户所在的共享组。

现在chown -R可以成功运行他的命令,从而生成文件夹user2。但现在node_modules/some_dep无法访问此文件夹。

所以我尝试在user1目录上使用setgid权限。像node_modules这样的东西。结果与之前完全相同 - 当用户运行NPM命令时,生成的目录获取错误的组和权限。

所以我尝试使用ACL,但结果又一样..运行NPM命令的用户产生的目录不会尊重主机文件夹的权限。

这可能与NPM依赖关系的构建方式有关。也许他们是在其他地方建造然后搬家的?

有没有办法设置对该目录和所有未来子目录有效的权限,以便我可以使其工作?

我可以一直以root身份运行所有东西......但这显然不太理想。

1 个答案:

答案 0 :(得分:1)

这似乎是由于npm的设计缺陷造成的。在创建node_modules文件夹时,npm(由于无人能解释的原因)明确地对文件夹执行$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel,'Excel2007'); $objWriter->save('outputfiles/Listado.xlsx'); $url = Router::url('/outputfiles/', true).'Listado.xlsx'; $this->set(array('url' =>$url,'_serialize' => array('url'))); 。而不是依靠操作系统来正确设置权限,npm会出现问题,弄乱你的权限,并且几乎不可能在没有定期手动运行chmod / chown的情况下在共享环境中使用它。

这可能是人们试图使用npm的权限相关问题的无穷追踪的源头。

开发人员承诺(第n次)此问题在以后的版本中得到修复:https://github.com/npm/npm/blob/db9cde008ce855bdac801bb6649cbfb5bb7911ac/changelogs/CHANGELOG-2.md#v2120-2015-06-18