J'essaie de démarrer une application node.js avec un utilisateur à faibles autorisations. Tous les fichiers que je connais appartiennent au bon utilisateur et les autorisations sont assez bien définies. J'essaie d'utiliser un fichier script pour ce faire. J'invoque le script avec cette commande
sudo su - nodejs ./start-apps.sh
Le script shell exécute cette commande pour démarrer l'application
cd "/home/nodejs/my-app"
npm start
npm startest documenté ici . Il extrait essentiellement la commande à utiliser du fichier package.json, qui dans notre application ressemble à ceci:
// snip
"scripts": {
"start": "node-dev app"
},
Et cela crache l'erreur:
> my-app@0.1.0-build.100 start /home/nodejs/my-app
> node-dev app
sh: 1: node-dev: Permission denied
npm ERR! spicoli-authorization@0.1.0-build.100 start: `node-dev app`
npm ERR! Exit status 126
Cela shsemble dire qu'il signale des erreurs de la commande shell. Je ne pense pas que le problème soit d'accéder à la npmcommande elle-même, car si c'était le cas, l'autorisation refusée serait levée avant toute sortie de la commande npm. Mais juste pour l'exclure, voici les autorisations pour la commande npm elle-même:
$ sudo find / ! \( -type d \) -name npm -exec ls -lah {} \;
-rwxr-xr-x 1 root root 274 Nov 12 20:22 /usr/local/src/node-v0.10.22/deps/npm/bin/npm
-rwxr-xr-x 1 root root 274 Nov 12 20:22 /usr/local/lib/node_modules/npm/bin/npm
lrwxrwxrwx 1 root root 38 Jan 14 07:49 /usr/local/bin/npm -> ../lib/node_modules/npm/bin/npm-cli.js
Il semble que tout le monde devrait pouvoir l'exécuter.
Les autorisations pour node-devressembler à ceci:
$ sudo find / ! \( -type d \) -name node-dev -exec ls -lah {} \;
-rwxr-xr-x 1 nodejs nodejs 193 Mar 3 2013 /home/nodejs/.npm/node-dev/2.1.4/package/bin/node-dev
-rw-r--r-- 1 nodejs nodejs 193 Mar 3 2013 /home/nodejs/spicoli-authorization/node_modules/node-dev/bin/node-dev
lrwxrwxrwx 1 root root 24 Jan 14 07:50 /home/nodejs/spicoli-authorization/node_modules/.bin/node-dev -> ../node-dev/bin/node-dev
J'ai déjà essayé chownle lien vers nodejs:nodejs, mais le script rencontre la même erreur.
Y a-t-il un problème d'autorisations de fichiers que je ne vois pas avec les fichiers binaires? Ou s'agit-il d'une erreur npm/ node-devspécifique?
chmodun lien symbolique, j'ai juste essayé le changement de propriétaire. Je vais essayer l'exécution maintenant - je ne peux pas croire que j'ai raté ça. Je suppose que je pensais que la copie dans mon.npmrépertoire serait exécutée à coup sûr. Je ne pouvais pas penser comment vérifier cela, carnode-devnpm n'est pas installé globalement, donc bash ne reconnaît pas lanode-devcommande; npm trouve par magie où et quoi appeler.