অন্যদের দ্বারা উল্লিখিত হিসাবে, ফাইল অনুমতিগুলি কিছুটা মাস্ক। অদ্ভুত বা অযথা সংযুক্তির ব্যবহার রোধ করার জন্য সিস্টেমটি তার পথ থেকে দূরে যায় না: অকেজো অর্থ ক্ষতিকারক নয়।
আমার যদি কেবল লেখার অনুমতি থাকে তবে তার অর্থ কি আমি ফাইলের বিষয়বস্তুগুলিতে সংযোজন করতে বা প্রতিস্থাপন করতে পারি, তবে বর্তমান সামগ্রীগুলি পড়তে পারি না?
হ্যাঁ.
আমি যদি কেবলই পড়ে থাকি তবে কেন আমি কেবল ফাইলটি অনুলিপি করে তা সম্পাদন করতে পারি না?
আপনি পারেন, ব্যতিক্রম সহ। একটি "সুবিধাযুক্ত" ফাইল অনুলিপি করা (যেটিতে একটি সেটআপড / সেটগিড বিট বা লিনাক্স ফাইলের ক্ষমতা রয়েছে) সেই বৈশিষ্ট্যগুলি অনুলিপি করবে না। এটিতে অনুলিপি করার জন্য আপনারও একটি জায়গা প্রয়োজন এবং এটি এমন একটি সিস্টেমের পক্ষে পাওয়া সম্ভব যেখানে / হোম পার্টিশন এটির থেকে ফাইলগুলি চালনা করার অনুমতি দেয় না।
একই অনুলিপিটি নিজেই সংশ্লিষ্ট দোভাষীকে অনুরোধ করে অনুলিপি করা ছাড়াও করা যেতে পারে। উদাহরণস্বরূপ, আপনি শেল স্ক্রিপ্টগুলি কার্যকর করতে না পারলেও এটি চালাতে sh /path/to/script
পারেন। লিনাক্সের বাইনারিগুলির একটি দোভাষী রয়েছে /lib/ld-linux.so
,।
এবং যদি তাদের কেবলমাত্র কার্যকর করার অনুমতি থাকে তবে এর অর্থ কী? কোনও ফাইল কার্যকর করার জন্য কি এটি দেখার দরকার হয় না?
এটি করে - তবে সেটুইড বিট প্রক্রিয়া করার পরে এটি পরীক্ষা করা হয়। আপনি যদি কোনও সেটুইড প্রোগ্রাম চালাচ্ছেন তবে এতে মালিকের অধিকার থাকবে, সুতরাং কেবলমাত্র মালিকের প্রয়োজন হবে + আর।
ডিরেক্টরিগুলির জন্য, + x এর আলাদা অর্থ রয়েছে (এটি আপনাকে ফোল্ডারটি অতিক্রম করতে পারে, অর্থাত্ অভ্যন্তরীণ আইটেমগুলি অ্যাক্সেস করতে পারে)। যদি আপনি ভিতরে কোনও ফাইলের সঠিক নামটি জানেন তবে আপনি ডিরেক্টরিতে এটি কেবল + x নয়, + r থাকা অবস্থায় অ্যাক্সেস করতে পারেন।
মৃত্যুদন্ড কার্যকর করার অনুমতি দেওয়া হলে কোথায় পার্থক্য রয়েছে? একটি টেক্সট ফাইল কার্যকর করার অর্থ হয় না। উইন্ডোজ-তে উদাহরণস্বরূপ .exes, .bats ইত্যাদি রয়েছে। ইউনিক্স সিস্টেমে আমি কেবল .sh সম্পর্কে জানি। এক্সিকিউটেবল ফাইলগুলি সংজ্ঞায়িত করে এমন একটি নির্দিষ্ট সংখ্যক এক্সটেনশন রয়েছে?
এক্সিকিউটেবিলিটি ফাইলের নাম দ্বারা সংজ্ঞায়িত করা হয় না, তবে এর বিষয়বস্তু দ্বারা। (সমস্ত করার পরে, আপনি করছেন নির্বাহ বিষয়বস্তু, না নাম।)
একটি ফাইল এক্সিকিউটেবল হতে পারে যখন কার্নেল জানে যে এটি কীভাবে লোড করতে হয়। লিনাক্স কার্নেল ইএলএফ বাইনারি ফাইলগুলি বুঝতে পারে, পাশাপাশি "স্ক্রিপ্ট" ফাইলগুলি #!
তাদের প্রথম লাইন হিসাবে শিরোনাম সহ করে । (অন্যান্য ইউনিক্স-এর মতো অপারেটিং সিস্টেমের ক্ষেত্রেও একই রকম)) সুতরাং কেবলমাত্র এই দুই ধরণের ফাইলের জন্যই + এক্স ব্যবহার করা বুদ্ধিমান।
উদাহরণস্বরূপ, যদি কোনও স্ক্রিপ্ট ফাইলটি শুরু হয় #!/bin/sh
, তবে এটি কার্যকর করা ম্যানুয়ালি চলমান হিসাবে একই কাজ করে /bin/sh myscript.sh
। পাইথন বা পার্ল বা রুবি বা টিসিএল বা সি # বা নোড / জাভাস্ক্রিপ্ট বা অন্য কোনও ভাষাতে একই প্রয়োগ করা যেতে পারে। (আবার, দ্রষ্টব্য যে ফাইলের নামের প্রত্যয়টির কোনও প্রাসঙ্গিকতা নেই - কেবল যাদু শিরোনামটি করে))
সুবিধাটি হ'ল আপনার সিস্টেমে বিভিন্ন বিভিন্ন ভাষায় কমান্ড লেখা থাকতে পারে এবং প্রতিটি কমান্ড কোন দোভাষী ব্যবহার করে তা কোন যত্ন না করে আপনি সেগুলি ব্যবহার করতে পারেন।
উইন্ডোজ একই পরিস্থিতিতে। এটিতে একই 'এক্সিকিউটেবল' অনুমতি বিটও রয়েছে এবং গ্রাফিকাল ইন্টারফেস ফাইলের নামগুলিতে .exe প্রত্যয় চায়, প্রকৃত কার্নেলটি কেবলমাত্র ফাইলের বিষয়বস্তু সম্পর্কে চিন্তা করে। (উইন্ডোজ এমজেড / পিই বাইনারি এক্সিকিউটেবল ব্যবহার করে এবং স্ক্রিপ্টগুলির জন্য # সমর্থন করে না))