2009-04-07 8 views
6

के बाद लिनक्स अनुमति अस्वीकार कर दी गई है इसलिए मेरे पास एक छोटी लिनक्स समस्या है, जो मुझे विंडोज पर इतने सालों खर्च करने के लिए सिखाएगी। वैसे भी मैं एक छोटे से जावा अनुप्रयोग, जावा सेवा आवरण स्क्रिप्ट के साथ अच्छी तरह से लिपटे किया था, लेकिन जब मुझे लगता है कि स्क्रिप्ट चलाने:chmod a = rwx

sh ./wrapper.sh console 

मैं अनुमति अभी से इनकार किया मिलता है। अनुमति से इनकार किया गया संदेश इस तरह है:

eval: 1: /home/user1/MyApp/bin/wrapper: Permission denied 

मेरा छोटा wrapper.sh MyApp/bin फ़ोल्डर में रहता है। निर्देशिका MyApp/bin/wrapper 2 फ़ाइलें हैं:

  • आवरण-linux-x86-32
  • आवरण-linux-x86-64

एक परीक्षण के रूप मैं निम्नलिखित chmod कमांड भाग गया :

chmod a=rwx MyApp -R 

मैं सत्यापित है कि सब कुछ rwx था, यहां तक ​​कि उप फ़ोल्डरों में और स्क्रिप्ट को फिर से चलाने की कोशिश की, ठीक उसी परिणाम के साथ ... अनुमति नहीं दी।

किसी को भी यह पता है कि मैं उस बच्चे को चलाने के लिए क्या प्रयास कर सकता हूं?

धन्यवाद, लेंसलॉट

+0

रैपर की सामग्री क्या हैं? क्या यह हो सकता है कि यह _eval_ नामक कमांड को कॉल करता है? मेरा आदमी मुझे बताता है कि तर्कों को जोड़कर कमांड eval - निर्माण कमांड है। शायद रैपर स्क्रिप्ट में एक समस्या है। – lothar

+0

मुझे विश्वास है कि आपने फ़ाइलों और निर्देशिकाओं पर सार्वजनिक लेखन अनुमति हटा दी है। सार्वजनिक लेखन अनुमति के साथ फ़ाइलों या निर्देशिकाओं को छोड़ने के लिए शायद ही कभी रक्षात्मक है -/tmp एक विशेष मामला है और चिपचिपा-बिट सेट को दूरस्थ रूप से सुरक्षित होने की आवश्यकता है। –

उत्तर

8

मैं सिर्फ त्रुटि संदेश का संदर्भ आपकी फ़ाइल की मेजबानी निर्देशिका के नाम देखा ।

उदाहरण के लिए आप अपनी स्क्रिप्ट जांच सकते हैं जहां आप निर्देशिका के नाम को कमांड के रूप में उपयोग कर रहे हैं? जैसे रैपर/रैपर-लिनक्स-x86-32 (जो फ़ाइल नाम होगा), या इसी तरह की त्रुटियों के बजाय रैपर (जो निर्देशिका नाम है) का उपयोग करना है?

इसी त्रुटियों अक्सर उसमें असफल होने जब फ़ाइल नाम में रिक्त स्थान का प्रयोग और बोली को भूल कहा फ़ाइल नाम दिखाई (यहाँ हालांकि शायद नहीं मामला है,।)

, आप अपने प्रश्न को संपादित कर सकता है आवरण स्क्रिप्ट की सामग्री शामिल करने के लिए आप बुला रहा हूँ

(नया जवाब के बाद से यह पूरी तरह से पिछले noexec विचार से संबंधित न हो, और कहा कि एक संदर्भ के लिए रह सकते हैं।)

+0

आप दा आदमी। यह वही है जो हो रहा था। सिस्टम उलझन में था और फ़ाइल के बजाए फ़ोल्डर को निष्पादित करने का प्रयास किया गया था। ध्यान दें कि अगर मेरी संरचना पहले स्थान पर बुलेट प्रूफ थी तो सिस्टम भ्रमित नहीं होगा। मशीनें केवल वही करती हैं जो हम उन्हें करने के लिए कहते हैं! धन्यवाद लाखों बार moocha। – Lancelot

+0

इसका उल्लेख न करें, मदद करने में सक्षम होने में खुशी हुई। प्रश्न के प्रतिभा पार्सिंग के लिए –

+0

+1 :) –

0

