2015-03-25 107 views
2

我想弄清楚如何通过我的node_modules目录获得权限以便为我工作。这里的问题...Linux目录权限问题(NPM的node_modules目录)

user1去到一个文件夹用的package.json和运行npm install导致node_modules目录与所有者和组user1

user2然后转到该文件夹​​(它是一个共享文件夹)并尝试运行诸如npm install --save some_dep之类的东西,但它们没有对此目录的权限,因此失败。

好吧,这很好..所以我chown -R的node_modules是一个共享组这两个用户都是英寸

现在user2可以运行自己的命令成功产生的文件夹node_modules/some_dep英寸但是现在user1无权访问此文件夹。

所以我尝试在node_modules目录上使用setgid权限。像chmod -R g+s node_modules。结果与以前完全相同 - 当用户运行NPM命令时,生成的目录将获得错误的组和权限。

所以我尝试使用ACL,但结果再次相同..从用户运行NPM命令产生的目录将不尊重主机文件夹的权限。

也许这与如何建立NPM依赖关系有关。也许他们是在别处建造,然后移动?

有没有什么方法可以设置对该目录和所有将来的子目录有效的权限,以便我可以完成这项工作?

我可以随时以root身份运行所有内容......但这显然不理想。

回答

1

这似乎是由于npm中的设计缺陷。在创建node_modules文件夹时,npm(由于没有人能解释的原因)显式地在文件夹上执行chown。 npm不是依靠操作系统来正确设置权限,而是使用糟糕的操作,搞乱了权限,并且使它几乎不可能在共享环境中使用,而无需定期手动运行chmod/chown。

这可能是人们尝试使用npm的权限相关问题的无尽痕迹的来源。

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