Zsh 'permission denied' त्रुटि तब होती है जब आप लिनक्स या मैक पर किसी कमांड को निष्पादित करने का प्रयास करते हैं जिसके लिए आपके पास निष्पादन अनुमति नहीं होती। कमांड उतना सरल हो सकता है जितना किसी डायरेक्टरी पर 'ls' करना जिसके लिए आपके पास लिखने की अनुमति नहीं है, या कोई स्क्रिप्ट चलाना जो ऐसी क्रियाएं करता है जिनकी अनुमति आपके उपयोगकर्ता को नहीं है। अनुमतियों से हमारा तात्पर्य पढ़ने या लिखने की अनुमतियों से है।
आइए इस त्रुटि के मुख्य कारण को देखें, फिर प्रत्येक समाधान को आजमाकर देखें कि कौन सा सबसे अच्छा काम करता है।
मुख्य रूप से यह त्रुटि तब होती है जब आपके पास फ़ाइल को निष्पादित करने, लिखने या पढ़ने की अनुमति नहीं होती।
मान लें कि हम लिनक्स ऑपरेटिंग सिस्टम में Zsh शेल के अंदर हैं और आप 'cat' का उपयोग करके किसी फ़ाइल की सामग्री सूचीबद्ध करने का प्रयास कर रहे हैं, लेकिन आपको 'permission denied' त्रुटि प्राप्त होती है।
अब इस त्रुटि को ठीक करने के लिए, पहले हमें फ़ाइल की अनुमतियों को सूचीबद्ध करने की आवश्यकता है। हम "ls -l" निष्पादित करते हैं ताकि अनुमतियां देख सकें।
जैसा कि आप देख सकते हैं, अनुमतियां ऐसी हैं कि केवल रूट उपयोगकर्ता और रूट समूह फ़ाइल को पढ़ सकते हैं, जबकि रूट उपयोगकर्ता केवल फ़ाइल पर लिख सकता है।
1. sudo का उपयोग करें
इसे ठीक करने का सबसे सरल समाधान उस कमांड के साथ 'sudo' का उपयोग करना होगा जिसे हम चलाना चाहते हैं। यह कमांड को रूट उपयोगकर्ता के रूप में निष्पादित करेगा। आपके मामले में भी, जब आप आश्वस्त हों कि आप जो कमांड निष्पादित करना चाहते हैं या जो कार्य चलाना चाहते हैं वह आपके कंप्यूटर को नुकसान नहीं पहुंचाएगा, तो आप 'sudo' का उपयोग कर सकते हैं।
हम इस प्रकार चला सकते हैं:
sudo cat file
2. फ़ाइल या फ़ाइलों की अनुमतियां बदलें
अगली चीज जो हम कर सकते हैं वह है फ़ाइल की अनुमतियों को बदलना। चूंकि 'permission denied' त्रुटि आमतौर पर पढ़ने या लिखने की अनुमतियों के कारण होती है, हम उस विशेष फ़ाइल या फ़ाइलों की अनुमतियों को बदल सकते हैं।
जिस डायरेक्टरी में फ़ाइल स्थित है, वहां 'ls -l' निष्पादित करके, हम देख सकते हैं कि फ़ाइल का मालिक और समूह रूट हैं।
हम मालिक को अपने उपयोगकर्ता में बदल सकते हैं और फिर फ़ाइल के साथ जो चाहें कर सकते हैं।
हम चला सकते हैं:
sudo chown [user] [file-name]
हमारे उदाहरण में, v3n0m वह उपयोगकर्ता है जिसके रूप में हम लॉग इन हैं, हम कमांड को इस प्रकार जारी करेंगे:
sudo chown v3n0m file
यहां v3n0m हमारा उपयोगकर्ता है। आपके मामले में यह आपका उपयोगकर्ता नाम होगा।
अब, हम फ़ाइल पर cat चला सकते हैं क्योंकि यह अब हमें permission denied त्रुटि नहीं देगा।
3. निष्पादन अनुमतियां सक्षम करें
आप Zsh या अन्य शेल में फ़ाइल नाम के साथ ./ का उपयोग करके फ़ाइल को प्रोग्राम के रूप में निष्पादित कर सकते हैं। लेकिन यदि फ़ाइल पर निष्पादन अनुमतियां सेट नहीं हैं, तो यह आपको 'zsh: permission denied' त्रुटि देगा।
मान लें कि हम script1 नामक एक स्क्रिप्ट निष्पादित करना चाहते हैं। हम अपने टर्मिनल में ./script1 टाइप करते हैं और यह हमें यह त्रुटि देता है:
हम फ़ाइल पर ls -la करते हैं ताकि अनुमतियां देख सकें। जैसा कि आप देख सकते हैं, फ़ाइल पर निष्पादन अनुमतियां सेट नहीं हैं।
यहां समाधान सरल है, फ़ाइल पर निष्पादन अनुमतियां जोड़ें। हम एक सरल कमांड जारी करते हैं:
chmod +x script1
chmod +x फ़ाइल की अनुमति के लिए मालिक, समूह और अन्य सभी के लिए निष्पादन बिट जोड़ देगा।
अब हम ./script1 टाइप करके बिना किसी त्रुटि के फ़ाइल को प्रोग्राम के रूप में चला सकते हैं।
यदि आप लिनक्स पर इस त्रुटि का सामना कर रहे हैं तो यह इसे ठीक कर देगा, हालांकि, यदि आप मैकओएस या ग्रैडल पर इस त्रुटि का सामना कर रहे हैं तो लेख का अनुसरण करते रहें।
.zshrc फ़ाइल संपादित करें (macOS)
कुछ उपयोगकर्ताओं ने अपने मैकओएस में Zsh का उपयोग करते समय रिपोर्ट किया है कि जब वे उस डायरेक्टरी के अंदर नहीं होते जहां से वे कमांड निष्पादित करना चाहते हैं।
यदि आप इसी तरह की समस्या का सामना करते हैं, तो इसका समाधान वास्तव में सरल है।
आपको अपने home/username डायरेक्टरी में .zshrc फ़ाइल संपादित करने और फ़ाइल के अंत में यह जोड़ने की आवश्यकता है:
setopt auto_cd
यह Zsh में auto_cd विकल्प को सक्षम करेगा।
.zshrc फ़ाइल को संपादित करने के लिए, आप किसी भी ग्राफिकल टेक्स्ट एडिटर या vim या vi जैसे कमांड लाइन टेक्स्ट एडिटर का उपयोग कर सकते हैं।
CHMOD कमांड का उपयोग करके अनुमतियां सेट करें (Gradle)
Zsh 'permission denied' त्रुटि तब हो सकती है यदि आप ग्रैडल पर काम कर रहे हैं और gradlew फ़ाइल में सही अनुमतियां नहीं हैं।
ऐसी त्रुटि को ठीक करने के लिए, आपको gradlew पर सही अनुमतियां सेट करने की आवश्यकता है।
आप अपने टर्मिनल में यह कमांड टाइप कर सकते हैं,
chmod 755 gradlew
यह gradlew फ़ाइल को निष्पादन योग्य बना देगा और त्रुटि ठीक हो जाएगी।
या आप बस यह कमांड टाइप कर सकते हैं chmod +x gradlew
यह भी gradlew फ़ाइल को निष्पादन योग्य बना देगा।
यदि इनमें से कोई भी समाधान आपके लिए काम नहीं करता है, तो बेझिझक नीचे टिप्पणी करें और हमारे तकनीशियन जल्द ही आपकी सहायता करने में प्रसन्न होंगे।
लेखक के बारे में

केविन एरोज
केविन एरोज एक अत्यधिक अनुभवी और जानकार प्रौद्योगिकी विशेषज्ञ हैं जिनके पास एक दशक से अधिक का उद्योग अनुभव है। उनके पास माइक्रोसॉफ्ट सर्टिफाइड टेक्नोलॉजी स्पेशलिस्ट (MCTS) प्रमाणन है और नवीनतम तकनीकी विकास पर अपडेट रहने का गहरा जुनून है। केविन ने तकनीक से संबंधित विषयों की एक विस्तृत श्रृंखला पर व्यापक रूप से लिखा है, जिसमें सॉफ्टवेयर विकास, साइबर सुरक्षा और क्लाउड कंप्यूटिंग जैसे क्षेत्रों में उनकी विशेषज्ञता और ज्ञान प्रदर्शित होता है। तकनीकी क्षेत्र में उनके योगदान को उनके साथियों द्वारा व्यापक रूप से मान्यता प्राप्त और सम्मानित किया गया है, और उन्हें जटिल तकनीकी अवधारणाओं को स्पष्ट और संक्षिप्त तरीके से समझाने की उनकी क्षमता के लिए उच्च माना जाता है।