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 start
está 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:
> 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
Eso sh
parece estar diciendo que informa errores del comando de shell. No creo que el problema sea acceder al npm
comando 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-dev
verse 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é chown
el 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-dev
error específico?
chmod
un 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.npm
directorio se ejecutaría con seguridad. No pude pensar cómo verificar eso, porquenode-dev
npm no está instalado globalmente, por lo que bash no reconoce elnode-dev
comando; npm solo mágicamente descubre dónde y a qué llamar.