Zsh পারমিশন ডেনাইড হল একটি ত্রুটি যা লিনাক্স বা ম্যাক-এ কোনো কমান্ড এক্সিকিউট করার সময় ঘটে যখন আপনার সেটি চালানোর পারমিশন নেই। কমান্ডটি যেকোনো সহজ হতে পারে—যেমন এমন একটি ডিরেক্টরিতে 'ls' চালানো যাতে রাইট পারমিশন নেই, অথবা এমন একটি স্ক্রিপ্ট রান করা যা আপনার ইউজারের পারমিশনের বাইরে কাজ করে। পারমিশন বলতে আমরা রিড বা রাইট পারমিশন বুঝাই।
মূল কারণ
প্রধানত এই ত্রুটি ঘটে যখন আপনার ফাইল এক্সিকিউট, রাইট বা রিড করার পারমিশন নেই।
ধরি আমরা লিনাক্স অপারেটিং সিস্টেমে একটি Zsh শেলের ভিতরে আছি এবং 'cat' ব্যবহার করে একটি ফাইলের কন্টেন্ট লিস্ট করতে চাই, কিন্তু 'permission denied' ত্রুটি পাই।
এখন এই ত্রুটি ফিক্স করতে, প্রথমে ফাইলের পারমিশন লিস্ট করতে হবে। আমরা "ls -l" এক্সিকিউট করি পারমিশন দেখতে।
যে অ্যাপ্রে, পারমিশন এমন যে শুধু রুট ইউজার এবং রুট গ্রুপ ফাইলটি পড়তে পারে, যখন রুট ইউজারই ফাইলে লিখতে পারে।
১. sudo ব্যবহার করুন
এটি ফিক্স করার সবচেয়ে সহজ উপায় হল আমরা যে কমান্ড চালাতে চাই সেটির সাথে 'sudo' ব্যবহার করা। এটি কমান্ডটিকে রুট ইউজার হিসেবে চালাবে। আপনার ক্ষেত্রেও, আপনি নিশ্চিত হলে যে আপনি যে কমান্ড এক্সিকিউট করতে চান বা টাস্ক রান করতে চান সেটি আপনার কম্পিউটারকে ক্ষতি করবে না, 'sudo' ব্যবহার করতে পারেন।
আমরা এভাবে চালাতে পারি:
sudo cat file
২. ফাইল বা ফাইলগুলোর পারমিশন পরিবর্তন করুন
পরবর্তী কাজ যা আমরা করতে পারি সেটি হল ফাইলের পারমিশন পরিবর্তন করা। যেহেতু পারমিশন ডেনাইড ত্রুটি সাধারণত রিড বা রাইট পারমিশনের কারণে হয়, আমরা সেই নির্দিষ্ট ফাইল বা ফাইলগুলোর পারমিশন পরিবর্তন করতে পারি।
'ls -l' এক্সিকিউট করে ফাইলটি যে ডিরেক্টরিতে আছে সেখানে, আমরা দেখতে পাই যে ফাইলের মালিক এবং গ্রুপ রুট।
আমরা মালিককে আমাদের ইউজারে পরিবর্তন করে তারপর ফাইলটির সাথে যা খুশি করুন।
আমরা চালাতে পারি:
sudo chown [user] [file-name]
আমাদের উদাহরণে, v3n0m হল যে ইউজার হিসেবে আমরা লগইন করেছি, তাই কমান্ডটি হবে:
sudo chown v3n0m file
এখানে v3n0m হল আমাদের ইউজার। আপনার ক্ষেত্রে এটি আপনার ইউজারনেম হবে।
এখন, আমরা ফাইলটিতে cat চালাতে পারি কারণ এখন আর permission denied error দিবে না।
৩. এক্সিকিউট পারমিশন সক্ষম করুন
আপনি zsh বা অন্যান্য শেলে ফাইলনেমের সাথে ./ ব্যবহার করে একটি ফাইলকে প্রোগ্রাম হিসেবে এক্সিকিউট করতে পারেন। কিন্তু যদি ফাইলে এক্সিকিউট পারমিশন সেট না থাকে, তবে zsh : permission denied ত্রুটি দেবে।
ধরি আমরা script1 নামে একটি স্ক্রিপ্ট এক্সিকিউট করতে চাই। আমরা টার্মিনালে ./script1 টাইপ করি এবং এটি ত্রুটি দেয়:
আমরা ফাইলটিতে ls -la করি পারমিশন দেখতে। দেখা যাচ্ছে ফাইলে এক্সিকিউট পারমিশন সেট নেই।
সমাধান সহজ, ফাইলে এক্সিকিউট পারমিশন যোগ করুন। আমরা একটি সহজ কমান্ড ইস্যু করি:
chmod +x script1
chmod +x ফাইলের পারমিশনে এক্সিকিউট বিট যোগ করবে ওনার, গ্রুপ এবং অন্যদের জন্যও।
এখন আমরা ./script1 টাইপ করে ফাইলটি প্রোগ্রাম হিসেবে রান করতে পারি কোনো ত্রুটি ছাড়া।
লিনাক্সে এই সমস্যা ফিক্স করা উচিত, তবে যদি macOS বা Gradle-এ এই ত্রুটি হয় তবে নিচে অনুসরণ করুন।
.zshrc ফাইল এডিট করুন (macOS)
কিছু ব্যবহারকারী রিপোর্ট করেছেন যে macOS-এ zsh ব্যবহার করার সময় যখন তারা সেটি ডিরেক্টরির বাইরে থেকে কমান্ড এক্সিকিউট করতে চান তখন এই সমস্যা হয়।
আপনি যদি একই সমস্যার সম্মুখীন হন, তবে সমাধান খুব সহজ।
আপনাকে আপনার home/username ডিরেক্টরিতে .zshrc ফাইল এডিট করতে হবে এবং ফাইলের শেষে এটি যোগ করতে হবে:
setopt auto_cd
এটি zsh-এ auto_cd অপশন সক্রিয় করবে।
.zshrc ফাইল এডিট করতে আপনি যেকোনো গ্রাফিক্যাল টেক্সট এডিটর বা vim বা vi-এর মতো কমান্ড লাইন টেক্সট এডিটর ব্যবহার করতে পারেন।
CHMOD কমান্ড ব্যবহার করে পারমিশন সেট করুন (Gradle)
Zsh পারমিশন ডেনাইড ত্রুটি হতে পারে যদি আপনি gradle-এ কাজ করেন এবং gradlew ফাইলে সঠিক পারমিশন না থাকে।
এই ত্রুটি ফিক্স করতে, আপনাকে gradlew-এ সঠিক পারমিশন সেট করতে হবে।
আপনি আপনার টার্মিনালে এই কমান্ডটি টাইপ করতে পারেন:
chmod 755 gradlew
এটি gradlew ফাইলকে এক্সিকিউটেবল করবে এবং ত্রুটি ফিক্স হয়ে যাবে।
অথবা আপনি সহজে এই কমান্ডটি টাইপ করতে পারেন chmod +x gradlew
এটিও gradlew ফাইলকে এক্সিকিউটেবল করবে।
যদি এই সমাধানগুলোর কোনটিই আপনার জন্য কাজ না করে, তবে নিচে কমেন্ট করুন, আমাদের টেকনিশিয়ান শীঘ্রই আপনাকে সাহায্য করবেন।
লেখক সম্পর্কে

