বাশের উত্সের ফাঁসির বিটের দরকার নেই কেন?


57

বাশের সাথে sourceএকটি এক্সিকিউশন বিট সেট ছাড়াই কোনও স্ক্রিপ্ট কার্যকর করা সম্ভব। এটি নথিভুক্ত এবং প্রত্যাশিত আচরণ, কিন্তু এটি কি মৃত্যুদন্ড কার্যকর করার বিটটির বিরুদ্ধে নয়?

আমি জানি, এটি sourceএকটি সাব-শেল তৈরি করে না।


2
সত্য যে chmodআপনি অনুমতি (তত্সহ `x) এর একটি অকট্যাল সংখ্যাকে সাথে সেট দেওয়া যাবে কি যুগ তা থেকে আসে কিছু খেই দেয়। আমি যদি তাড়াতাড়ি এবং নোংরা হিসাবে শুরু করি তবে অবাক হব না যে "এটি একটি বাইনারি ফাইল যা আপনি চালাতে পারেন" সূচক, সে-ব্যাং উদ্ভাবনের আগের দিন থেকেই, তবে আমার কাছে তার কোনও প্রমাণ নেই
ইনপিক্সড

9
তারপরে আবার যখন এসআইডি খেলতে আসে তখন বিভিন্ন বিভাগের ব্যবহারকারীদের জন্য বিভিন্ন স্তরের সুরক্ষা আরও গুরুত্বপূর্ণ হয়ে ওঠে। আপনি চাইলে এগিয়ে যান এবং আমার SID প্রোগ্রামটি পড়ুন। কিন্তু আপনি যদি এটা শুধু এটা পড়া মাধ্যমে চালানো, এর SUID ক্ষমতা এটি সঙ্গে বরাবর আসছে নেই
infixed

@infixed লিনাক্স প্রোগ্রাম-লোডার এমনকি করা হবে না চেহারা কুঁড়েঘর এ যদি না সঞ্চালনের বিট সেট করা হয়। (আমার নিজের শিংকে কিছুটা টুট করতে: এখানে দেখুন ))
কাইল স্ট্র্যান্ড

আপনার কাছে + এক্সআরও থাকতে পারে তবে এটি কিছুটা অদ্ভুত কারণ সাধারণত চলমান প্রক্রিয়াতে কোড ইনজেকশনের মাধ্যমে বাইনারিটি পড়া সম্ভব
নিক্লাস বি

আমি লাইন বরাবর কিছু envisioning হয়েছিল "যদি আপনি এটি কেবল এটা পড়া মাধ্যমে চালানো, এর SUID ক্ষমতা এটি সঙ্গে বরাবর আসছে না হয়" @KyleStrandcp /sbin/suidexecutable /tmp/mycopy; /tmp/mycopy
infixed

উত্তর:


36

বাশ একজন দোভাষী; এটি ইনপুট গ্রহণ করে এবং যা খুশি তা করে। এটি এক্সিকিউটেবল বিটের দিকে মনোযোগ দেওয়ার দরকার নেই। প্রকৃতপক্ষে, ব্যাশ পোর্টেবল, এবং অপারেটিং সিস্টেম এবং ফাইল সিস্টেমগুলিতে চালাতে পারে যা এক্সিকিউটেবল বিটের কোনও ধারণা নেই।

এক্সিকিউটেবল বিট সম্পর্কে যা যত্ন করে তা হ'ল অপারেটিং সিস্টেম কার্নেল। 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এবং এটি যে কোডটি চালায় তা হ'ল ইএলএফ ফর্ম্যাটে মেশিন কোড।


3
"বাইটকোড" এর "দোভাষী" হিসাবে লোডারটি ব্যবহার করা যা কেবল বাস্তব এক্সিকিউটেবল বাইনারি হতে পারে ..... দুর্দান্ত। এটার জন্য ধন্যবাদ.
কাইল স্ট্র্যান্ড

@ কাইলস্ট্রান্ডে ইন্ডিয়ারেশনের বেশ কয়েকটি স্তর থাকতে পারে (সঞ্চিত প্রোগ্রাম এবং লোড প্রক্রিয়াটির মধ্যে পার্থক্য এবং মেমরিটি কীভাবে ম্যাপ করা হয়, বিভিন্ন তদারককারী, ভিএম, ইত্যাদি) কিন্তু নীতিগতভাবে মেশিন কোডটি সরাসরি সিপিইউ দ্বারা কার্যকর করা যেতে পারে (কোনও মাইক্রোকড নয়, ইত্যাদি) এবং সুতরাং মেশিন কোডটি ব্যাখ্যা করা যায় না: হার্ডওয়্যার এটিকে এটি মাতৃভাষা হিসাবে বোঝে — কোনও অনুবাদক প্রয়োজন হয় না।
jfs

2
@ জেফেসেবাস্টিয়ান হ্যাঁ, আমরা জানি যে এটি স্থানীয় কোড, সুতরাং "দোভাষী" উক্তিগুলিতে রয়েছে। কাজ ld.soহ'ল ডায়নামিক লিঙ্কিং করা।
200_সুকেস

পছন্দ করেছেন এছাড়াও, এটাই আমি "রিয়েল এক্সিকিউটেবল বাইনারি" বলতে চাইছিলাম এবং আমি "বাইটকোড "ও উদ্ধৃতিতে রেখেছি (যেহেতু এএফএইইকি" বাইটকোড "সাধারণত সংকলিত নেটিভ-এক্সিকিউটেবল বাইনারি কোড উল্লেখ করতে ব্যবহৃত হয় না)। এছাড়াও, দুর্দান্ত ব্যবহারকারীর নাম।
কাইল স্ট্র্যান্ড

@ জেফেসেবাস্টিয়ান আমি বিশ্বাস করি যে আধুনিক x86- এর মতো সিপিইউগুলি মূলত অভ্যন্তরীণভাবে আরআইএসসি, পুরানো রীতির সিআইএসসি নির্দেশনাটি মূলত সংশ্লিষ্ট আরআইএসসি নির্দেশাবলীর মাইক্রোকোড চালনা চালায়, যেখানে একটি সিআইএসসি নির্দেশনা অনেকগুলি আরআইএসসি নির্দেশনা কার্যকর করার কারণ হতে পারে। সুতরাং এক অর্থে, সিআইপিইউ আরআইএসসি মেশিন কোডকে "দোভাষী" দিয়ে কী করছে তা কল্পনা করা যদি কোনও প্রযুক্তিগত দৃষ্টিকোণ থেকে সম্পূর্ণ সঠিক না হয় তবে কমপক্ষে একটি বৈধ মানসিক মডেল। এইএস-এনআই সম্ভবত আরও চরম উদাহরণগুলির মধ্যে একটি: এইএস রাউন্ডের জন্য একটি সিআইএসসি নির্দেশ!
একটি সিভিএন

57

sourceঅথবা সমতুল্য তবে মান বিন্দু. স্ক্রিপ্টটি চালায় না, তবে স্ক্রিপ্ট ফাইল থেকে কমান্ডগুলি পড়ুন , তারপরে তাদের চালিত করুন, লাইনে এক এক করে, বর্তমান শেল পরিবেশে।

এক্সিকিউশন বিটের ব্যবহারের বিরুদ্ধে কিছুই নেই, কারণ শেলের জন্য কেবলমাত্র ফাইলের বিষয়বস্তু পড়ার অনুমতি পড়তে হবে।

আপনি যখন স্ক্রিপ্টটি চালান কেবল তখনই এক্সিকিউশন বিট প্রয়োজন । এখানে শেল স্ক্রিপ্ট থেকে নতুন প্রক্রিয়া চিত্র তৈরি করতে ফাংশন fork()ব্যবহার করে নতুন প্রক্রিয়া করবে execve(), যার নিয়মিত, এক্সিকিউটেবল ফাইল হওয়া দরকার।


5
@ অ্যালেক্সিস: আমি নিশ্চিত না যে আমি সত্যই অনুসরণ করি। যদি আপনি তা করেন তবে আপনি bash < scriptমূলত একই ফলাফল পাবেন source script। একটি নির্বাহী বিট চেক কী সুরক্ষা সরবরাহ করে?
সুস্পষ্ট সংকলক

27
@ অ্যালেক্সিস, এটি যে স্ক্রিপ্টগুলি ব্যাখ্যা করে তার অনুমতি পরীক্ষা করা কোনও দোভাষীর কাজ নয়। কিছুই এটি করে না - পাইথন নয়, রুবি নয়, জাভা ভার্চুয়াল মেশিন নয়, অন্যান্য এলোমেলো শেল নয়। এক্সপ্লিট বিট নিয়ন্ত্রণ করে যে execvসিস্কলগুলির ওএস * পরিবার কোনও এক্সিকিউটেবলের সাথে ব্যবহার করা যেতে পারে, কোনও দোভাষী এটি চালাবেন কিনা তা নয়। কেন কনভেনশন ভেঙে লোককে বিভ্রান্ত করবেন (এবং নন-ফাইল উত্স থেকে প্রবাহিত কোডটি মূল্যায়নের দক্ষতা ভঙ্গ করবেন)?
চার্লস ডাফি

14
@ অ্যালেক্সিস, ... তদতিরিক্ত, একটি শেল লাইব্রেরি থাকার একটি মূল্যবান অর্থ যা কার্যকরযোগ্য নয়: এটি বলে যে "আমি একটি লাইব্রেরি, কমান্ড নই - উত্স আমাকে, আমাকে মৃত্যুদণ্ড দেবেন না"। অন্যথায় আপনার কেবল কোড উত্সাহিত করার উদ্দেশ্যে কোডটির অপব্যবহার শনাক্ত করতে এবং পুনরায় সময়ের জন্য কোড লিখতে হবে, তবে + এক্স অনুমতি না পেয়ে আপনি নিশ্চিত করতে পারেন যে ব্যবহারকারীরা কোনও লাইব্রেরির এইভাবে অপব্যবহার করতে পারবেন না (করবে না)।
চার্লস ডাফি

6
@ অ্যালেক্সিস "এটি লেখকদের সিদ্ধান্ত ছিল" কেবল এই অর্থে যে কোডটি অন্তর্ভুক্ত ছিল না এমন প্রতিটি সম্ভাব্য বিট একটি সিদ্ধান্ত ছিল। শেলটি পড়ার জন্য ফাইলটি খোলে, এর বাইরে কমান্ডগুলি পড়তে। আমি এটি পড়ার অনুমতি পরীক্ষা করার জন্য আশা করব না, এটি কেবল ফাইলটি খোলার চেষ্টা করে এবং এটি না পারলে ব্যর্থ হয়। অনুরূপভাবে এটি লেখার অনুমতি দেয় বা সম্পাদন করে না, কারণ এই চেকগুলি ফাইলটি পড়ার জন্য প্রাসঙ্গিক নয়।
রেন্ডি অরিসন

2
@ অ্যালেক্সিস বাস্তবে এটি ব্যবহার করা হয় যদিও উদাহরণস্বরূপ পাইথনের ভার্চুয়ালেনভের সাথে এটি সক্রিয় করার জন্য স্ক্রিপ্টটি বোঝানো হয় এবং তা কার্যকর করা bin/activateহয় না এবং ফলস্বরূপ কার্যকর কার্যকর কিছু হয় না। স্ক্রিপ্টগুলি সম্পূর্ণ লাইব্রেরি বা অন্যান্য জিনিস হতে পারে। আমার ধারণা।। এস সম্ভবত একটি সংকেতও হতে পারে তবে ন্যূনতম পা-বন্দুক থাকা ভাল: এটি চমৎকার যে ./bin/activateপরিবর্তে দুর্ঘটনায় চালানো সম্ভব নয়. bin/activate
ডাবারোস

20

ননসেটইউড এবং ননসেটগুইড ফাইলগুলিতে এক্সিকিউটেবল বিট (বাকিদের বিপরীতে) কোনও সুরক্ষা ব্যবস্থা নয় of আপনি যা কিছু পড়তে পারেন, আপনি অপ্রত্যক্ষভাবে চালাতে পারেন এবং লিনাক্স আপনাকে যে কোনও কিছু চালাতে পারে কিন্তু প্রত্যক্ষভাবে পড়তে দেয় না পরোক্ষভাবে পড়তে দেয় (এটি নন-সেট (জি) ইউআইডি এক্স-বিট হওয়ার ধারণার কোনও গর্ত ঘুষি দিতে যথেষ্ট হবে) নিরাপত্তা ব্যবস্থা).

এটি আরও সুবিধামত বিষয়: বিটটি সেট করা থাকলে সিস্টেমটি সরাসরি আমার জন্য এটি চালিত করুক, অন্যথায় আমাকে অপ্রত্যক্ষভাবে এটি করা দরকার ( bash the_script;বা কিছু না-পঠন-অনুমতি কার্যকর করার মেমরি চিত্র পেতে হ্যাকিং )।

আপনি যদি ইন-উত্স উভয়কেই উদ্দেশ্য করে এবং আপনার ইনসোর্সকে কার্যকর করে থাকেন তবে আপনি এটি সুবিধার জন্য সেট করতে পারেন।

স্পষ্টতই, তবে অনেকগুলি অংশীদারি গ্রন্থাগার প্রয়োগকারীরা আপনার চিন্তাভাবনা ভাগ করে নেয় এবং ফলস্বরূপ, অনেক সিস্টেমে শ্যাড ইনসোর্সেসেবলের মূল সমতুল্য যে শেয়ার্ড লাইব্রেরিগুলি ব্যবহারযোগ্য হয় তার জন্য নির্বাহযোগ্য হিসাবে চিহ্নিত হওয়া প্রয়োজন। ভাগ করুন লাইব্রেরিগুলি কার্যকর করা যায় কেন দেখুন ?


3
@ মোটে 1001 তারা যদি সত্যিই চায় তবে এই সংযুক্তিগুলি কার্যকর করতে পারে। এটি একটি সুবিধা।
পিএসকোকিক

2
এক্সিকিউটেবল বিট সুরক্ষার জন্য নয়: আমি যদি কোনও ফাইলের মালিক হয়ে থাকি তবে আমি chmodএটিকে মুক্ত করে এটিকে কার্যকর করার যোগ্য করে তুলি। এটি প্রোগ্রামগুলি থেকে ডেটা বাছাই করার জন্য, সুতরাং ওপির প্রশ্নটি যুক্তিসঙ্গত।
অ্যালেক্সিস

1
@ মোট্টে 1001 এটি জিইউআই ফাইল ব্রাউজার / মেল অ্যাপ্লিকেশনটির সুরক্ষা বৈশিষ্ট্য - এটি সহজেই সিদ্ধান্ত নিতে পারে যে কোনও ফাইলের ডাবল-ক্লিক করে যার নাম ".sh" শেষ হয় কোনও টার্মিনালে (উইন্ডোজ-স্টাইলে) কার্যকর করা হবে বা বিপরীতভাবে ডাবল- "ডাউনলোড করা সংযুক্তি" ডিরেক্টরিতে যে কোনও ফাইল ক্লিক করা একটি অন্তর্নির্মিত স্যান্ডবক্সযুক্ত পূর্বরূপ অ্যাপ্লিকেশনটি শুরু করবে। xবিট শুধু একটি অতিরিক্ত জায়গা এটা / পড়তে পারেন কি করতে এর একটি ইঙ্গিত লিখে থাকি।
আইএমএসওপি

3
আমাদের এক্সিকিউটেবল বিটের প্রয়োজনের একটি কারণ হ'ল সেটুয়েড প্রোগ্রামগুলি পরিচালনা করা, বিশেষত রুটের মালিকানাধীন। আপনি নিজেরাই এগুলি নির্বাহ করতে পারেন, আপনার এগুলি চালনার জন্য আপনার ওএসের প্রয়োজন হয় যাতে তাদের প্রয়োজনীয় অনুমতি থাকতে পারে। অন্য কিছু ক্ষেত্রে এটি কেবল একটি সুবিধা।
ওয়ালিদ খান

2
"লিনাক্স আপনাকে //tmp$ cp /bin/cat ./cat ; chmod a-rw ./cat ; ./cat & cp /proc/$!/exe /tmp/cat2cp: cannot stat ‘/proc/16260/exe’: Permission denied
প্রোকের

9

এটা একটা ভালো প্রশ্ন! ইউনিক্স প্রোগ্রাম এবং ডেটার মধ্যে পার্থক্য করতে এক্সিকিউটেবল বিট ব্যবহার করে। ওএসের জন্য এক্সিকিউশন বিটের প্রয়োজন হয় না, যেহেতু একটি নতুন প্রক্রিয়া হিসাবে এক্সিকিউটের জন্য একটি উত্সাহিত স্ক্রিপ্ট ওএসকে দেওয়া হয় না। তবে শেলটি একটি উত্সযুক্ত স্ক্রিপ্টটিকে একটি প্রোগ্রাম হিসাবে বিবেচনা করে এবং আপনি $PATHযে ফাইলটি উত্স করতে চান সেটি সন্ধান করবে । সুতরাং, শেল নিজেই উত্সযুক্ত ফাইলগুলির জন্য নির্বাহের অনুমতি প্রয়োজন হতে পারে; তবে তা হয়নি।

প্রশ্নটি অবশ্যই অনেক আগেই উঠে এসেছিল। বোর্ন শেলটির নকশাটি বেল ল্যাবগুলির ডেনিজেনদের মধ্যে "পরিবর্তন, সংলাপ, আলোচনার দীর্ঘ ক্রম" এর ফলাফল এবং বহু বছর ধরে এসআর বোর্ন এবং অন্যান্যদের দ্বারা অনেকগুলি নকশার সিদ্ধান্ত নিয়ে আলোচনা করা হয়েছিল। দুর্ভাগ্যক্রমে, আমার তাত্ক্ষণিকভাবে উত্স বৈশিষ্ট্যের কোনও আলোচনা খুঁজে পেল না (আমার প্রতিরক্ষা মতে, এটির জন্য গুগল করা কঠিন)। আমি যা পেয়েছি তা হ'ল "।" কমান্ডটি বোর্নের দ্বারা শেলের প্রথম দিকের পরিচয় হিসাবে উপস্থিত হবে না, তবে এটি আরও পরিপক্ক সংস্করণ 7 সংস্করণে উপস্থিত রয়েছে

অনুপস্থিত কর্তৃপক্ষ, এখানে আমার নিজস্ব ব্যাখ্যা:

  1. .কমান্ড, ওরফে source, প্রভাব পাঠগত অন্তর্ভুক্তি (যেমন রয়েছে #includeসি প্রাক প্রসেসর মধ্যে) নির্বাহ স্ক্রিপ্ট অথবা ইন্টারেক্টিভ অধিবেশন উৎস কোডে। এর মতো, অন্তর্ভুক্ত ফাইলটি তর্কসাপেক্ষে "চালিত" হয় না।

  2. ইউনিক্স দর্শন সবসময় প্রোগ্রামারদের তাদের ঝুলিয়ে রাখার পর্যাপ্ত দড়ি দিয়েছিল। খুব বেশি হাত ধরে রাখা এবং স্বেচ্ছাসেবী বিধিনিষেধগুলি কেবল পথে আসে। এটি কেবলমাত্র সম্প্রতি করা হয়েছে যে কিছু বিতরণ rm -r /আপনি যা চান তা করতে অস্বীকার করেছিল। (এই কমান্ডটি আপনার কম্পিউটারে সমস্ত কিছু মুছে ফেলারrm জন্য বলেছে root এটি রুট হিসাবে চেষ্টা করবেন না! বা আরও ভাল, কিছু নয়)) সুতরাং, সম্ভবত বোর্ন এট আল। ঠিক সিদ্ধান্ত নিয়েছে যে আপনি যখন কোনও ফাইল উত্স করার চেষ্টা করবেন তখন আপনি কী করছেন তা আপনাকে ধরে নেওয়া হবে। এটি অপ্রয়োজনীয় কাজ এড়ায় এবং চক্রগুলি তখন অনেক পিছনে পড়েছিল।


তবে @ কেট যা বলেছিল তা অবশ্যই করা উচিত নয়
তোগাম

আমি অবাক হয়েছি এটি @ টুগামকে পতাকাযুক্ত এবং মোছা হয়নি তবে আমি সেকেন্ডে রেখেছি!
বিড়াল

সেখানে, ক্যাট কী লিখেছিল তা আমি জানি না তবে আমি উত্তরটি আরও বেশি প্রমাণ করেছি। (তবে আসুন, এটি ইতিমধ্যে প্রসঙ্গ থেকে যথেষ্ট স্পষ্ট ছিল))
অ্যালেক্সিস

4

যতক্ষণ না ওএস সম্পর্কিত, শেল স্ক্রিপ্টযুক্ত একটি ফাইল কেবলমাত্র ডেটা। যদি আপনি এই জাতীয় ডেটা ফাইলের নাম sourceকমান্ডের সাথে প্রেরণ করেন বা কমান্ড লাইনে এটি ব্যাশ শেলের সাহায্যে প্রেরণ করেন, সমস্ত ওএস দেখায় এমন একটি স্ট্রিং যা ডেটাযুক্ত ফাইলের নামের সাথে মিলে যায়।

এক্ষেত্রে মৃত্যুদন্ড কার্যকর করা বিট কীভাবে প্রাসঙ্গিক হতে পারে?


3

পার্থক্যটি গুরুত্বপূর্ণ কারণ আপনার কাছে শেল কমান্ডগুলির একটি ফাইল থাকতে পারে যা এক্সিকিউটেবল হিসাবে কার্যকর নয়, তবে কেবল তখন সার্থক হলে কার্যকর। এই ফাইলটির জন্য আপনি এক্সিকিউট বিটটি বন্ধ করতে পারেন এবং তারপরে সোর্স কমান্ডে সুস্পষ্টভাবে না থাকলে এটি অ্যাক্সেস করা যাবে না। এ জাতীয় কোনও কারণে এটি চালিত শেলের উপর পার্শ্ব প্রতিক্রিয়া হ'ল। নির্দিষ্ট উদাহরণের জন্য, আমার কাছে ফিক্সপথ নামে একটি স্ক্রিপ্ট রয়েছে যা পথটি দেখে এবং সংশোধন করে।


1

যদি কেউ আরও পড়াশোনা এবং / অথবা স্পষ্টকরণে আগ্রহী হয়: কিছুক্ষণ আগে বাস্তবায়িত প্রায় পসিক্স কমপ্লায়েন্ট শেলটিতে 'এক্সিকিউট_প্রগ্রাম ()' এবং 'বিল্টিন_সোর্স ()' ফাংশনের অভ্যন্তরীণ কাজগুলি অত্যন্ত অনুকরণীয়। এই ফাংশনগুলিতে আপনি দেখতে পাবেন যে তাদের মধ্যে পার্থক্যটি কি:

https://github.com/rsenn/shish/blob/master/src/builtin/builtin_source.c

https://github.com/rsenn/shish/blob/master/src/exec/exec_program.c

মূলত সোর্সিংকে শেল অস্থায়ীভাবে এর অভ্যন্তরীণ ফাইল বিবরণকারীকে পুনর্নির্দেশ হিসাবে দেখা যায় যেখানে এটি শেল স্ক্রিপ্টটিকে পারস্পরিকভাবে ইন্টারেক্টিভ মোডে টার্মিনালটি পার্স করে। সুতরাং এটি অন্যান্য পুনঃনির্দেশগুলির মতো <input_file.txtএবং এর মতো এবং >>append_to_something.listএটি কেবল ফাইলগুলি খোলার এবং বন্ধ করা দরকার।

সুতরাং এক্সিকিউটিভ execve()সিস্টেম কল দ্বারা পরিচালিত হয় যার জন্য এক্সিকিউশন বিট বাধ্যতামূলক।

আমি কিছু সিস্টেম দেখেছি যা ELF / a.out বাইনারি কার্যকর করার অনুমতি দেয় তবে "/lib/ld-dynamic-linker.so" সম্পাদন করে এবং বাইনারি প্রোগ্রাম (এক্সিকিউট বিট ছাড়াই) প্রথম আর্গুমেন্ট হিসাবে প্রয়োগ করে। আমি বিশ্বাস করি যে এটি কিছু ডিসি আলফা বা ভ্যাক্স মেশিনে ছিল (এটি এসসিও ইউনিক্স হতে পারে?)


-2

অন্য দৃষ্টিভঙ্গি:

সোর্স স্ক্রিপ্ট মূলত শেল বিল্টিন এবং প্রোগ্রাম কল নিয়ে থাকে। শেল বিল্টিনগুলি ( sourceতাদের মধ্যে) শেলের অংশ এবং শেলটি প্রথমে কার্যকর করতে হবে। প্রতিটি প্রোগ্রাম বলা হয় (যেটি ইএলএফ হচ্ছে, শেবাং সহ অন্য একটি স্ক্রিপ্ট, যাই হোক না কেন) এক্সিকিউশন বিট সেট করতে হবে, অন্যথায় এটি চলবে না।

সুতরাং এটি একটি এক্সিকিউশন বিট ব্যবহারের বিরুদ্ধে নয়, কারণ এক্সিকিউশন বিট ব্যতীত কিছুই চলবে না। সামগ্রিকভাবে সোর্স স্ক্রিপ্টের জন্য বৈধতাটি ঘটে না; এটি প্রতিটি অংশের জন্য পৃথকভাবে সঞ্চালিত হয়, তবে তা হয়।


শেল বিল্টিনগুলি শেল স্ক্রিপ্ট থেকে উত্পন্ন হয় না। সাধারণত এগুলি শেল এক্সিকিউটেবলের অংশ। Ksh93 এ zsh এবং আরও কয়েকটি শেল সেগুলি শেল এক্সটেনশন হতে পারে।
এফএমপুরফি

@ fpmurphy1 এটি কি আমার বাক্যটি "শেল বিল্টিনস (...) শেলের অংশ নয়"?
কামিল ম্যাকিয়েরোস্কি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.