Npm için izin neden node-dev kullanmaya başlamıyor?


9

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 startolduğ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 npmkomutun 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 chownbağ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?

Yanıtlar:


10

İkincisi node-devçalıştırılabilir değildir ve sembolik bağlantı buna işaret eder. Symlink çalıştırılabilir olsa da (semboller her zaman 777'dir), bu, işaret ettiği dosyanın modudur; chmodbağlantıyı çağırmanın aslında işaret ettiği dosyanın modunu değiştirdiğini unutmayın (symlink izinleri asla değişmez).

Belki de herkes için yürütülebilir bit eklemeniz gerekir:

chmod 755 /home/nodejs/spicoli-authorization/node_modules/.bin/node-dev

Oh evet, chmodbir 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 .npmkesin olarak yürütüldüğünü düşünüyordum . Bunu nasıl kontrol edeceğini düşünemedim, çünkü node-devnpm global olarak kurulu değil, bu yüzden bash node-devkomutu tanımıyor ; npm sadece sihirli bir şekilde nerede ve ne arayacağını anlar.
Patrick M
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.