Saya mencoba memulai aplikasi node.js dengan pengguna dengan izin rendah. Semua file yang saya tahu dimiliki oleh pengguna yang benar dan izinnya diatur dengan cukup baik. Saya mencoba menggunakan file skrip untuk melakukan ini. Saya memohon naskah dengan perintah ini
sudo su - nodejs ./start-apps.sh
Script shell menjalankan perintah ini untuk memulai aplikasi
cd "/home/nodejs/my-app"
npm start
npm start
adalah didokumentasikan di sini . Ini pada dasarnya menarik perintah untuk menggunakan file package.json, yang dalam aplikasi kita terlihat seperti ini:
// snip
"scripts": {
"start": "node-dev app"
},
Dan itu memuntahkan kesalahan:
> [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
Itu sh
sepertinya mengatakan bahwa itu melaporkan kesalahan dari perintah shell. Saya tidak berpikir masalah mengakses npm
perintah itu sendiri, karena jika ya, izin yang ditolak akan dinaikkan sebelum ada keluaran dari perintah npm. Tetapi untuk mengesampingkannya, berikut adalah izin untuk perintah npm itu sendiri:
$ 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
Sepertinya semua orang harus bisa menjalankannya.
Izin untuk node-dev
tampilan seperti ini:
$ 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
Saya sudah mencoba chown
tautannya nodejs:nodejs
, tetapi skrip mengalami kesalahan yang sama.
Apakah ada beberapa masalah izin file yang tidak saya lihat dengan file biner? Atau apakah ini merupakan kesalahan npm
/ node-dev
spesifik?
sumber
chmod
symlink, saya hanya mencoba perubahan kepemilikan. Saya akan mencoba hal eksekusi sekarang - saya tidak percaya saya melewatkan itu. Saya kira saya berpikir bahwa salinan di.npm
direktori saya pasti akan dieksekusi. Saya tidak bisa memikirkan cara memeriksanya, karenanode-dev
npm tidak diinstal secara global, jadi bash tidak mengenalinode-dev
perintah; NPM hanya secara ajaib mengetahui di mana & apa yang harus dihubungi.