Tôi đang cố gắng khởi động ứng dụng node.js với người dùng có quyền thấp. Tất cả các tệp tôi biết đều thuộc quyền sở hữu của người dùng chính xác và có quyền được thiết lập hợp lý. Tôi đang cố gắng sử dụng một tập tin kịch bản để làm điều này. Tôi gọi kịch bản với lệnh này
sudo su - nodejs ./start-apps.sh
Kịch bản shell chạy lệnh này để khởi động ứng dụng
cd "/home/nodejs/my-app"
npm start
npm start
được ghi lại ở đây . Về cơ bản, nó lấy lệnh để sử dụng tệp pack.json, trong ứng dụng của chúng ta trông như thế này:
// snip
"scripts": {
"start": "node-dev app"
},
Và nó phát ra lỗi:
> 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
Điều đó sh
dường như đang nói rằng đó là báo cáo lỗi từ lệnh shell. Tôi không nghĩ rằng vấn đề là tự truy cập vào npm
lệnh, bởi vì nếu có, quyền bị từ chối sẽ được đưa ra trước bất kỳ đầu ra nào từ lệnh npm. Nhưng để loại trừ nó ra, đây là các quyền cho chính lệnh 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
Có vẻ như mọi người sẽ có thể thực hiện nó.
Các quyền cho node-dev
giao diện như thế này:
$ 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
Tôi đã thử chown
ing liên kết đến nodejs:nodejs
, nhưng scrip gặp lỗi tương tự.
Có một số vấn đề về quyền tập tin mà tôi không thấy với các tệp nhị phân? Hay đây là một lỗi npm
/ node-dev
cụ thể?
chmod
'một liên kết tượng trưng, tôi chỉ thử thay đổi quyền sở hữu. Tôi sẽ thử điều thực thi ngay bây giờ - tôi không thể tin rằng tôi đã bỏ lỡ điều đó. Tôi đoán rằng tôi đã nghĩ rằng bản sao trong.npm
thư mục của tôi sẽ được thực hiện chắc chắn. Tôi không thể nghĩ làm thế nào để kiểm tra điều đó, bởi vìnode-dev
không phải npm được cài đặt trên toàn cầu, vì vậy bash không nhận ranode-dev
lệnh; npm chỉ cần kỳ diệu tìm ra nơi & những gì để gọi.