ডিরেক্টরিতে সমস্ত নতুন ফাইলকে একটি গোষ্ঠীতে অ্যাক্সেসযোগ্য করে তুলুন


131

ধরুন আমার দুটি ব্যবহারকারী অ্যালিস এবং বব এবং একটি গ্রুপ GROUPNAME এবং একটি ফোল্ডার রয়েছে foo, উভয় ব্যবহারকারীই GROUPNAME এর সদস্য (লিনাক্স এবং এক্সট্রোল ব্যবহার করে)।

আমি ইউজার এলিস যেমন একটি ফাইল অধীনে সংরক্ষণ করেন foo, অনুমতি আছেন: -rw-r--r-- Alice Alice। যাইহোক, এটি কি অর্জন করা সম্ভব যে কোনও ফাইলের কিছু উপ-ডিরেক্টরিতে সংরক্ষিত প্রতিটি ফাইলের fooঅনুমতি রয়েছে -rwxrwx--- Alice GROUPNAME(যেমন মালিক অ্যালিস, গ্রুপ GROUPNAME)?


উত্তর:


91

আপনার সাথে নির্ধারিত অনুমতি বিট নিয়ন্ত্রণ করতে পারেন umask, এবং ডিরেক্টরির করে গ্রুপ setgid করার GROUPNAME

$ umask 002            # allow group write; everyone must do this
$ chgrp GROUPNAME .    # set directory group to GROUPNAME
$ chmod g+s .          # files created in directory will be in group GROUPNAME

নোট করুন যে আপনাকে প্রতিটি উপ-ডিরেক্টরিতে chgrp/ করতে হবে chmod; এটি স্বয়ংক্রিয়ভাবে সঞ্চারিত করে না (যেমন, একটি অধীনে তন্ন তন্ন বিদ্যমান কিংবা পরবর্তীকালে নির্মিত ডিরেক্টরি setgid ডিরেক্টরির করা হবে setgid , যদিও আধুনিক গ্রুপ থাকবে GROUPNAME)।

এছাড়াও নোট করুন যে umaskএটি একটি প্রক্রিয়া বৈশিষ্ট্য এবং সেই প্রক্রিয়া এবং এর শিশুদের দ্বারা তৈরি সমস্ত ফাইলের ক্ষেত্রে প্রযোজ্য (যা umaskতাদের পিতামাতার সময়ে fork()সময়ে কার্যকর হয় )। ব্যবহারকারীদের এটিকে সেট করার দরকার ~/.profileহতে পারে এবং আপনার ডিরেক্টরিতে কোনও সম্পর্ক নেই এমন জিনিসগুলির জন্য নজর রাখতে হবে যার জন্য বিভিন্ন অনুমতি প্রয়োজন। মডিউলগুলি দরকারী হতে পারে যদি বিভিন্ন জিনিস করার সময় আপনার বিভিন্ন সেটিংসের প্রয়োজন হয়।

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


6
প্যারেন্ট ডিরেক্টরিতে সেটগ্রিড সেট করার পরে তৈরি সাব-ডিরেক্টরিগুলি স্বয়ংক্রিয়ভাবে সেটগিড সেট হবে।
অ্যারোমাস্টার 21

2
@ অ্যারোমাস্টার: কিছু সিস্টেমে, সম্ভবত, তবে সমস্ত নয়; আমি ওএসএক্সে পরীক্ষা করেছি এবং এটি প্রচার করে না, অন্তত রুট নয় for
গাইকোসর 21

2
ওয়েল ডেবিয়ান (এবং আমি ধরে নিয়েছি অন্যান্য লিনাক্সের ডিস্ট্রোগুলি) সেটগিড এবং গ্রুপের নাম উভয়ই প্রচার করে।
অ্যারোমাস্টার

3
ওএস এক্স-তে, কোনও ডিরেক্টরিতে সেটগিড বিটটি কেবল উপেক্ষা করা হয়; নতুন ফাইল এবং ডিরেক্টরিগুলি সর্বদা তাদের ধারণকৃত ডিরেক্টরিগুলির গোষ্ঠী দেওয়া হয়।
জন ফ্ল্যাটনেস

