"Bash test.sh?" এর সাথে যদি এটি চালানো হয় তবে এটি চালানো যেতে পারে এমন একটি ব্যাশ স্ক্রিপ্ট চালানোর জন্য আমাকে অনুমতিগুলি কার্যকর করার প্রয়োজন কেন?


0

এই বিষয়বস্তু test.sh:

#!/bin/bash
echo "test me"

সঙ্গে চালানো bash test.sh,সমস্যা নেই. কিন্তু সঙ্গে চালানো ./test.sh, একটি ত্রুটি ঘটেছে:

bash: ./test.sh: Permission denied

chmod u+x test.sh এটা দিয়ে চালাতে পারেন ./test.sh

আমি কারণ জানাতে চাই: কেন এটি যুক্ত করার দরকার নেই chmod u+x test.sh যখন এটি দিয়ে চালানো bash test.sh?

এবং কেন এটি যোগ করার প্রয়োজন হয় chmod u+x test.sh যখন এটি দিয়ে চালানো ./test.sh?



"কেন" প্রশ্ন মতামত সাপেক্ষে হতে পারে, এই ক্ষেত্রে, এই প্রশ্নের একটি স্পষ্ট উত্তর আছে (চিহ্নিত উত্তর দেখুন)। অধিকন্তু, চিহ্নিত নকলটি একটি "কিভাবে" প্রশ্ন এবং তাই এই প্রশ্ন থেকে গুণগতভাবে আলাদা। এটি একটি সদৃশ নয়।
music2myear

উত্তর:


1

যখন আপনি এটি দিয়ে চালানো bash test.sh আপনি স্পষ্টভাবে লোড এবং চালানোর জন্য bash বলার অপেক্ষা রাখে না test.sh। ফাইলটি শুধুমাত্র সেই পদ্ধতির মাধ্যমে "চালান" পড়তে হবে। কিন্তু আপনি যদি শুধু একটি ফাইল চালানো ./test.sh যেমন এটি চালানো হবে না কারণ ফাইলটির কোনও সুনির্দিষ্ট কার্যকর অনুমতি নেই; শুধু permissons পড়া।

অর্থ, প্রথম ক্ষেত্রে test.sh দ্বারা লোড করা হচ্ছে bash। কিন্তু এটি নিজস্ব, ইউনিক্স / লিনাক্স সিস্টেম ডিফল্টরূপে ফাইল চালনা করবে না। এবং যে অতীত, আপনি যে প্রাথমিক অপসারণ #!/bin/bash থেকে ./test.sh এবং চালানোর অনুমতিগুলির সাথে এমনকি এটি চালানোর চেষ্টা করুন, এটি চালানো হবে না কারণ সিস্টেমটি নীচে এটির কমান্ডগুলি সম্পর্কে জানবে না।

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


1

ডিওএস এবং উইন্ডোজ মত সিপি / এম-অনুপ্রাণিত অপারেটিং সিস্টেমের বিপরীতে, কোন ফাইল এক্সিকিউটেবল হয় তা নির্দেশ করার জন্য ইউনিক্স ফাইল নাম ব্যবহার করে না।

যদি আপনি ওএস কল ব্যবহার করে একটি ফাইল চালাতে চান ' execvpe () 'বা কমান্ড লাইনে এটি নামকরণ করে এটি কার্যকর অনুমতি নিতে হবে

যতক্ষণ এটি নির্বাহ বিট সেট থাকে ততক্ষণ আপনি যা চান তা কল করুন কল করুন: trump.gif অথবা foo-script (কিন্তু test এটি একটি ভাল উদাহরণ নাম নয় কারণ এটি ইতিমধ্যে নামের সাথে একটি কমান্ড আছে)


হ্যাঁ, ফাইলটি "test" নামকরণ করা উচিত নয় কারণ এটি একটি কমান্ডের নাম।
ArchonOSX
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.