web-dev-qa-db-fra.com

Pourquoi node.js a-t-il besoin d'autorisations administratives pour accéder à mon partage Windows, même si la premission du partage est 0777

Ubuntu 14.04 s’exécute en tant qu’invité VMware sur mon hôte Windows 8.1.

J'ai partagé un dossier sur mon hôte Windows et il est monté au démarrage de l'invité Ubuntu à l'aide de cette entrée dans fstab:

//myhost/work /work cifs credentials=/home/user/.smbcredentials,noserverino,nounix,uid=user,gid=user,file_mode=0777,dir_mode=0777 0 0

Pourquoi est-il nécessaire d'utiliser Sudo lorsque vous utilisez node pour interagir avec le partage?

Par exemple, si j'utilise npm pour installer quelque chose (npm install --no-bin-links) sur le partage sans Sudo, je reçois un tas d'erreurs chmod:

npm ERR! Error: EPERM, chmod '/work/project/src/node_modules/webpack/package.json'
npm ERR!  { [Error: EPERM, chmod '/work/project/src/node_modules/webpack/package.json']
npm ERR!   errno: 50,
npm ERR!   code: 'EPERM',
npm ERR!   path: '/work/project/src/node_modules/webpack/package.json',
npm ERR!   fstream_finish_call: 'chmod',
npm ERR!   fstream_type: 'File',
npm ERR!   fstream_path: '/work/project/src/node_modules/webpack/package.json',
npm ERR!   fstream_class: 'FileWriter',
npm ERR!   fstream_stack: 
npm ERR!    [ '/usr/lib/node_modules/npm/node_modules/fstream/lib/writer.js:308:19',
npm ERR!      'Object.oncomplete (evalmachine.<anonymous>:107:15)' ] }
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

npm ERR! Please include the following file with any support request:
npm ERR!     /work/project/src/npm-debug.log

Si je l'installe avec Sudo npm install --no-bin-links, tout fonctionne correctement.

Le même problème se produit lorsque j'utilise gulp pour regarder et construire mon projet: gulp watch entraîne les mêmes erreurs chmod lors de la construction, mais Sudo gulp watch fonctionne correctement.

Comme le partage est défini sur 0777, tout le monde peut le lire et l'écrire. Pourquoi ai-je besoin d'utiliser Sudo sur les scripts de noeud?

2
F21

Le dossier appartient à un autre utilisateur. Seul le propriétaire du dossier ou de la racine peut modifier les autorisations à l'aide de chmod. Par conséquent, dans mon cas, Sudo est requis car mon utilisateur n'est pas propriétaire du dossier.

2
F21