Estoy tratando de iniciar una aplicación node.js con un usuario con permisos bajos. Todos los archivos que conozco son propiedad del usuario correcto y tienen permisos establecidos razonablemente bien. Estoy tratando de usar un archivo de script para hacer esto. Invoco el script con este comando
sudo su - nodejs ./start-apps.sh
El script de shell ejecuta este comando para iniciar la aplicación
cd "/home/nodejs/my-app"
npm start
npm startestá documentado aquí . Básicamente, extrae el comando para usar del archivo package.json, que en nuestra aplicación se ve así:
// snip
"scripts": {
"start": "node-dev app"
},
Y escupe el error:
> [email protected] start /home/nodejs/my-app
> node-dev app
sh: 1: node-dev: Permission denied
npm ERR! [email protected] start: `node-dev app`
npm ERR! Exit status 126
Eso shparece estar diciendo que informa errores del comando de shell. No creo que el problema sea acceder al npmcomando en sí, porque si lo fuera, el permiso denegado se generaría antes de cualquier salida del comando npm. Pero solo para descartarlo, aquí están los permisos para el comando npm:
$ 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
Parece que todos deberían poder ejecutarlo.
Los permisos para node-devverse así:
$ 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
Ya probé chownel enlace nodejs:nodejs, pero el script experimenta el mismo error.
¿Hay algún problema de permisos de archivos que no veo con los archivos binarios? O se trata de un npm/ node-deverror específico?
fuente

chmodun enlace simbólico, solo intenté el cambio de propiedad. Intentaré la ejecución ahora, no puedo creer que me haya perdido eso. Supongo que estaba pensando que la copia en mi.npmdirectorio se ejecutaría con seguridad. No pude pensar cómo verificar eso, porquenode-devnpm no está instalado globalmente, por lo que bash no reconoce elnode-devcomando; npm solo mágicamente descubre dónde y a qué llamar.