권한이 낮은 사용자로 node.js 응용 프로그램을 시작하려고합니다. 내가 아는 모든 파일은 올바른 사용자가 소유하며 권한이 합리적으로 잘 설정되어 있습니다. 스크립트 파일을 사용 하여이 작업을 수행하려고합니다. 이 명령으로 스크립트를 호출합니다
sudo su - nodejs ./start-apps.sh
쉘 스크립트는이 명령을 실행하여 앱을 시작합니다
cd "/home/nodejs/my-app"
npm start
npm start
여기 에 문서화되어 있습니다 . 기본적으로 package.json 파일에서 사용할 명령을 가져옵니다.이 파일은 다음과 같습니다.
// snip
"scripts": {
"start": "node-dev app"
},
그리고 그것은 오류를 내뱉습니다.
> 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
즉 sh
는 쉘 명령에서 오류를보고 있다고 말하는 것 같다. 문제가 npm
명령 자체에 액세스하고 있다고 생각하지 않습니다. 명령이 있으면 npm 명령의 출력 전에 권한 거부가 발생하기 때문입니다. 그러나 그것을 배제하기 위해 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
모두가 그것을 실행할 수 있어야하는 것처럼 보입니다.
사용 권한은 node-dev
다음과 같습니다.
$ 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
에 chown
대한 링크를 이미 시도 nodejs:nodejs
했지만 scrip에 동일한 오류가 발생합니다.
바이너리 파일에서 볼 수없는 파일 권한 문제가 있습니까? 아니면 이것은 npm
/ node-dev
특정 오류입니까?
chmod
심볼릭 링크 를 많이 사용하지 않았다 , 나는 단지 소유권 변경을 시도했다. 나는 지금 처형을 시도 할 것이다-나는 그것을 놓쳤다는 것을 믿을 수 없다. 내.npm
디렉토리 의 사본이 확실히 실행될 것이라고 생각한 것 같습니다 .node-dev
전 세계적으로 npm이 설치되어 있지 않기 때문에 bash가node-dev
명령을 인식하지 못 하기 때문에 확인 방법을 생각할 수 없었습니다 . npm은 어디에서 무엇을 불러야할지 마 법적으로 알아냅니다.