একটি নির্দিষ্ট ডিরেক্টরিতে নতুন ফাইলগুলির জন্য ডিফল্ট গ্রুপ এবং অনুমতিগুলি নির্দিষ্ট করুন


15

আমার একটি নির্দিষ্ট ডিরেক্টরি রয়েছে যেখানে একাধিক ব্যবহারকারীর দ্বারা ভাগ করা একটি প্রকল্প রয়েছে। এই ব্যবহারকারীরা এই ডিরেক্টরিটিতে অ্যাক্সেস অর্জন করতে এবং ফাইলগুলি সংশোধন / তৈরি করতে SSH ব্যবহার করেন।

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

আমি এর সাথে অনুমতিগুলির সমস্যাটি সমাধান করতে পারি umask:

$ cd project
$ umask 002
$ touch test.txt

ফাইল "টেস্ট.টেক্সট" এখন গ্রুপ-লিখনযোগ্য, তবে এখনও এটি আমার ডিফল্ট গোষ্ঠীর অন্তর্ভুক্ত ("মিস্যালভ", আমার ব্যবহারকারীর নাম হিসাবে একই) এবং "মাইগ্রুপ" নয়। আমি chgrpপুনরাবৃত্তভাবে পছন্দসই গোষ্ঠীটি সেট করতে পারি, তবে আমি জানতে চেয়েছিলাম যে কোনও গ্রুপকে স্পষ্টভাবে সেট করার একটি উপায় রয়েছে যেমন উমাসক একটি সেশনের সময় ডিফল্ট অনুমতিগুলি পরিবর্তন করে।

এই সুনির্দিষ্ট ডিরেক্টরিটি একটি ওয়ার্কিং কপির সাথে একটি ভাগ করা গিট রেপো এবং আমি চাই git checkoutএবং git resetকার্য কপিতে তৈরি হওয়া নতুন ফাইলগুলির জন্য সঠিক মাস্ক এবং গোষ্ঠী সেট করতে অপারেশন করি । ওএস হ'ল উবুন্টু লিনাক্স।

আপডেট: একজন সহকর্মী পরামর্শ দিয়েছিল যে আমার পসিক্স এসিএল এর গেটফ্যাকল / সেটফ্যাকলটি সন্ধান করা উচিত umask 002তবে বর্তমান সেশনে নীচের সংযুক্ত সমাধানটি আমার পক্ষে যথেষ্ট ভাল এবং আরও সহজ much

উত্তর:


19

কোনও প্রদত্ত ডিরেক্টরিতে সমস্ত ফাইলের গোষ্ঠী অধিকারের অধিকার রয়েছে, আপনাকে আপনার ডিরেক্টরিতে সেটগ্রিড বিট ব্যবহার করতে হবে। এই লিঙ্কটি দেখুন ।

 $ mkdir test
 $ sudo chown raphink.staff test
 $ ls -lhd test
     drwxr-xr-x 2 raphink staff 4.0K 2009-12-21 16:19 test
 $ sudo chmod g+s test # Set the setgid bit
 $ ls -lhd test
     drwxr-sr-x 2 raphink staff 4.0K 2009-12-21 16:21 test
 $ touch test/foo
 $ ls -lh test
     total 0
     -rw-r--r-- 1 raphink staff 0 2009-12-21 16:23 foo

ধন্যবাদ। আকর্ষণীয় যে আমি এটি
গুগল

6

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

find /path/to/base/dir -type d -exec chmod g+s {} +

4

আমি উত্সটি আবার খুঁজে পাচ্ছি না, তবে ব্যবহার করছি setgid খালি গিট সংগ্রহস্থলগুলির জন্য এই সমস্যাটি সমাধান করতে , যা আমি ধরে নিই যে এটি আপনার ক্ষেত্রে, অবহেলিত, এবং কিছু ক্ষেত্রে সমস্যার কারণ হতে পারে।

গিটটি এই মাধ্যমে সমস্ত কিছু যত্ন নিতে পারে core.sharedRepository পতাকাটির । আমার একই সমস্যা ছিল এবং এটি নীচে সমাধান করা হয়েছে:

ধরে repogroupনেওয়া আপনার গ্রুপ, এবং আপনার আছেcd রেपो ডিরেক্টরিতে হবে:

প্রথমে ভাগ করা পতাকাটি এতে পরিবর্তন করুন group:

git config core.sharedRepository group 

দ্রষ্টব্য: এখানে আপনাকে অবশ্যই কীওয়ার্ডটি ব্যবহার করতে হবে group, গোষ্ঠীর নাম নয়। এটি বিকল্প সহ খালি সংগ্রহস্থল তৈরির সমতুল্য --shared=group

তারপরে পুরো সংগ্রহস্থলের জন্য গ্রুপটি পরিবর্তন করুন:

chgrp -R repogroup .

বিদ্যমান ডিরেক্টরিগুলি গ্রুপ-লিখনযোগ্য ( g+w), এবং বিদ্যমান এক্সিকিউটেবলগুলিও গ্রুপ-এক্সিকিউটেবল ( g+X) হয়ে উঠবে তা নিশ্চিত করার জন্য আপনার এগুলিও দরকার:

chmod -R g+wX .

একবার আপনি এটি করার পরে, গিটটি shared=groupপতাকাটিকে সম্মান জানাবে এবং বিদ্যমান এবং নতুন উভয় ফাইলের জন্য নিম্নলিখিতটিতে গ্রুপ অনুমতিগুলির যত্ন নেবে, সুতরাং আপনার আর কখনও umaskবা প্রয়োজন হবে না chgrp

উত্সটি যদি আবার খুঁজে পাই তবে আমি একটি মন্তব্যে রাখব।


3

আমি যখন * নিক্স দিকের দিকে চলে আসি তখন আমি খুব বেশি বিশেষজ্ঞ নই, তবে আমি মনে করি আপনি যা খুঁজছেন তাকে সেটজিড বলে।

এখানে দেখুন ।


1

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

আপনি কি পিতামাতাকে অনুমতি অনুমতি পেতে পারেন?

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