एनपीएम के लिए नोड-देव का उपयोग शुरू करने की अनुमति से इनकार क्यों किया जाता है?


9

मैं कम अनुमतियों वाले उपयोगकर्ता पर नोड.जेएस एप्लिकेशन शुरू करने का प्रयास कर रहा हूं। मुझे पता है कि सभी फ़ाइलें सही उपयोगकर्ता के स्वामित्व में हैं और अनुमतियाँ यथोचित रूप से सेट हैं। मैं ऐसा करने के लिए एक स्क्रिप्ट फ़ाइल का उपयोग करने की कोशिश कर रहा हूं। मैं इस आदेश के साथ स्क्रिप्ट का आह्वान करता हूं

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 कमांड के लिए अनुमतियाँ हैं:

$ 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, लेकिन एक ही त्रुटि का अनुभव करता है।

क्या कुछ फ़ाइल अनुमतियों की समस्या है जो मैं बाइनरी फ़ाइलों के साथ नहीं देख रहा हूँ? या यह एक npm/ node-devविशिष्ट त्रुटि है?

जवाबों:


10

दूसरा node-devनिष्पादन योग्य नहीं है, और सिम्लिंक उसी को इंगित करता है। हालांकि सिम्कलिन निष्पादन योग्य है (सिमिलिंक हमेशा 777 होते हैं), यह उस मोड की फ़ाइल है जो इसे मायने रखता है; ध्यान दें कि chmodलिंक पर कॉल करने से वास्तव में उस फ़ाइल का मोड बदल जाता है जो उसे इंगित करता है (सिमलिंक अनुमतियाँ कभी नहीं बदलती हैं)।

तो शायद आपको सभी के लिए निष्पादन योग्य बिट जोड़ने की आवश्यकता है:

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

अरे हाँ, मैं नहीं जानता था कि chmod'सिंबल आईएनजी के साथ ज्यादा नहीं है , मैंने बस स्वामित्व परिवर्तन की कोशिश की। मैं अब निष्पादन की कोशिश करूँगा - मुझे विश्वास नहीं हो रहा है कि मैं चूक गया। मुझे लगता है कि मैं सोच रहा था कि मेरी .npmनिर्देशिका में प्रतिलिपि सुनिश्चित करने के लिए निष्पादित की जाएगी। मैं नहीं सोच सकता कि यह कैसे जांचना है, क्योंकि node-devविश्व स्तर पर एनपीएम स्थापित नहीं है, इसलिए बैश node-devकमांड को मान्यता नहीं देता है ; npm सिर्फ जादुई रूप से पता लगाता है कि कहां और क्या कॉल करना है।
पैट्रिक एम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.