আমি যেমন আশা করি তেমন আচরণ না করার জন্য ফাইলের অনুমতিগুলি কার্যকর করার বিষয়ে আমি বিভ্রান্ত হয়ে পড়েছি। সম্ভবত আমার প্রত্যাশা ভুল কারণ। যাই হোক:
আমার কাছে একটি স্ক্রিপ্ট ফাইল রয়েছে, কারণ সরলতার জন্য সবেমাত্র বলা হয় s
, এটি অবস্থিত ~/bin
। এই উদাহরণের স্বার্থে, ফাইলটিতে কেবল নিম্নলিখিত লাইনগুলি রয়েছে:
#!/bin/zsh
echo "Test";
খুব সহজ.
আমি নেভিগেট ~/bin
ডিরেক্টরি, এবং chmod
এর ফাইল অনুমতি s
কাছে 400
- অর্থাত, শুধুমাত্র পাঠযোগ্য আমাকে জন্য শুধুমাত্র। অনুমতি চালানোর কোনও অনুমতি নেই। সুতরাং আমি স্ক্রিপ্টটির পথে প্রবেশ করে এটি সম্পাদন করে চেষ্টা করব:
% ./s
zsh: permission denied: ./s
এ পর্যন্ত সব ঠিকই. ভুল অনুমতিগুলির কারণে ফাইলটি কার্যকর করা যায় না। বাম্পিং অনুমতিগুলি 500
(অনুমোদিত মঞ্জুরি কার্যকর করা) খুব ভাল কাজ করে - এই অনুমতিগুলির সাথে ফাইলটি সূক্ষ্ম সম্পাদন করে:
% ./s
Test
প্রত্যাশার মতোই এটি সব। তবে তারপরে আমি chmod
অনুমতিগুলি ফিরে 400
(আবার অনুমতিটি বন্ধ করে দেওয়া) source
ফাইলে প্রবেশের চেষ্টা করি এবং এটি ঘটে:
% source s
Test
অনুমতি থাকলেও 400
, স্ক্রিপ্টটি কার্যকর করে।
সুতরাং এখানে আমার প্রশ্ন: কেন ./s
ব্যর্থ হয় (এটি করা উচিত) তবে source s
সাধারণভাবে কার্যকর হয়? এটি কি কার্যকর করার অনুমতিটির পুরো উদ্দেশ্যকে পরাভূত করে না?
এ 400
অনুমতি, sh s
এবং zsh s
এছাড়াও কাজ করি।
আমি নিশ্চিত যে আমি হয় কোথাও মারাত্মক ভুল কিছু করছি বা বুঝতে পারি। যেখানে আমাকে কেউ বিন্দু আউট করতে পারেন, এবং এর মধ্যে পার্থক্য ব্যাখ্যা ./s
, source s
, sh s
এবং zsh s
?