ডিরেক্টরি মালিক হিসাবে একাধিক গোষ্ঠী সেট করা


31

আমার সার্ভারে আমার ডিরেক্টরি রয়েছে /srv/svn

উদাহরণস্বরূপ devFirmA, devFirmBএবং একাধিক গোষ্ঠীর মালিকানা এই ডিরেক্টরিতে সেট করা সম্ভব devFirmC?

subversionমুল বক্তব্যটি হ'ল, আমি একাধিক সংগ্রহস্থল জুড়ে একাধিক ব্যবহারকারীকে পরিচালনা করতে সংস্করণটি নিয়ন্ত্রণ করতে চাই এবং আমি কীভাবে মার্জ করতে জানি না /srv/svn, সংগ্রহস্থলের মূল ডিরেক্টরি, অনুমতিগুলি permission আমার কাছে উদাহরণস্বরূপ, তিনটি ফার্ম FirmA, FirmBএবং আছে FirmC। এখন, ভিতরে /srv/svnআমি তিনটি দিক তুমি সরাসরি তৈরি করেছি FirmA, FirmB, FirmCএবং তাদের ভিতরে আমি প্রতিটি প্রকল্পের জন্য সংগ্রহস্থলের তৈরি করেছি এবং এখন আমি জানি না অনুমতি স্কিম যেহেতু সব elementes ভিতরে স্থাপন করতে কিভাবে /srv/svnমালিকানা রয়েছে root:root, যা ঠিক নয় অথবা আমি ভুল?


1
দৃ groups় গ্রুপগুলি একে অপরের ফাইলগুলিতে অ্যাক্সেস করে? বা এগুলি কোনও পিতামাতার ডিরেক্টরি ভাগ করে নেওয়া ছাড়া সম্পূর্ণ আলাদা?
জেএম বেকার

@ টেকজিলা ফার্ম গ্রুপটি একে অপরের ফাইলগুলিতে অ্যাক্সেস না করা উচিত, আলাদা হওয়া দরকার, কেবল আমার অবশ্যই সমস্ত ডিরেক্টরিতে অ্যাক্সেস থাকতে হবে।
কর্নেলপ্যানিক

ঠিক আছে, আমি সঠিক উত্তর পোস্ট করেছি, আপনার এটির জন্য এসিএল ব্যবহার করা উচিত নয়। তারা একটি সর্বশেষ অবলম্বন বিকল্প, এই সমস্যা এখনও খুব সাধারণ সমস্যা one
জেএম বেকার

উত্তর:


16

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

প্রথমে আপনার উমাশকে 002 তে সেট করা দরকার, এটি তাই কোনও গোষ্ঠী নিজের সাথে ভাগ করে নিতে পারে। আমি সাধারণত একটি ফাইল তৈরি করি /etc/profile.d/firm.shএবং তারপরে উমাস্কের সাথে একটি পরীক্ষা কমান্ড যুক্ত করি।

[ $UID -gt 10000 ] && umask 002

এরপরে আপনাকে ডিরেক্টরিগুলি তাদের নিজ নিজ গোষ্ঠীতে সেট করতে হবে,

chgrp -R FirmA /srv/svn/FirmA 
chgrp -R FirmB /srv/svn/FirmB
chgrp -R FirmC /srv/svn/FirmC

অবশেষে আপনাকে এসজিআইডি কিছুটা ঠিকঠাক করা দরকার, সুতরাং গোষ্ঠীটি সর্বদা আপনার সেট করাতে থাকবে। এটি কোনও লিখিত ফাইলকে লেখকের জিআইডি সেট করা থেকে আটকাবে।

find /srv/svn/FirmA -type d -print0 | xargs -0 chmod 2775
find /srv/svn/FirmB -type d -print0 | xargs -0 chmod 2775
find /srv/svn/FirmC -type d -print0 | xargs -0 chmod 2775

find /srv/svn/FirmA -type f -print0 | xargs -0 chmod 664
find /srv/svn/FirmB -type f -print0 | xargs -0 chmod 664
find /srv/svn/FirmC -type f -print0 | xargs -0 chmod 664

এখন অবশেষে যদি আপনি অন্যান্য ব্যবহারকারীদের দ্বারা ডিরেক্টরিগুলি অ্যাক্সেস করা থেকে রোধ করতে চান।

