এক্সিকিউটেবল বিট সেট না করা হলে রুট এক্সিকিউট করা যাবে না কেন?


26

rootব্যবহারকারী করতে পারেন এমনকি যদি তার কোনো ফাইলের মধ্যে লিখুন writeঅনুমতি সেট নেই।

rootব্যবহারকারী করতে পারেন এমনকি যদি তার একটি ফাইল পড়তে readঅনুমতি সেট নেই।

rootএর ডিরেক্টরি নির্ধারিত না থাকলেও ব্যবহারকারী কোনও ডিরেক্টরিতে প্রবেশ করতে cd পারেন execute

rootব্যবহারকারী কোনও ফাইলের অনুমতি সেট না করা হলে তা কার্যকর করতে পারে নাexecute

কেন?

user$ echo '#!'$(which bash) > file
user$ chmod 000 file
user$ ls -l file
---------- 1 user user 12 Jul 17 11:11 file
user$ cat file                      # Normal user cannot read
cat: file: Permission denied
user$ su
root$ echo 'echo hello' >> file     # root can write
root$ cat file                      # root can read
#!/bin/bash
echo hello
root$ ./file                        # root cannot execute
bash: ./file: Permission denied

উত্তর:


25

সংক্ষেপে, কারণ এক্সিকিউট বিটটি বিশেষ হিসাবে বিবেচিত হয়; যদি এটি একেবারেই সেট না করা থাকে , তবে ফাইলটি একটি নির্বাহযোগ্য হিসাবে বিবেচিত হয় এবং সুতরাং এটি কার্যকর করা যায় না।

তবে এক্সিকিউট বিটগুলির মধ্যে একটিও সেট করা থাকলে, রুট এটি কার্যকর করতে পারে এবং কার্যকর করে।

পালন:

caleburn: ~/ >cat hello.sh
#!/bin/sh

echo "Hello!"

caleburn: ~/ >chmod 000 hello.sh
caleburn: ~/ >./hello.sh
-bash: ./hello.sh: Permission denied
caleburn: ~/ >sudo ./hello.sh 
sudo: ./hello.sh: command not found

caleburn: ~/ >chmod 100 hello.sh
caleburn: ~/ >./hello.sh
/bin/sh: ./hello.sh: Permission denied
caleburn: ~/ >sudo ./hello.sh 
Hello!

0

পুরানো দিনের সিস্টেম অ্যাডমিনিস্ট্রেশন বসবাস সরঞ্জাম /etcযেমন /etc/restore, /etc/rrestore, /etc/init, /etc/halt, ইত্যাদি কি হবে যদি কল্পনা root'র PATHকথা ছিল /etc:/binএবং rootদৌড়ে passwd

এটা ঠিক কাজ করবে না।

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

* চেকটি এক্সিকিউপিতে থাকতে পারে, এটি একটি ব্যবহারকারী-মোড ফাংশন।

তাত্ত্বিকভাবে এটি শেল স্ক্রিপ্ট হতে পারে হিসাবে এটি এখনও একটি দরকারী চেক, তাই কেন এটি গ্রহণ?

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