Estou tentando iniciar um aplicativo node.js com um usuário com permissões baixas. Todos os arquivos que eu conheço são de propriedade do usuário correto e têm permissões definidas razoavelmente bem. Estou tentando usar um arquivo de script para fazer isso. Eu invoco o script com este comando
sudo su - nodejs ./start-apps.sh
O script de shell executa este comando para iniciar o aplicativo
cd "/home/nodejs/my-app"
npm start
npm start
é documentado aqui . Basicamente, ele puxa o comando para usar fora do arquivo package.json, que em nosso aplicativo é assim:
// snip
"scripts": {
"start": "node-dev app"
},
E isso causa o erro:
> [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
Esse sh
parece estar dizendo que está relatando erros no comando shell. Eu não acho que o problema é acessar o comando npm
em si, porque se fosse, a permissão negada seria levantada antes de qualquer saída do comando npm. Mas apenas para descartar, aqui estão as permissões para o 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 devem ser capazes de executá-lo.
As permissões para node-dev
são assim:
$ 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
Eu já tentei chown
ing o link para nodejs:nodejs
, mas o script experimenta o mesmo erro.
Existe algum problema de permissões de arquivos que não estou vendo nos arquivos binários? Ou isso é um erro específico de npm
/ node-dev
?