chmod 2770 /srv/svn/FirmA
chmod 2770 /srv/svn/FirmB
chmod 2770 /srv/svn/FirmC

2
সতর্কতা: এটি কাজ করা উচিত তবে সমস্ত ফাইলে মৃত্যুদণ্ডের অনুমতি বিটটি সরিয়ে দেয়। এটি ঠিক আছে যদি আপনার ডিরেক্টরি ট্রিটিতে কেবলমাত্র নথি থাকে। যদি এতে এক্সিকিউটেবল ফাইল থাকে তবে এটি কার্যকর করতে বাধা দেবে, যা আপনার সেটআপটি নষ্ট করতে পারে।
স্টাফেন গৌরিচন

1
এটিও একটি দুর্দান্ত ধারণা হতে পারে তবে প্রশ্নের কোনও উত্তর দেয় না।

এটি কেবলমাত্র তিনটি ফোল্ডারের পার্টিশন হিসাবে বর্ণনা করেছে যাতে প্রতিটি ফার্মের কেবল সদস্যরা কেবল তাদের নিজ নিজ ফাইলগুলিতে সংশোধন করতে পারেন - এটি 'এসএনএন' এর প্রয়োজনীয় অ্যাক্সেস দেয় না।
সমৃদ্ধ পি

এটি যদিও খুব কাছাকাছি। কি অনুপস্থিত দিতে হয় আপনি সব গ্রুপে অ্যাক্সেসের অনুমোদন দেয়। আপনার লগইন অনুমান করে এই পদক্ষেপটি যুক্ত করুন svnadmin: sudo usermod -a -G FirmA,FirmB,FirmC svnadmin এটি svnadminএই গোষ্ঠীর সমস্তটিতে যুক্ত হবে। যেহেতু এই সমস্ত গ্রুপের ফাইলগুলিতে 'গ্রুপ chmod 664রাইটিং ' সক্ষম হয়েছে ( এটি করা হয়েছে), আপনি, প্লাস ফার্মএক্স কেবলমাত্র ফার্মেক্সের মালিকানাধীন ফাইলগুলির লেখক হবেন।
সমৃদ্ধ পি

1
আরও ভাল - আপনি কী যোগ / বিয়োগ করতে চান তা যুক্ত / বিয়োগ করার অনুমতিগুলি পরিবর্তন করুন - উদাহরণস্বরূপfind /srv/svn/FirmA -type f -print0 | xargs -0 chmod ug+rw,o+r,o-wx
সমৃদ্ধ পি

25

মালিক হিসাবে আপনি কেবল একটি গ্রুপ থাকতে পারেন ।

তবে অ্যাক্সেস নিয়ন্ত্রণের তালিকা ব্যবহার করে আপনি অন্যান্য গোষ্ঠীর জন্য অনুমতি নির্ধারণ করতে পারেন।

আপনি কমান্ড জারি করে ACL ইনস্টল করেছেন কিনা তা পরীক্ষা করে দেখুন getfacl। যদি আপনার সিস্টেমটি ACL ইনস্টল না করে থাকে তবে aclপ্যাকেজে থাকা কমান্ড লাইন সরঞ্জামগুলি ইনস্টল করুন :sudo apt-get install acl

সঙ্গে getfaclআপনি একটি ডিরেক্টরির অথবা অন্য ফাইলের ক্ষেত্রে ACL তথ্য পড়তে পারেন, এবং setfaclআপনি একটি ফাইল গ্রুপের যোগ করতে পারেন।

উদাহরণ স্বরূপ:

setfacl -m g:devFirmB:rwx /srv/svn/  

গ্রুপ যোগ করে devFirmBদিয়ে EAD, W আচার, ই এক্স নির্দেশিকাতে ecute অনুমতি /srv/svn

আপনি যদি সেই ডিরেক্টরিতে তৈরি ফাইলগুলি একাধিক দলের মালিকানার মালিকানাতে চান তবে এসিএলকে ডিফল্ট এসিএল হিসাবে সেট করুন। Xডিফল্ট গ্রুপ এন্ট্রি মানে "মৃত্যুদন্ড মঞ্জুর করে মালিক (বা অন্য কেউ) দ্বারা এক্সিকিউটেবল"।

setfacl -m g:devFirmB:rwx /srv/svn/  
setfacl -d -m g:devFirmB:rwX /srv/svn/  

