ফাইল অনুমতিতে ব্যবহারকারী এবং গ্রুপের মালিকের নজির


20

আমি লিনাক্স (আর্চ লিনাক্স) এ ফাইল অনুমতি সম্পর্কিত কিছু অপ্রত্যাশিত (আমার জন্য) দৌড়ে এসেছি। মূলত আমার আছে:

  • userX ভিতরে groupX
  • fileX userX:groupX ---rwx----

আমাকে কী ধাঁধা দেয়: আমি কোনও ক্রিয়া করতে পারি না ( rwx) fileX। এটা কী ঠিক? কেউ দয়া করে নিশ্চিত করতে পারেন এটি কি প্রত্যাশিত আচরণ?

আমি সম্পাদন করতে পারি কেবলমাত্র ক্রিয়াগুলি mvএবং rmকারণ পিতামাতার ডিরেক্টরিতে আমার লেখার অনুমতি রয়েছে।

বিষয়টি হ'ল, আমি সবসময় ভেবেছিলাম যে এই অনুমতিগুলি একে অপরের উপর পতিত হয়, সবচেয়ে সাধারণ এক (অন্যান্য -> গ্রুপ -> ব্যবহারকারী) দিয়ে শুরু হয়। অন্য কথায়, যদি o=rwxগ্রুপ এবং ব্যবহারকারীর জন্য অনুশীলনগুলি কী তা যত্নশীল হয়? স্পষ্টতই এটি ঘটনাটি নয় তবে এটি আমার কাছে খুব একটা বোঝায় না; এটা বিপরীত মনে হয়। এই দৃষ্টিভঙ্গিটি কেবলমাত্র কার্যকর বলে মনে হচ্ছে, খুব সহজেই খুব নির্দিষ্ট ব্যক্তি / গোষ্ঠীটি বাদ দেওয়া, যা এটিতে যাওয়ার কোনও স্মার্ট উপায় বলে মনে হয় না (imho)। তদ্ব্যতীত, মালিক (এবং গ্রুপ?) chmodযাহাই হউক না কেন সক্ষম হতে হবে ? এই বিষয়ে কোন চিন্তা?


আপনি অবশ্যই গ্রুপএক্সে আছেন?
exussum

ইয়াপ, অবশ্যই; কার্যকর গিডের সাথে পরীক্ষা করেছেনid
অ্যালেক্স

উত্তর:


24

বিষয়টি হ'ল, আমি সবসময় ভেবেছিলাম যে এই অনুমতিগুলি একে অপরের উপর পতিত হয়, সবচেয়ে সাধারণ এক (অন্যান্য -> গ্রুপ -> ব্যবহারকারী) দিয়ে শুরু হয়।

যদি এটি হয় তবে "অন্যান্য" অনুমতিগুলি সবার জন্য প্রযোজ্য হবে।

অন্য কথায়, যদি o = rwx কে গ্রাহ্য করে যে গ্রুপ এবং ব্যবহারকারীর জন্য অনুশীলনগুলি কী?

এটি আপনার আগের বাক্য থেকে আলাদা। এখানে আপনি বোঝাচ্ছেন যে অনুমতিগুলি একত্রে বা একসাথে করা হয়েছে, যেমন ইউজারএক্সের যদি ফাইলটির মালিকানা থাকে এবং ফাইলটি ব্যবহারকারী-পঠনযোগ্য হয়, বা যদি এমন কোনও গ্রুপ যে ইউজারএক্স ফাইলটির মালিক হয় এবং ফাইলটি গ্রুপ হয় পাঠযোগ্য, বা ফাইলটি অন্য পাঠ্যযোগ্য। তবে এটি কীভাবে কাজ করে তা নয়। প্রকৃতপক্ষে, এর o=rwxঅর্থ হ'ল rwxঅনুমতিগুলি অন্যের জন্য প্রযোজ্য, কিন্তু এটি সত্তা যেগুলি অন্য নয় সেগুলি সম্পর্কে কিছুই বলে না।

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

যখন কোনও প্রক্রিয়া fileতিহ্যগত ইউনিক্স অনুমতি সহ কোনও ফাইল খোলার চেষ্টা করে:

  • যদি ফাইলটির নিজস্ব ব্যবহারকারী প্রক্রিয়াটির কার্যকর ইউআইডি হয় তবে ব্যবহারকারীর অনুমতি বিটগুলি ব্যবহৃত হয়।
  • অন্যথায়, যদি ফাইলটির নিজস্ব গোষ্ঠী প্রক্রিয়াটির কার্যকর জিআইডি বা প্রক্রিয়াটির পরিপূরক গোষ্ঠী আইডি হয় তবে গ্রুপ অনুমতি বিটগুলি ব্যবহৃত হয়।
  • অন্যথায়, অন্যান্য অনুমতি বিট ব্যবহৃত হয়।

