Düşük izinli bir kullanıcı ile bir node.js uygulamasını başlatmaya çalışıyorum. Bildiğim tüm dosyalar doğru kullanıcıya aittir ve izinleri makul şekilde ayarlanmıştır. Bunu yapmak için bir komut dosyası kullanmaya çalışıyorum. Komut dosyasını bu komutla çağırıyorum
sudo su - nodejs ./start-apps.sh
Kabuk betiği, uygulamayı başlatmak için bu komutu çalıştırır
cd "/home/nodejs/my-app"
npm start
npm start
olduğunu burada belgelenen . Temel olarak, uygulamamızda şöyle görünen package.json dosyasından kullanma komutunu çeker:
// snip
"scripts": {
"start": "node-dev app"
},
Ve hatayı veriyor:
> 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
Bu sh
, kabuk komutundan hatalar bildiriyor gibi görünüyor. Sorunun npm
komutun kendisine eriştiğini düşünmüyorum , çünkü eğer olsaydı, izin verilmeyen izin npm komutundan herhangi bir çıktıdan önce yükseltilirdi. Ancak, sadece bunu dışlamak için, npm komutunun kendisinin izinleri şunlardır:
$ 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
Herkesin uygulayabilmesi gerektiği anlaşılıyor.
İçin izinler node-dev
şöyle:
$ 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
Zaten chown
bağlantı ing ing çalıştı nodejs:nodejs
, ama komut dosyası aynı hatayı yaşıyor.
İkili dosyalar ile görmüyorum bazı dosya izinleri sorunu var mı? Ya da bu bir ise npm
/ node-dev
özel hata?
chmod
bir sembolik linkle çok fazla şey bilmiyordum , sadece sahiplik değişikliğini denedim. Şimdi idam şeyi deneyeceğim - bunu özlediğime inanamıyorum. Sanırım dizinimdeki kopyanın.npm
kesin olarak yürütüldüğünü düşünüyordum . Bunu nasıl kontrol edeceğini düşünemedim, çünkünode-dev
npm global olarak kurulu değil, bu yüzden bashnode-dev
komutu tanımıyor ; npm sadece sihirli bir şekilde nerede ve ne arayacağını anlar.