आप भी अपने आवरण के निष्पादन स्क्रिप्ट प्रदान करने के लिए हो सकता है

chmod + x wrapper.sh

संपादित करें: मैं सिर्फ देखा है कि आपका wrapper.sh में स्थित है अपने MyApp फ़ोल्डर /संपादित करें

भी, अगर यू यकीन है कि तुम हो

#!/bin/sh 
01 बनाने

अपने .sh फ़ाइल के शीर्ष पर, आप इसे इस तरह से अमल कर सकते हैं:

.wrapper.sh

+0

हाय रॉय, जब मैं ls -Al करता हूं तो यह मेरे wrapper.sh: -rwxrwxrwx 1 उपयोगकर्ता 1 उपयोगकर्ता 1 19035 2009-04-07 15:32 wrapper के लिए प्रिंट करता है।sh – Lancelot

+0

chmod के साथ = काफी स्वीकार्य है, यह पहले ही निष्पादित बिट सेट कर चुका है। – paxdiablo

0

सबसे पहले, एक पाठ संपादक में खोलने की कोशिश, सुनिश्चित करें कि आप पढ़ने की बनाने के लिए। यदि हां, तो

chmod +x wrapper.sh 

करते हैं और सुनिश्चित करें कि आप स्क्रिप्ट

+0

हाय ज़िफ़्रे, #!/बिन/sh वहां मैंने अभी चेक किया है। – Lancelot

5

फाइल सिस्टम अपनी स्क्रिप्ट की मेजबानी noexec ध्वज के साथ स्थापित किया जा सकता है की शुरुआत में #!/bin/sh किया हुआ है। कि फाइल सिस्टम के लिए अपने/etc/fstab प्रविष्टि चेक करें और अगर वहाँ एक noexec वहाँ को हटाने यह तो है कि फाइल सिस्टम remounting के माध्यम से mount /path/to/mountpoint -o remount

दूसरी सोचा पर कोशिश करने की बजाय noexec उदाहरणों/आदि के लिए mount आदेश के उत्पादन में जाँच/fstab (फ़ाइल सिस्टम गतिशील रूप से घुड़सवार हो सकता है।

eval: 1: /home/user1/MyApp/bin/wrapper: Permission denied 

हम जानते हैं कि यह एक निर्देशिका है, क्योंकि आप का उल्लेख "निर्देशिका MyApp/bin/wrapper 2 फ़ाइलें हैं":)

+0

कोई फ़ाइल सिस्टम पर कोई "noexec" विकल्प नहीं है। लेकिन उस फ़ाइल को इंगित करने के लिए धन्यवाद, यह जानना उपयोगी है कि वह जानकारी कहां है। – Lancelot

+0

यह उबंटू का एक बहुत ही सीधे आगे स्थापित है। स्टार्टअप के बाद कुछ भी नहीं रखा गया है। जब सिस्टम बूट हो जाता है तो डिस्क ड्राइव और सीडीआरएम स्वचालित रूप से आरोहित होते हैं। – Lancelot

0

आप फ़ाइल है कि अन्य उपयोगकर्ता के घर निर्देशिका में नहीं था निष्पादित करने के लिए कोशिश कर सकते हैं आप कर सकते हैं उपयोगकर्ता "उपयोगकर्ता"

chmod आर एक + x/घर/user1 या chmod आर ओ + x/घर/user1 chmod आर जी + x/घर/user1

0

करने की अनुमति दे हालांकि मेरी समस्या इस खोज से थोड़ा अलग थी इसी तरह की समस्या की खोज करते समय आयन मेरी खोज में कुछ बार दिखाई दिया, इसलिए मैं यहां अपने निष्कर्ष पोस्ट करूंगा।

मेरी समस्या यह थी कि मैं chmod कमांड के बाद भंडारण/फ़ोल्डर तक नहीं पहुंच सका।

क्रियान्वित आदेश के बाद:

sudo chmod -755 storage -R //notice -755 is wrong, it should be 755 

मैं/भंडारण उपयोग नहीं कर सका किसी भी अधिक फ़ोल्डर।

मैं ls -l की कोशिश की है:

storage permissions d---------

इसके अलावा git status के बाद:

storage/.gitignore: Permission denied

सही कमांड को क्रियान्वित करने के बाद:

sudo chmod 755 storage -R // without - 

ई बहुत कुछ सामान्य वापस लौट आया।

संबंधित मुद्दे