6

Traditionalতিহ্যবাহী ইউনিক্স অনুমতি সহ একাধিক লিনাক্স গ্রুপের মালিকানাধীন কোনও ফাইল থাকা সম্ভব নয়। (তবে এটি এসিএল দিয়ে সম্ভব )

কিন্তু আপনি নিম্নলিখিত কার্যসংক্রান্ত ব্যবহার এবং একটি নতুন গ্রুপ (যেমন বলা তৈরি করতে পারেন devFirms) যা দলের সকল ব্যবহারকারীর অন্তর্ভুক্ত করা হবে devFirmA, devFirmBএবং devFirmC
আপনি এর সাথে নতুন ব্যবহারকারী গোষ্ঠী তৈরি করেন:

sudo addgroup NEWGROUPNAME

প্রথমত, আপনাকে কম্যান্ডটি id-utilsপেতে ইনস্টল করতে হবে lid:

sudo apt-get install id-utils

তারপর আপনি সহজেই সকল ব্যবহারকারীর কপি করতে কোডের নিম্নলিখিত লাইন চালাতে পারেন SOURCEGROUPকরতে TARGETGROUP। অবশ্যই প্রতিটি কপি অনুলিপি করতে চাইলে আপনাকে একবার কমান্ডটি চালাতে হবে। প্রকৃত গ্রুপের নাম দিয়ে মূলধনযুক্ত স্থানধারীদের প্রতিস্থাপন করতে ভুলবেন না।

for u in $(lid -g -n SOURCEGROUP); do sudo usermod -a -G TARGETGROUP $u; done

সুতরাং আপনার ক্ষেত্রে আপনাকে কমান্ডটি চালাতে হবে (সমস্ত লাইন একবারে):

sudo addgroup devFirms &&
for u in $(lid -g -n devFirmA); do sudo usermod -a -G devFirms $u; done &&
for u in $(lid -g -n devFirmB); do sudo usermod -a -G devFirms $u; done &&
for u in $(lid -g -n devFirmC); do sudo usermod -a -G devFirms $u; done

মনে রাখবেন যে এই আদেশগুলি কেবলমাত্র সেই সমস্ত ব্যবহারকারীদের অনুলিপি করে যারা সোর্স গ্রুপগুলির বর্তমান সদস্য। পরবর্তীকালে যুক্ত হওয়া প্রত্যেক ব্যবহারকারীর adduserকমান্ডটি সহ আপনার সাধারণ দলে ম্যানুয়ালি যোগ করতে হবে । প্রকৃত ব্যবহারকারী এবং গোষ্ঠীর নাম ( devFirms) সহ কেবল একবার মূলধনযুক্ত স্থানধারককে প্রতিস্থাপন করুন :

sudo adduser NEWUSER TARGETGROUP

ইউনিক্স ও লিনাক্স.এস.- তে তার জাস্টিন ইথিয়ারের উত্তরের জন্য ধন্যবাদ : একটি গ্রুপের সমস্ত ব্যবহারকারীকে অন্য দলে যুক্ত করবেন?


@ গিলস কি আপনার প্রকল্পটি আমার প্রশ্নের আপডেট হিসাবে একাধিক ব্যবহারকারীর সাথে সাবভার্সন সার্ভার একাধিক সংগ্রহস্থলের জন্য কাজ করবে?
কর্নেলপ্যানিক

2

না, এটি সম্ভব নয়।

প্রতিটি ফাইল (এবং এছাড়াও ডিরেক্টরি) কেবলমাত্র একজন ব্যবহারকারী এবং একটি গ্রুপ থাকতে পারে।


6
একই বা অনুরূপ ফলাফল পেতে বিকল্প পন্থা সরবরাহ করা দুর্দান্ত হবে।
বাইট কমান্ডার

2

একাধিক গোষ্ঠী বা ব্যবহারকারীদের বিভিন্ন অধিকার প্রদানের জন্য নিম্নলিখিত কমান্ডগুলি ব্যবহার করুন (RHEL 6 এবং 7 তে পরীক্ষিত):

গোষ্ঠীর নতুন মালিক তৈরি করতে:

setfacl -m g:<group_name>:<rights you want to give eg.rwx> -R <directory_name>

বর্তমান এসিএল সেটিংস পরীক্ষা করতে:

getfacl <directory_name>

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