একজন সাধারণ ব্যবহারকারী কেন একটি ফাইল ছাঁটাতে পারে না?


75

কেন chownরুট শুধুমাত্র কমান্ড? রুটহীন ব্যবহারকারীরা নিজের ফাইলগুলি দেওয়ার জন্য কেন ছেঁটে ব্যবহার করতে পারবেন না?


আপনার প্রশ্ন বুঝতে পারবেন না কমান্ড কম রুট ব্যবহারকারীরাও ব্যবহার করতে পারেন
Harish.venkat

হয়তো আমি ভুল করেছি। আমার প্রোফেসরের সঠিক প্রশ্নটি ছিল: "ইউনিক্স সিস্টেমে সাধারণ ব্যবহারকারীর কাছ থেকে অধিকার সরানোর অনুমতি দেওয়া হয় না কেন?" ...
phleg

19
আমি মনে করি আসল প্রশ্নটি: নন-রুট ব্যবহারকারীরা কেন তাদের নিজস্ব ফাইলগুলি দিতে ব্যবহার chownকরতে পারেন না ? (আমি এমন সিস্টেম দেখেছি যেখানে ফাইল সিস্টেমের কনফিগারেশনের উপর নির্ভর করে আপনি পারেন))
কীথ থম্পসন

উত্তর:


96

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

এই বিধিনিষেধের কারণ হ'ল অন্য ব্যবহারকারীর কাছে কোনও ফাইল প্রদান করা অস্বাভাবিক, তবে এখনও গুরুত্বপূর্ণ পরিস্থিতিতে খারাপ কিছু ঘটতে পারে। উদাহরণ স্বরূপ:

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

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

2
আরও একটি সমালোচনামূলক সমস্যা হ'ল কোনও ব্যবহারকারী অনুলিপি করতে পারে /bin/bash, সেটআপ করতে পারে এবং তারপরে chownযারাই চায় এটি এটি করতে পারে। এখন সেই ব্যক্তি হিসাবে তাদের শেল অ্যাক্সেস রয়েছে।
প্যাট্রিক

18
@ পেট্রিক chownসর্বদা সেটুইড এবং সেটগিড বিট সাফ করে।
গিলস

1
@ গিলিস এবং সঙ্গত কারণে ... আপনি যদি কোথাও একটি শেল বাইনারি অনুলিপি করতে পারেন তবে আপনি এটি অ্যাক্সেস করতে পারবেন, তার উপর সেটুইড / গিড বিট সেট করুন এবং এটি শিকড়টিতে ছুঁড়ে ফেলুন (বা এর কোনও আদেশ যা আপনাকে 6755/0: 0 পার্সम्स দেয় / মালিকানা) আপনি সেই সিস্টেমে রুট পেতে পারেন। ওহ প্যাট্রিকের মন্তব্য একেবারে মিস করল।
হান্টেজার

ঠিক আছে, তবে আমি যদি ডিরের ( drwxr-xr-x ring0 ring0 .) মালিক হয়ে থাকি যার মূলটিতে নিয়মিত ফাইল থাকে ( -rw-r--r-- root root file), তবে কেন এটি করতে পারি না, chown ring0 fileকেননা এটি কোনওভাবেই করার অনুমতি দেওয়া হয়েছে, যেমন ring0, cp file x ; rm file ; mv x file(এবং কিছু alচ্ছিক touch sometime file...)?
রিং Ø

15

লিনাক্সে, আপনাকে ডেকে আনার জন্য CAP_CHOWN ক্ষমতা প্রয়োজন। রুট যেমন দেওয়া হয়। ব্যাখ্যার জন্য : http://vouters.dyndns.org/tima/Linux-OpenVMS-C- প্রয়োগকারী_চাউন.ইচটিএমএল দেখুন । আপনি যদি CAP_CHOWN সক্ষমতা দিতে চান, তবে আপনার কোডটি libcap-ng বা libcap দিয়ে তৈরি করুন যেমন: http://vouters.dyndns.org/tima/Linux-PAM-C-Pluggable_Authentication_Modules_programming_example.html যেখানে CAP_AUI- র সরল প্রতিস্থাপন করতে হবে CAP_CHOWN সহ।


1
আপনার মূল হতে হবে না জন্য +1। কারণ আপনাকে আর রুট হতে হবে না।
ctrl-alt-delor

1
কখনও কখনও, আপনার এমনকি CAP_CHOWN: unix.stackexchange.com/questions/399975/… দরকার নেই কার্নেল উত্সটি আমার পড়া থেকে, প্রতিটি ফাইল-সিস্টেমের বাস্তবায়নকে ছাঁটাইয়ের জন্য অনুমতিগুলি পরীক্ষা করার দায়িত্ব দেওয়া হয়। এবং এটি এনএফএসের সাথে দেখা যায় যে সার্ভারের পার্শ্বে অনুমতিগুলি পরীক্ষা করা হয়। এবং যদি সার্ভারটি ... অদ্ভুত হয় ... তবে এটি সম্ভব।
মাইক এস

0

আপনি কমান্ডটি চালু করতে পারেন তবে আপনি যদি রুট না হন তবে এটি কাজ করবে না। এটি সহজ: এমন কোনও ব্যবহারকারী কল্পনা করুন যা কোনও সফ্টওয়্যারকে রুট ব্যবহারকারীতে পরিবর্তন করতে পারে। এটি সেটুইড বিট যোগ করতে পারে এবং, হ্যাঁ, লোকটি মূল! সুতরাং, ব্যবহারটি chmod সহ বিট যোগ করতে পারে তবে ফাইলগুলির মালিক পরিবর্তন করার কোনও সুযোগ নেই।


12
আপনি নিজের মালিকানাযুক্ত কোনও ফাইলে সেটুইড বিট যুক্ত করতে পারবেন না এবং এমন বাস্তবায়ন যা ফাইলগুলি দেওয়ার ফলে সেটুইড বিট সাফ হয়ে যায়।
গিলস

আমি মনে করি ডোমের উত্তরের বিষয়টি এই: আপনি যদি পারতেন তবে কল্পনা করুন। তাহলে ঝামেলা হত। আপনার বক্তব্য, যে আপনি না পারেন, সঠিক। তবে ওপি জিজ্ঞাসা করছে "কেন?" সেটুইড বিট সাফ করা অন্য সুরক্ষা বৈশিষ্ট্য যা আবার প্রশ্নটি করে "কেন?" যা আমি তখন ডমের উত্তরটি উল্লেখ করব: যদি কোনও ব্যবহারকারী নীচে নামতে পারে এবং যদি কোনও ব্যবহারকারী সেটআপ করতে পারে তবে সেই কম্বো বিপর্যয়কর হবে। আমার মনে হয় তিনি কিছুটা নিখোঁজ থাকলেও তিনি একটি সূক্ষ্ম বক্তব্য রাখেন।
মাইক এস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.