ফাইলগুলি অনুলিপি করা বা foo এ স্থানান্তরিত করা (সিপি রেফারেন্স। এমভি ব্যবহার করে) স্বয়ংক্রিয়ভাবে পছন্দসই অনুমতি প্রাপ্ত হওয়াও কি সম্ভব ( -rwxrwx--- A G)?
শিক্ষার্থী

106

যদি সম্ভব হয় তবে অ্যাক্সেস নিয়ন্ত্রণ তালিকা (এসিএল) ব্যবহার করুন

লিনাক্সের অধীনে, নিশ্চিত হয়ে নিন যে আপনি যে ফাইল সিস্টেমটি ব্যবহার করছেন তা এসিএল সমর্থন করে (বেশিরভাগ ইউনিক্স ফাইল সিস্টেমগুলি করে)। আপনার এসিএল সক্ষম করতে মাউন্ট অপশনগুলি পরিবর্তন করতে হবে: ext2 / ext3 / ext4 এর সাথে আপনাকে অবশ্যই aclমাউন্ট অপশনটি স্পষ্টভাবে উল্লেখ করতে হবে , যাতে প্রবেশের /etc/fstabচেহারাটি দেখতে হবে /dev/sda1 / ext4 errors=remount-ro,acl 0 1mount -o remount,acl /রিবুট না করে এসিএল সক্রিয় করতে চালান । এছাড়াও ACL কমান্ড লাইন সরঞ্জামগুলি ইনস্টল করুন getfaclএবং setfaclসাধারণত প্যাকেজ হিসাবে ডাকা হয় acl

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

setfacl -d -m group:GROUPNAME:rwx /path/to/directory
setfacl -m group:GROUPNAME:rwx /path/to/directory

ACLs একটি বিকল্প না হন, তাহলে গোষ্ঠীর মালিকানাধীন ডিরেক্টরির করা GROUPNAME, এবং 2775 বা 2770 তার অনুমতি সেট: chmod g+rwxs /path/to/directorysএখানে setgid বিট অর্থ ডিরেক্টরিতে এটির অর্থ হ'ল এই ডিরেক্টরিতে তৈরি হওয়া ফাইলগুলি সেই গোষ্ঠীর অন্তর্ভুক্ত যা ডিরেক্টরি মালিকানাধীন।

ডিফল্টরূপে তাদের সমস্ত ফাইলকে গ্রুপ-লিখনযোগ্য করার জন্য আপনাকে অ্যালিস এবং বব এর উমাস্ক সেট করতে হবে। বেশিরভাগ সিস্টেমে ডিফল্ট উমাস্ক 022 হয়, যার অর্থ ফাইলগুলি গ্রুপ এবং অন্যের লিখন ব্যতীত সমস্ত অনুমতি থাকতে পারে। এটিকে 002 এ পরিবর্তন করুন, যার অর্থ কেবলমাত্র অন্য লেখার অনুমতি লেখার জন্য নিষেধ। আপনি সাধারণত সেটিংটি আপনার মধ্যে রাখবেন ~/.profile:

umask 002    # or 007 to have files not readable by others

6
+1 - খুব ভাল উত্তর। আমি কখনই জানতাম না যে কেউ ফ্লাইটটি অন-ফ্লাই করতে পারে। জানা ভাল.
Boehj

1
থাই সেটফ্যাকেল-ডি কমান্ডটি আমার পক্ষে কাজ করে না কারণ সেই ডিরেক্টরিতে থাকা ফাইলগুলিতে একটি r-- মাস্ক রয়েছে যা কোনও লেখার অনুমতিকে উপেক্ষা করে। কিছু সাহায্য চাই। Unix.stackexchange.com/questions/71743/…
বেন ম্যাকক্যান

2
@its_me Q1: আমি বিকল্পটি mountসহ একটি কমান্ড দেখাব remount, সুতরাং এটি ব্যবহার করে না fstabaclদু'বার থাকার অর্থ ফাইল সিস্টেমটি aclইতিমধ্যে বিকল্পের সাথে মাউন্ট করা ছিল এবং এটি নির্দোষ। সাম্প্রতিক কার্নেলের মধ্যে ext4 এর জন্য acl ডিফল্ট , উপায় দ্বারা (প্যাচটি এখনও এই নতুন উত্তর ছিল যখন আমি এই উত্তরটি লিখেছিলাম)। প্রশ্ন 2: আপনি আদেশগুলি কোনও ক্রমে চালাতে পারেন।
গিলস

