Sto cercando di avviare un'applicazione node.js con un utente con autorizzazioni limitate. Tutti i file che conosco sono di proprietà dell'utente corretto e le autorizzazioni sono impostate ragionevolmente bene. Sto cercando di utilizzare un file di script per fare questo. Invoco lo script con questo comando
sudo su - nodejs ./start-apps.sh
Lo script della shell esegue questo comando per avviare l'app
cd "/home/nodejs/my-app"
npm start
npm start
è documentato qui . Praticamente estrae il comando per utilizzare il file package.json, che nella nostra app è simile al seguente:
// snip
"scripts": {
"start": "node-dev app"
},
E sputa l'errore:
> 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
Questo sh
sembra dire che sta segnalando errori dal comando shell. Non penso che il problema stia accedendo al npm
comando stesso, perché se lo fosse, l'autorizzazione negata verrebbe sollevata prima di qualsiasi output dal comando npm. Ma solo per escluderlo, ecco le autorizzazioni per il comando npm stesso:
$ 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
Sembra che tutti dovrebbero essere in grado di eseguirlo.
Le autorizzazioni per node-dev
assomigliare a questo:
$ 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
Ho già provato a chown
collegare il link nodejs:nodejs
, ma lo script presenta lo stesso errore.
C'è qualche problema con le autorizzazioni dei file che non vedo nei file binari? O è un errore npm
/ node-dev
specifico?
chmod
un link simbolico, ho solo provato a cambiare la proprietà. Proverò ora l'esecuzione - non riesco a credere di essermi perso. Immagino che stavo pensando che la copia nella mia.npm
directory sarebbe stata eseguita di sicuro. Non riuscivo a pensare a come verificarlo, perchénode-dev
npm non è installato a livello globale, quindi bash non ha riconosciuto ilnode-dev
comando; npm capisce magicamente dove e cosa chiamare.