Rwx বিটের কেবলমাত্র একটি সেট ব্যবহৃত হয়। ব্যবহারকারী অন্য দলের চেয়ে অগ্রাধিকার নেয় এমন গোষ্ঠীর চেয়ে অগ্রাধিকার নেয়। যখন অ্যাক্সেস নিয়ন্ত্রণের তালিকা থাকে , উপরে বর্ণিত অ্যালগরিদমটি সাধারণীকরণ করা হয়:

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

মুখোশের প্রভাব সহ এসিএল এন্ট্রি কীভাবে ব্যবহার করা হয় সে সম্পর্কে আরও তথ্যের জন্য যখন ব্যবহারকারী একাধিক গোষ্ঠীর অন্তর্ভুক্ত থাকে তখন এসিএলএসের নজিরও দেখুন ।

এটি -rw----r-- alice internsএমন কোনও ফাইলকে নির্দেশ করে যা অ্যালিস দ্বারা পড়া এবং লিখিত হতে পারে এবং যা ইন্টার্নগুলি ব্যতীত অন্য সকল ব্যবহারকারী দ্বারা পড়তে পারে। অনুমতি এবং মালিকানা সহ একটি ফাইল ----rwx--- alice internsঅ্যালিস ব্যতীত কেবল ইন্টার্নগুলিতে অ্যাক্সেসযোগ্য (সে ইন্টার্নী হোক না কেন)। যেহেতু অ্যালিস chmodঅনুমতিগুলি পরিবর্তন করার জন্য কল করতে পারে, এটি কোনও সুরক্ষা সরবরাহ করে না; এটি একটি প্রান্তের কেস এসিএলযুক্ত সিস্টেমে, সাধারণীকরণ প্রক্রিয়া নির্দিষ্ট ব্যবহারকারী বা নির্দিষ্ট গোষ্ঠী থেকে অনুমতিগুলি সরিয়ে দেয়, যা কখনও কখনও দরকারী।

প্রতিটি ক্রিয়াকলাপের জন্য সমস্ত বিট বা পড়ার পরিবর্তে (পড়ুন, লিখুন, সম্পাদন করুন) বিটের একক সেট ব্যবহার করার বিভিন্ন সুবিধা রয়েছে:

  • এটি ACLs সহ সিস্টেমে ব্যবহারকারী বা গোষ্ঠীগুলির একটি সেট থেকে অনুমতিগুলি সরিয়ে দেওয়ার মজাদার কার্যকর প্রভাব ফেলে। এসিএলবিহীন সিস্টেমে এক গোষ্ঠী থেকে অনুমতিগুলি সরানো যেতে পারে।
  • এটি কার্যকর করা সহজ: একাধিক বিটের বিট একসাথে একত্রিত করার চেয়ে বিটের একটি সেট পরীক্ষা করুন।
  • কোনও ফাইলের অনুমতি বিশ্লেষণ করা সহজ, কারণ কম অপারেশন জড়িত।

¹ তারা যখন একটি পরিবর্তন করতে পারেন setuid বা setgid প্রক্রিয়া মৃত্যুদন্ড কার্যকর করা হয়। এটি হাতের সমস্যার সাথে সম্পর্কিত নয়।


ভাল ... "ভেঙে পড়ে" আমি একই ধরণের কথা বোঝাই, একটি OR অপারেশন :)
অ্যালেক্স

আপনার সময় জন্য ধন্যবাদ; খুব বিস্তারিত এবং সুন্দর প্রযুক্তিগত উত্তরের জন্য +1
এলেক্স

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

এই প্রান্তের কেসটি এখনও আমার কাছে নির্বোধ বলে মনে হচ্ছে: (গ্রুপএক্সে ইউজারএক্স) + (গ্রুপএক্সে ব্যবহারকারী) আপনার কাছে একটি ফাইলএক্স ব্যবহারকারী রয়েছে: গ্রুপএক্স --- rwx ----। এখন মূল ফোল্ডার স্রষ্টা ব্যবহারকারী এক্স ফাইলএক্স অ্যাক্সেস করতে পারবেন না .. তবে ইউজারজেড পারেন। এবং তারা উভয়ই একই গ্রুপের অংশ। সত্যিই অপ্রচলিত।
অ্যালেক্সফভলক

4

