我正在尝试使用低权限用户启动 node.js 应用程序。我知道的所有文件都归正确的用户所有,并且权限设置得相当好。我正在尝试使用脚本文件来执行此操作。我用这个命令调用脚本
sudo su - nodejs ./start-apps.sh
Run Code Online (Sandbox Code Playgroud)
shell 脚本运行此命令以启动应用程序
cd "/home/nodejs/my-app"
npm start
Run Code Online (Sandbox Code Playgroud)
npm start
被记录在这里。它基本上从 package.json 文件中提取要使用的命令,在我们的应用程序中看起来像这样:
// snip
"scripts": {
"start": "node-dev app"
},
Run Code Online (Sandbox Code Playgroud)
它吐出错误:
> 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
Run Code Online (Sandbox Code Playgroud)
这sh
似乎是说它正在报告来自 shell 命令的错误。我不认为问题出在访问npm
命令本身,因为如果是这样,权限被拒绝将在 npm 命令的任何输出之前引发。但只是为了排除它,这里是 npm 命令本身的权限:
$ sudo find / ! \( -type d \) -name npm -exec ls -lah {} \; …
Run Code Online (Sandbox Code Playgroud)