কেভিন অ্যারোজ
কেভিন অ্যারোজ একজন অত্যন্ত অভিজ্ঞ এবং জ্ঞানী প্রযুক্তি বিশেষজ্ঞ যিনি এক দশকের বেশি ইন্ডাস্ট্রি অভিজ্ঞতা রাখেন। তিনি মাইক্রোসফট সার্টিফাইড টেকনোলজি স্পেশালিস্ট (MCTS) সার্টিফিকেশন ধারণ করেন এবং লেটেস্ট টেক ডেভেলপমেন্টস নিয়ে আপডেট থাকতে গভীর আগ্রহ রাখেন। কেভিন টেক-রিলেটেড گسترده বিষয়ে বিস্তারিত লিখেছেন, যেন তাদের সফটওয়্যার ডেভেলপমেন্ট, সাইবারসিকিউরিটি এবং ক্লাউড কম্পিউটিং-এর মতো ক্ষেত্রে দক্ষতা এবং জ্ঞান প্রদর্শন করে। টেক ফিল্ডে তাঁর অবদান বিস্তৃতভাবে স্বীকৃত এবং সম্মানিত, এবং জটিল প্রযুক্তিগত ধারণাগুলো স্পষ্ট এবং সংক্ষিপ্তভাবে ব্যাখ্যা করার ক্ষমতার জন্য তিনি অত্যন্ত বিবেচনীয়।