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 start
est 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 sh
semble dire qu'il signale des erreurs de la commande shell. Je ne pense pas que le problème soit d'accéder à la npm
commande 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-dev
ressembler à 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é chown
le 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-dev
spécifique?
chmod
un 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.npm
répertoire serait exécutée à coup sûr. Je ne pouvais pas penser comment vérifier cela, carnode-dev
npm n'est pas installé globalement, donc bash ne reconnaît pas lanode-dev
commande; npm trouve par magie où et quoi appeler.