2015-03-25 392 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