আমি কি কোনও ফাইলকে কেবল কোনও স্ক্রিপ্টে অ্যাক্সেসযোগ্য করে তুলতে পারি, এবং ব্যবহারকারীর মতো না?


11

সিস্টেমে সীমিত অ্যাক্সেস সহ আমার একটি ব্যবহারকারী রয়েছে (এটি হ'ল তিনি দুর্দশাগ্রস্ত নন); আসুন ওকে বব বলে ডাকি ।

আমার কাছে একটি স্ক্রিপ্ট বা বাইনারি রয়েছে যা আমি, সিস্টেম প্রশাসক, বিশ্বাস করি এবং এটি মূল হিসাবে চালাতে কোনও সমস্যা হয় না; স্ক্রিপ্ট কল করুন get-todays-passphrase.sh। এই স্ক্রিপ্টের কাজটি হ'ল "প্রাইভেট" (বব ছাড়া অন্য কোনও ব্যবহারকারী / গোষ্ঠীর মালিকানাধীন বা এমনকি মূলের) ফাইল থেকে ডেটা পড়া /srv/daily-passphrasesএবং কেবল ফাইলটি থেকে একটি নির্দিষ্ট লাইন আউটপুট করা: আজকের তারিখের সাথে সঙ্গতিপূর্ণ লাইন ।

বব মত ব্যবহারকারী না আগামীকালের পাসফ্রেজ জানেন যে অনুমতি দেওয়া, যদিও এটা ফাইলে তালিকাভুক্ত করা হয়। এই কারণে, ফাইলটি /srv/daily-passphrasesইউনিক্স অনুমতি দ্বারা সুরক্ষিত, সুতরাং ববের মতো অ-রুট ব্যবহারকারীদের সরাসরি ফাইলটি অ্যাক্সেসের অনুমতি দেওয়া হয় না । তবে এগুলি যে get-todays-passphrase.shকোনও সময়ে স্ক্রিপ্ট চালানোর অনুমতি দেওয়া হয়েছে , যা "ফিল্টার করা" ডেটা দেয়।


সংক্ষেপে ( টিএল; ডিআর সংস্করণ):

  1. বব সুরক্ষিত ফাইলটি পড়তে পারে না
  2. স্ক্রিপ্টটি সুরক্ষিত ফাইলটি পড়তে পারে
  3. যে কোনও সময়, বব স্ক্রিপ্টটি চালাতে পারে যা ফাইলটি পড়তে পারে

ইউনিক্স ফাইল অনুমতিগুলির মধ্যে এটি করা কি সম্ভব? অথবা যদি বব কোনও স্ক্রিপ্ট শুরু করে, স্ক্রিপ্টটি কি সর্বদা ববের মতো একই অনুমতি নিয়ে চালিত হয়ে যায়?

উত্তর:


13

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

এটি করার জন্য, আপনাকে যা করতে হবে তা হ'ল একটি লাইনের সাথে /etc/sudoersকিছু যুক্ত দেখতে হবে

bob ALL=(root) NOPASSWD: /path/to/command/you/trust

( NOPASSWD:অংশটি প্রয়োজন হয় না, তবে এই পরিস্থিতিতে এটি খুব সাধারণ)) সেই সময়ে, bobসুডোর /path/to/command/you/trustমাধ্যমে প্রার্থনা করতে পারে তবে অন্য কিছুই নয়।

এটি বলেছিল, কাউকে রুট দেওয়া - আমরা এখানে কী করছি you আপনি যা চান তা তেমন নাও হতে পারে। উল্লেখযোগ্যভাবে, আপনার স্ক্রিপ্টে যদি কোনও ত্রুটি থাকে তবে আপনার বাক্সটি মূলোণিত করার ঝুঁকি রয়েছে। যে কারণে, আপনি যদি এর পরিবর্তে, নির্দিষ্টভাবে একটি ব্যবহারকারী তৈরি করতে বিশেষ ফাইল-বলে মালিক পছন্দ করেন specialuser-then chownতাদের ফাইল, এবং /etc/sudoersকরতে bobযে বিশেষ ব্যবহারকারী হতে। সেক্ষেত্রে আপনি যে লাইনটি যুক্ত করবেন sudoersতা হ'ল

bob ALL=(specialuser) NOPASSWD: /path/to/command/you/trust

7
আমি "মূল" পথে না যাওয়ার পরামর্শ দেব - এই উদ্দেশ্যে একটি বিশেষ ব্যবহারকারী / গোষ্ঠী তৈরি করুন।
গুটবার্ট

ভাল যুক্তি; আমি উত্তরটি সংশোধন করব।
বেনিয়ামিন পোল্যাক

7

মুখবন্ধ:

হিসাবে মন্তব্য এবং কারণে নির্দিষ্ট করা হয়েছে ব্যাখ্যা এই উত্তর Linux kernel উপেক্ষা setuid / setguid যখন একটি স্ক্রিপ্ট হ্যান্ডলিং বিট। আমি বেনিয়ামিনের উত্তরটি নকল করতে যাচ্ছি না তবে আমার উত্তরটি সঠিক করার জন্য এক্সিকিউটেব দিয়ে স্ক্রিপ্টটি প্রতিস্থাপন করব।


সংক্ষিপ্ত উত্তর: সেটগিড ব্যবহার করুন

বিস্তারিত পদক্ষেপ:

  1. একটি নতুন গ্রুপ তৈরি করুন (যেমন রিডপাস)
  2. সেই গোষ্ঠীকে পাসফ্রেজ ফাইলের মালিক করুন sudo chown :readpass thatfile
  3. কেবলমাত্র তার গ্রুপ দ্বারা ফাইলটি পঠনযোগ্য করে তুলুন sudo chmod g=r,o= thatfile
  4. আপনার এক্সিকিউটেবল করুন sgid readpass:sudo chmod g+s thatfile

এইভাবে আপনার নির্বাহযোগ্য নিজস্ব গোষ্ঠীর অনুমতি নিয়ে চলবে এবং এইভাবে ফাইলটি পড়তে সক্ষম হবে able


2
সেটগিড এবং সেতুউইড সহজে স্ক্রিপ্টগুলিতে কার্যকর হয় না, তাই না?
মুরু

1
আপনি লিনাক্সে কোনও স্ক্রিপ্ট সেটগিড করতে পারবেন না: সেটগিড বিট উপেক্ষা করা হবে। পরিবর্তে, একটি sudo বিধি যুক্ত করুন যা ববকে thatfileগ্রুপের সাথে চালানোর অনুমতি দেয় readpass
গিলস 'খারাপ হয়ে যাওয়া বন্ধ করুন'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.