চালানো শ স্ক্রিপ্ট: এক্সিকিউটেবল বিট এবং মূল অধিকার সত্ত্বেও denied অনুমতি অস্বীকার


17

আমি ভার্চুয়ালবক্সে ডেবিয়ান ইনস্টল করেছি (বিভিন্ন পরীক্ষার জন্য যা সাধারণত আমার সিস্টেমটি ভেঙে দেয়) এবং ভার্চুয়ালবক্স গেস্ট অ্যাডন স্ক্রিপ্ট চালু করার চেষ্টা করেছি। আমি রুট হিসাবে লগ ইন করেছি এবং লঞ্চ করার চেষ্টা autorun.shকরেছি, কিন্তু আমি পেয়েছি denied অনুমতি অস্বীকার » ls -lস্ক্রিপ্টটির একটি কার্যকর করার অধিকার রয়েছে তা দেখায়।

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

#ls -l ./autorun.sh
-r-xr-xr-x 1 root root 6966 Mar 26 13:56 ./autorun.sh

প্রথমে আমি ভেবেছিলাম যে স্ক্রিপ্টটি এমন কিছু কার্যকর করেছে যা ত্রুটি দিয়েছে। আমি /bin/shএরকম কিছু দিয়ে প্রতিস্থাপন করার চেষ্টা করেছি #/pathtorealsh/sh -xv, তবে আমার কোনও আউটপুট পাওয়া যায় নি - মনে হচ্ছে স্ক্রিপ্টটিও কার্যকর করা যায় না।

এর কারণ কী হতে পারে তা সম্পর্কে আমার ধারণাও নেই।


2
দেখে মনে হচ্ছে এটি কাজ করা উচিত। `ব্যাশ -x ./autorun.sh" হয়তো এই একটি অতিরিক্ত খেই দিতে হবে: স্পষ্টভাবে ব্যাশ সঙ্গে এটি চালনার চেষ্টা
nobar

2
আউটপুট কি mount | grep noexec?
cuonglm

1
@ জ্ঞাক, আপনি ঠিক বলেছেন, মাউন্ট করা «সিড্রোম the noexecসেট আছে। সম্ভবত আপনি এটি উত্তর হিসাবে পোস্ট করতে পারেন; ইতোমধ্যে আমি এটি একটি নির্বাহী অধিকারের সাথে পুনঃনির্মাণ করার চেষ্টা করছি। হুঁ, আমি এমনকি জানতাম না যে ফাইল সিস্টেমের এমন বৈশিষ্ট্য থাকতে পারে।
হাই-এঞ্জেল

এবং যদি আপনি এটি চালিয়ে যাওয়ার চেষ্টা করেন তবে sh ./autorun.shকী ঘটে?
infixed

উত্তর:


29

হতে পারে আপনার ফাইল সিস্টেমটি noexecবিকল্প সেট দিয়ে মাউন্ট করা আছে , সুতরাং আপনি কোনও এক্সিকিউটেবল ফাইল চালাতে পারবেন না। মাউন্ট ডকুমেন্টেশন থেকে :

noexec

মাউন্ট করা ফাইল সিস্টেমে কোনও বাইনারি সরাসরি প্রয়োগের অনুমতি দেবেন না। (সম্প্রতি অবধি /lib/ld*.so / mnt / binary এর মতো কমান্ড ব্যবহার করে বাইনারি চালানো সম্ভব ছিল। লিনাক্স ২.৪.২৫ / ২.6.০ থেকে এই কৌশলটি ব্যর্থ হয়েছে))

চেষ্টা করুন:

mount | grep noexec

তারপরে আপনার ফাইল সিস্টেমটি আউটপুটে তালিকাভুক্ত রয়েছে কিনা তা পরীক্ষা করে দেখুন।

যদি হ্যাঁ, আপনি execবিকল্পটি দিয়ে ফাইল সিস্টেমটিকে পুনরায় মাউন্ট করে এই সমস্যাটি সমাধান করতে পারেন :

mount -o remount,exec filesystem

এটি আমার পক্ষে কাজ করেনি। আমাকে আনমাউন্ট করতে হয়েছিল এবং তারপরে সাধারণত পুনরায় মাউন্ট করতে হয়েছিল। তারপরে এটি ভাল কাজ করেছে।
ডাটাকিড

@ ডাটাকিড: আপনার এফএস কি?
cuonglm

আমি ডেবিয়ান 9 এর সাথে এই সমস্যাটি নিয়ে আসছি, স্ক্রিপ্টগুলি রুট হিসাবে চলতে থাকলে কিছু ফাইলের অনুমতি অস্বীকার করা হয় তবে এটি রুট হিসাবে চিহ্নিত করে ... উইন্ডোজ আচরণের মতো, যদি আমি মুছে ফেলি এবং স্ক্রিপ্টটি কাজ করে! = [
লুসিয়ানো অ্যান্ড্রেস মার্টিনি

আমি একটি খুব অদ্ভুত বার্তা পাচ্ছিলাম, যা এর কারণ হিসাবে দেখা গেল noexec: "sh: 75:
স্ক্রিপ্ট.শ

2

bash -x ./filename.filetypeকাজ করা উচিত. আমি যখন রুট ব্যবহারকারী হিসাবে অনুমতি প্রত্যাখ্যান করি তখন এটি আমার পক্ষে কাজ করে।


না, শেষ পর্যন্ত সমস্যাটি noexecমাউন্ট বিকল্প হিসাবে পরিণত হয়েছিল , এটি কাজ করবে না, কারণ আরও অনেক ফাইল থাকতে পারে যা সম্পাদন করতে হবে; অর্থাত্ filename.filetypeএকই ফাইল সিস্টেম থেকে অন্যান্য ফাইলগুলি চালানোর চেষ্টা করছে হাঁফানো। আপনি এটি সরলীকৃত পরীক্ষার মাধ্যমে সহজেই পরীক্ষা করতে পারেন: একটি দুটি লাইনের স্ক্রিপ্ট তৈরি করুন যা "হ্যালো" প্রিন্ট করে, তারপরে কেবল নিজেকে আবার কল করে, কিন্তু কার্যকর করার অধিকার নির্ধারণ করে না। আপনি যদি এটির সাথে চালনা করেন তবে এটি -x"হ্যালো" মুদ্রণ করবে, কিন্তু তারপরে পুনরাবৃত্ত কল কলটি একটি ত্রুটি ঘটায়।
হাই-এঞ্জেল

1

এই সমস্যার আমার সমাধানটি উত্সটি ব্যবহার করা । আমি খুব গুরুত্বপূর্ণ ডেটা স্টোরেজ ভলিউমে ছিলাম। এই ভলিউম noexec হিসাবে মাউন্ট করা হয়। আমার কাছে একটি সাধারণ শেল স্ক্রিপ্ট রয়েছে যা কার্যকর হয় তবে অনুমতি পেতে সমস্যা হয়।

./fixsamplesheet.sh # this guy is executable
-bash: ./fixsamplesheet.sh: Permission denied

source fixsamplesheet.sh # worked fine

কেবল আমার উবুন্টুতে পরীক্ষা করা হয়েছে।

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