2013-09-23 7 views
104

मैं कंप्यूटर 1 और कंप्यूटर 2. मैं कंप्यूटर 1 पर एक सी ++ प्रोग्राम संकलित पर उबंटू चला रहा हूँ, और मैं इसे टर्मिनल ./program_name का उपयोग करने से निष्पादित कर सकते हैं। यह ठीक चलाता है।उबंटू कहते हैं, "बैश: ./program अनुमति अस्वीकृत"

हालांकि, जब मैं कंप्यूटर 2 पर यह करने के लिए प्रयास करते हैं, यह कहते हैं: bash: ./program_name: permission denied

क्या गलत है और मैं इसके बारे में क्या कर सकता है?

+7

आप 'progam_name' निष्पादित करने के लिए अनुमति की है? – fedorqui

+1

आपने प्रोग्राम 1 से कंप्यूटर 2 तक प्रोग्राम कैसे प्राप्त किया? क्या आपने निष्पादन योग्य प्रतिलिपि बनाई है या स्रोत कोड को पुन: संकलित किया है? "Ls -l program_name" कमांड का आउटपुट क्या है? –

+0

मुझे यह कैसे पता चलेगा? अगर रूट मदद करता है तो मुझे रूट पासवर्ड पता है। मैंने इसे यूएसबी स्टिक के माध्यम से पहुंचाया। – Kian

उत्तर

235

chmod u+x program_name। फिर इसे निष्पादित करें।

यदि यह काम नहीं करता है, तो प्रोग्राम को यूएसबी डिवाइस से सिस्टम पर मूल मात्रा में कॉपी करें। फिर स्थानीय प्रतिलिपि पर chmod u+x program_name और उसे निष्पादित करें।

यूनिक्स और यूनिक्स-जैसे सिस्टम आमतौर पर एक प्रोग्राम निष्पादित नहीं करेंगे जब तक इसे निष्पादित करने की अनुमति के साथ चिह्नित नहीं किया जाता है। जिस तरह से आपने फ़ाइल को एक सिस्टम से दूसरी प्रणाली में कॉपी किया है (या बाहरी वॉल्यूम घुड़सवार) ने निष्पादन अनुमति (सुरक्षा सुविधा के रूप में) बंद कर दी हो सकती है। आदेश chmod u+x name उस उपयोगकर्ता के लिए अनुमति जोड़ता है जो इसे निष्पादित करने के लिए फ़ाइल का मालिक है।

वह आदेश केवल फ़ाइल से जुड़ी अनुमतियों को बदलता है; यह पूरे वॉल्यूम से जुड़े सुरक्षा नियंत्रण को नहीं बदलता है। यदि यह वॉल्यूम पर सुरक्षा नियंत्रण है जो निष्पादन में हस्तक्षेप कर रहा है, तो आप निष्पादन की अनुमति देने के लिए वॉल्यूम को विकल्पों के साथ पुनर्स्थापित कर सकते हैं। हालांकि, फ़ाइल को स्थानीय वॉल्यूम में कॉपी करना एक तेज़ और आसान समाधान हो सकता है।

+0

मुझे लगता था कि यह केवल गैर यूनिक्स/लिनक्स देशी विभाजन जैसे FAT32 पर होगा, और '/ tmp' पर नहीं होगा। यह पता चला है कि मेरे tmpfs '/ tmp' में एक ही समस्या है, और मुझे निष्पादन योग्य फ़ाइल को वास्तविक मूल वॉल्यूम में प्रतिलिपि बनाना है, यानी मेरा घर फ़ोल्डर ~ ext4 विभाजन में। – RayLuo

+1

मुझे, आज इस समस्या का सामना करना पड़ा, इसलिए मैं एसटीएफडब्ल्यू हूं, पहला खोज परिणाम बैंगनी रंग में है, जिसका अर्थ है कि मैंने इसे पहले पढ़ा है। "यह एक आशाजनक संकेत है", मैंने खुद से बात की, और फिर उस खोज परिणाम पर क्लिक करें। यह मुझे इस पृष्ठ पर लाया, यह उत्तर जो मेरे मामले में काम नहीं करता है, और अंततः ऊपर की टिप्पणी जो काम करता है। और फिर मैंने देखा कि टिप्पणी 2 महीने पहले मेरे द्वारा लिखी गई थी। वाह, क्या जीवन है। – RayLuo

+0

इस क्यू/ए पर पिगबैकिंग के लिए खेद है ... कृपया यह भी सोचें कि शायद ** नोएक्सैक ** ** fstab ** में है जो बिना किसी निष्पादन विशेषाधिकार के ड्राइव को माउंट करता है ... "मैंने सुना" कि "कुछ लोग" खो गए उस समय की तलाश में काफी समय लगता है ... –

17

इस प्रयास करें:

sudo chmod +x program_name 
./program_name 
+0

आपकी सलाह के लिए धन्यवाद। मैंने बस कोशिश की - लेकिन अब यह बैश कहता है: ./program_name बाइनरी फ़ाइल निष्पादित नहीं कर सकता – Kian

+0

ऐसा इसलिए हो सकता है क्योंकि कंप्यूटर 2 32 बिट है और कंप्यूटर 1 64 बिट है? मुझे लगता है कि शायद मुझे इसे कंप्यूटर पर संकलित करना चाहिए 2. आपकी मदद के लिए धन्यवाद। – Kian

+0

हां, यदि आप 64 बिट्स में कुछ प्रोग्राम संकलित करते हैं, और 32 बिट्स सिस्टम में निष्पादित करने का प्रयास करते हैं, तो यह काम नहीं करता है। आपको कंप्यूटर 2 पर स्रोत कोड को पुन: संकलित करने की आवश्यकता है। –

8

आप की तरह लगता है पर अमल झंडा फाइल अनुमति पर सेट नहीं है, कोशिश:

chmod u+x program_name 
संबंधित मुद्दे