একটি ফাইল দুটি ব্যবহারকারীর হতে চায়। কিভাবে? কঠোর লিঙ্কিং ব্যর্থ


32

দুটি সেটুইড প্রোগ্রাম /usr/bin/barএবং /usr/bin/baz, একটি একক কনফিগারেশন ফাইল ভাগ করে foo। কনফিগারেশন ফাইলের মোড 0640এটির সংবেদনশীল তথ্য রয়েছে। একটি প্রোগ্রাম চালিত হয় bar:bar(এটি ব্যবহারকারী বার হিসাবে , গ্রুপ বার ); অন্য হিসাবে baz:bazব্যবহারকারী পরিবর্তন করা কোনও বিকল্প নয়, এমনকি গোষ্ঠী পরিবর্তন করাও পছন্দনীয় নয়।

আমি হার্ড লিংক হিসেবে একক কনফিগারেশন ফাইল ইচ্ছুক /etc/bar/fooএবং /etc/baz/foo। যাইহোক, এই ব্যর্থ কারণ ফাইলটি আবশ্যক, যেমন যতদূর আমি জানি, হয় অন্তর্গত root:barবা root:baz

সম্ভাব্য সমাধান: একটি নতুন গোষ্ঠী তৈরি করুন barbazযার সদস্য barএবং baz। যাক fooঅন্তর্গত root:barbaz

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

আপাতত, আমি ফাইলটির দুটি, অভিন্ন কপি বজায় রাখছি। এটি কাজ করে তবে স্পষ্টতই ভুল is ঠিক কি হবে?

তথ্যের জন্য: আমার ইউনিক্স গ্রুপগুলির সাথে সামান্য অভিজ্ঞতা আছে এবং সেটগিড (2) এর সাথে আমারও নেই।


প্রশ্নটি পর্যায়ক্রমে হয়। আমার নির্দিষ্ট ক্ষেত্রে, দুটি প্রোগ্রাম হ'ল এক্সিম 4 এবং ডোভকোট, মেল হ্যান্ডলিং প্রোগ্রাম যা পাসওয়ার্ড এবং টিএলএস শংসাপত্রগুলি ভাগ করতে পারে।

8
এর জন্য উবুন্টু (এবং আমি মনে করি ডেবিয়ান) সমাধান হ'ল এটি ssl-certআপনার barbazগ্রুপ pretty স্ট্যান্ডার্ডটি হ'ল এই ssl-certগোষ্ঠীর মালিকানাধীন সমস্ত ব্যক্তিগত কী সেট করা এবং সেই গোষ্ঠীতে অ্যাক্সেস করার জন্য প্রয়োজনীয় প্রোগ্রামগুলির সাথে যুক্ত ইউআইডিগুলি রাখা।
অলগ

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

5
প্রোগ্রামগুলি সেটগিড করুন, সেটআপ নয়। সেটুয়েড প্রোগ্রামগুলি একটি খারাপ ধারণা কারণ যদি তারা আপস করা হয় তবে বাইনারি প্রতিস্থাপন করা যায় এবং একটি ট্রোজান ঘোড়া তৈরি করে। (ব্যতিক্রম: নির্ধারিত মূল, কারণ সেখানে আপনার পছন্দ নেই।)
গিলস 'অশুভ হওয়া বন্ধ করুন'

1
নেই wiki.dovecot.org/HowTo/EximAndDovecotSASL আপনার নির্দিষ্ট অবস্থা সমাধান?
এমভিজি

উত্তর:


50

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

chgrp bar file
chmod 640 file
setfacl -m g:baz:r-- file

এখন barএবং bazগ্রুপ উভয়ই ফাইলটি পড়তে পারে।

উদাহরণস্বরূপ, এখানে বিনের মালিকানাধীন একটি ফাইল রয়েছে: বিনটি 640 মোড সহ।

$ ls -l foo
-rw-r-----+ 1 bin bin 5 Aug 17 12:19 foo

এর +অর্থ একটি এসিএল সেট রয়েছে তাই আসুন এটি একবার দেখুন।

$ getfacl foo
# file: foo
# owner: bin
# group: bin
user::rw-
group::r--
group:sweh:r--
mask::r--
other::---