আরও নির্দিষ্ট অনুমতিগুলি কম সুনির্দিষ্টতার চেয়ে বেশি অগ্রাধিকার গ্রহণ করে।

ইউজারএক্স গ্রুপে

ফাইলএক্স ব্যবহারকারী: গ্রুপএক্স --- আরডব্লিউএক্স ----

আপনি যেহেতু ফাইলের মালিক তাই আপনাকে কেবল মালিকের অনুমতি দেওয়া হবে। মালিকের কোনও অনুমতি নেই। সুতরাং, আপনি কিছুই করতে পারবেন না। আপনি যদি ফাইল এবং কোনও গ্রুপের সদস্য না হন তবে গ্রুপ অনুমতিগুলি প্রয়োগ হত।

দয়া করে উইকি পৃষ্ঠার এই বিভাগটি পড়ুন

https://en.wikipedia.org/wiki/File_system_permissions#Classes


2

-rwxrw---- এর অর্থ মালিক অনুমতি পড়েন, লিখেন এবং কার্যকর করেন, গোষ্ঠীটি পড়তে এবং লিখতে পারে এবং অন্যদেরও অনুমতি নেই।

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

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

আমি সাধারণত বাম থেকে ডানে অনুমতি পড়ি। আমি কি মালিক? যদি হ্যাঁ হয় তবে মালিকের অনুমতিগুলি প্রযোজ্য। যদি না; আমি কি এই গ্রুপের সদস্য? যদি হ্যাঁ, গোষ্ঠী অনুমতি প্রযোজ্য। যদি তা না হয় তবে "অন্যান্য" এর অনুমতি আমার কাছে প্রযোজ্য।

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


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

@JosephR। হ্যাঁ, এটাই আমি বলতে চেয়েছিলাম :)
অ্যালেক্স

ওহ, আমার ক্ষমা। আমি সেই অংশটি সরিয়ে ফেলব। উত্তরে কি কার্যকর কিছু আছে?
arnefm

দ্রষ্টব্য: আপনার উত্তরটি কিছুটা সম্পাদনা করা উচিত এবং দ্বিতীয় অনুচ্ছেদটি মুছে ফেলা উচিত (কারণ এটি "অস্পষ্ট" ধরণের) (এটি যথেষ্ট পরিষ্কার নয়, আমি বর্ণিত আচরণের বিরোধিতা করার ধরণের)
অ্যালেক্স

দ্বিতীয় চিন্তায়, আমি উত্তরটি দ্রুত গ্রহণ করতে পারি। এর জন্যে দুঃখিত. সুতরাং আপনি বলছেন যে কখনও কখনও লেখার অনুমতি না থাকাই দরকারী যাতে আপনি দুর্ঘটনাক্রমে কয়েকটি গুরুত্বপূর্ণ ফাইল পরিবর্তন করেন না; তবে অন্যের সম্পূর্ণ অনুমতি থাকলে এটি কী ভাল? (সুতরাং ... আপনাকে ভুল করা থেকে বিরত করা হবে তবে অন্যকে নয় )
অ্যালেক্স

0

আমি একটি ব্যবহারকারীকে একটি গোষ্ঠীতে যুক্ত করতে, একটি ডিরেক্টরিতে (070) গোষ্ঠীটির অনুমতি দিতে সক্ষম হয়েছি এবং তারপরে পুনরায় শুরু করার পরে ফোল্ডারটি অ্যাক্সেস করতে সক্ষম হয়েছি।

গোষ্ঠী তৈরি করুন: সুডো গ্রুপএড গ্রুপের নাম

গোষ্ঠীতে ব্যবহারকারী যুক্ত করুন: sudo gpasswd -a ব্যবহারকারীর গোষ্ঠীর নাম

নিশ্চিত হয়ে নিন যে পুরো ডিরেক্টরিটি সঠিক গ্রুপের মালিকানার অধীনে রয়েছে (সম্পাদন করতে অবশ্যই গ্রুপের বর্তমান সদস্য হতে হবে): sudo chgrp -R গ্রুপের নাম ডিরেক্টরি_পথ /

ফোল্ডারের জন্য কেবলমাত্র গ্রুপ rwx দিন (কেবলমাত্র rw হতে পারে, প্রয়োজন অনুযায়ী সামঞ্জস্য করতে পারেন): sudo chmod -R 070 ডিরেক্টরি_path

উপরের কাজটি করার পরে, লগআউট এবং ফিরে আসার বিষয়টি নিশ্চিত করুন that যদি এটি কাজ না করে, মেশিনটি পুনরায় চালু করুন। এটি করা আমার পক্ষে কাজ করেছিল।

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