বাশ একজন দোভাষী; এটি ইনপুট গ্রহণ করে এবং যা খুশি তা করে। এটি এক্সিকিউটেবল বিটের দিকে মনোযোগ দেওয়ার দরকার নেই। প্রকৃতপক্ষে, ব্যাশ পোর্টেবল, এবং অপারেটিং সিস্টেম এবং ফাইল সিস্টেমগুলিতে চালাতে পারে যা এক্সিকিউটেবল বিটের কোনও ধারণা নেই।
এক্সিকিউটেবল বিট সম্পর্কে যা যত্ন করে তা হ'ল অপারেটিং সিস্টেম কার্নেল। exec
উদাহরণস্বরূপ, যখন লিনাক্স কার্নেল একটি সম্পাদন করে , ফাইল সিস্টেমটি কোনও noexec
বিকল্পের সাথে মাউন্ট করা হয়নি তা পরীক্ষা করে, এটি প্রোগ্রাম ফাইলের এক্সিকিউটেবল বিটটি পরীক্ষা করে এবং সুরক্ষা মডিউল দ্বারা প্রযোজ্য কোনও প্রয়োজনীয়তা (যেমন SELinux বা AppArmor) প্রয়োগ করে।
নোট করুন যে এক্সিকিউটেবল বিট একটি বিচ্ছিন্ন নিয়ন্ত্রণের ধরণের। একটি লিনাক্স x86-64 সিস্টেমে, উদাহরণস্বরূপ, আপনি স্পষ্টভাবে /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
দোভাষী হিসাবে প্রার্থনা করে এক্সিকিউটেবল বিটের কার্নেলের যাচাইকরণ বাইপাস করতে পারেন :
cp /bin/ls /tmp/
chmod -x /tmp/ls
/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /tmp/ls
এটি ব্যাশ-এ বাশ সোর্স কোডটি সোর্সিংয়ের সাথে কিছুটা উপমাযুক্ত, ব্যাতিক্রমী ব্যতীত ld.so
এবং এটি যে কোডটি চালায় তা হ'ল ইএলএফ ফর্ম্যাটে মেশিন কোড।
chmod
আপনি অনুমতি (তত্সহ `x) এর একটি অকট্যাল সংখ্যাকে সাথে সেট দেওয়া যাবে কি যুগ তা থেকে আসে কিছু খেই দেয়। আমি যদি তাড়াতাড়ি এবং নোংরা হিসাবে শুরু করি তবে অবাক হব না যে "এটি একটি বাইনারি ফাইল যা আপনি চালাতে পারেন" সূচক, সে-ব্যাং উদ্ভাবনের আগের দিন থেকেই, তবে আমার কাছে তার কোনও প্রমাণ নেই