1
@its_me হ্যাঁ, আপনার বোঝাপড়াটি সঠিক, আপনি এন্ট্রিগুলিকে কোন ক্রমে যুক্ত করেন তা বিবেচ্য নয়
গিলস

8
আপনার আরও উত্তরটি আরও ভাল করে স্পষ্ট করার GROUPNAMEপরিবর্তে ব্যবহারের পরিবর্তে Gকরা উচিত

24

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

আমি সত্যিই ভাল aclটিউটোরিয়ালটি জানি না তবে আপনি http://www.vanemery.com/Linux/ACL/linux-acl.html এর চেয়ে আরও খারাপ কাজ করতে পারেন

নোট করুন যে ডিফল্ট aclস্থানীয় উমাস্কের মতো আচরণ করে। কমপক্ষে লিনাক্সে, উমাস্কগুলি বিশ্বব্যাপী প্রয়োগ করা হয়, তবে স্থানীয় উমাস্কের প্রভাব পেতে এটিই আমি জানি। কোনও কারণে এটি সামান্য পরিচিত বৈশিষ্ট্য। স্থানীয় উমাস্ক ওভাররাইড সম্পর্কে জিজ্ঞাসা করে লোকেরা নেটটি ফাঁকা থাকে, তবে প্রায় কেউই ব্যবহার করার কথা ভাবেন বলে মনে হয় না acl

আরও মনে রাখবেন যে aclসমর্থন সহ আপনি যে পার্টিশনটি ব্যবহার করছেন সেটি মাউন্ট করা দরকার , যেমন।

/dev/mapper/debian-acl /mnt/acl        ext3    defaults,acl        0       2

অধিবেশন নিম্নলিখিত:

/mnt/acl$ mkdir foo
/mnt/acl$ getfacl foo
# file: foo
# owner: faheem
# group: faheem
user::rwx
group::r-x
other::r-x

গোষ্ঠীর সেট fooহতে staff, এবং গ্রুপ এবং ব্যবহারকারীর ACL সেট fooকরতে rwx

/mnt/acl$ chgrp staff foo
/mnt/acl$ setfacl -R -m u::rwx,g::rwx foo
/mnt/acl$ getfacl foo
# file: foo
# owner: faheem
# group: staff
user::rwx
group::rwx
other::r-x

rwxপাশাপাশি ব্যবহারকারী এবং গোষ্ঠীর ডিফল্ট অ্যাকসেল সেট করুন । এটি ফাইল এবং ডিরেক্টরিগুলি উত্তরাধিকার সূত্রে প্রাপ্ত অনুমতিগুলি নির্ধারণ করে foo। সুতরাং foo এর অধীনে তৈরি সমস্ত ফাইল এবং ডিরেক্টরিগুলির গ্রুপের অনুমতি থাকবে rw

/mnt/acl$ setfacl -d --set u::rwx,g::rwx,o::- foo
/mnt/acl$ getfacl foo
# file: foo
# owner: faheem
# group: staff
user::rwx
group::rwx
other::r-x
default:user::rwx
default:group::rwx
default:other::---

এখন fooব্যবহারকারী faheemএবং হিসাবে কিছু ফাইল তৈরি করুন john

/mnt/acl$ cd foo
/mnt/acl/foo$ touch bar

# switch to user john for this next command.

/mnt/acl/foo$ touch baz

তালিকা ফাইল। লক্ষ্য করুন যে মালিকানাধীন ফাইল faheemএবং মালিকানাধীন ফাইল উভয়ই johnগ্রুপ অনুমতি নিয়ে তৈরি করা হয়েছে rw

/mnt/acl/foo$ ls -la
total 3
drwxrwxr-x+ 2 faheem staff  1024 May  9 01:22 .
drwxr-xr-x  4 faheem faheem 1024 May  9 01:20 ..
-rw-rw----  1 faheem faheem    0 May  9 01:20 bar
-rw-rw----  1 john   john      0 May  9 01:22 baz
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.