আমরা লাইনটি দেখতে পাচ্ছি group:sweh:r--: এর অর্থ গ্রুপের লোকেরা swehএটি পড়তে পারে।

এই যে আমি!

$ id
uid=500(sweh) gid=500(sweh) groups=500(sweh)

এবং হ্যাঁ, আমি ফাইলটি পড়তে পারি।

$ cat foo
data

23

আপনি এই বিবৃতিগুলিতে পুনর্বিবেচনা করতে চাইতে পারেন:

সম্ভাব্য সমাধান: একটি নতুন গ্রুপ বারবাজ তৈরি করুন যার সদস্য barএবং তারা baz। যাক fooঅন্তর্গত root:barbaz

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

কেন নতুন গ্রুপ তৈরি করতে ভারী হাত? এটি করার এসিএলগুলির সাথে নিম্নলিখিত সুবিধা রয়েছে:

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

ব্যক্তিগতভাবে আমি এসিএলগুলিকে এখানে ভারী হাতের সমাধান হিসাবে দেখি এবং গ্রুপগুলি সহজ, traditionalতিহ্যবাহী ইউনিক্স উপায় হিসাবে দেখি।


16

আমি মনে করি এটি অ্যাক্সেস কন্ট্রোল তালিকা (এসিএল) এর সাধারণ ব্যবহার হবে। কনফিগার ফাইলের এসিএলে উভয় ব্যবহারকারী (বা গোষ্ঠী) যুক্ত করুন:

/etc/foo  root:root rw-------  # Traditional Unix ownership and permission for foo
$ setfacl -m ব্যবহারকারী: বার: rw- / etc / foo # ব্যবহারকারীর বারকে ফু পড়তে এবং লেখার অনুমতি দেয়
$ setfacl -m ব্যবহারকারী: baz: rw- / etc / foo # ব্যবহারকারী বাজকে ফু পড়তে এবং লেখার অনুমতি দেয়

আপনাকে প্রথমে এসিএল-প্যাকেজ ইনস্টল করতে হতে পারে।


3

ফাইলটির মোড 0660(বা 0440লেখার প্রয়োজন না পড়লেও) এবং মালিকানা তৈরি করুন bar:baz। তারপরে একটি প্রক্রিয়া ব্যবহারকারীর অনুমতিগুলির জন্য ফাইলটি অ্যাক্সেস করতে পারে, অন্যটি গ্রুপ অনুমতিগুলির জন্য ধন্যবাদ। এটি এমন এমন ফাইল সিস্টেমগুলিতেও কাজ করে যেখানে ACL গুলি না করে।


2

এটি জমা দেওয়ার পরে এটি উল্লেখ করা হয়নি। যদিও এটি সম্ভবত আপনি যা চান তা না হলেও এটি একই প্রশ্নের সাথে অন্য ব্যক্তির উত্তর হতে পারে।

"নতুন" "ক্লাউড" উপায়টি হ'ল সমস্ত কনফিগারেশন একটি কনফিগারেশন ম্যানেজমেন্ট সিস্টেম (যেমন শেফ , পুতুল , বা জবাবদিহি ) দ্বারা পরিচালিত হয় । সার্ভারে আপনার দুটি স্বতন্ত্র তবে অভিন্ন ফাইল রয়েছে তা গুরুত্বপূর্ণ নয়, কারণ উভয়ই কনফিগারেশন পরিচালন সিস্টেম থেকে একক ফাইলের অনুলিপি।

এটির মতো করার প্রধান সুবিধাটি হ'ল আপনার কনফিগারেশনটি সংস্করণযুক্ত করা হয়েছে ( আপনার সমস্ত কনফিগারেশনের পাশাপাশি) এবং কোনও নতুন অভিন্ন বা প্রায়-অভিন্ন সার্ভার স্থাপন করা এত সহজ হয়ে যায় যে ওটি স্বয়ংক্রিয়ভাবে চালিত হতে পারে।

(রেকর্ডের জন্য, যেহেতু আপনি কনফিগারেশন ম্যানেজমেন্ট ব্যবহার করছেন না, আমি @ ড্রাগের উত্তর হিসাবে গ্রুপ সিস্টেমের সাথে যাব)।

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