লিনাক্সে গ্রুপ অনুমতি অনুমোদনের জন্য নতুন ফাইলগুলি প্রাপ্ত করা


87

লিনাক্স সার্ভারে অনুমতি নিয়ে আমার সমস্যা হচ্ছে। আমি বিএসডিতে অভ্যস্ত। ডিরেক্টরি যখন কোনও গোষ্ঠীর মালিকানাধীন থাকে তবে ব্যবহারকারী যার মালিকানাধীন যেমন www-ডেটা নয়, এতে তৈরি ফাইলগুলি সেই গোষ্ঠীর মালিকানাধীন থাকবে। এটি গুরুত্বপূর্ণ কারণ আমি চাইছি যে ফাইলগুলি ওয়েব সার্ভারের দ্বারা পঠনযোগ্য হবে (যা আমি রুট হিসাবে চালাব না) তবে কোনও ব্যবহারকারী এখনও নতুন ফাইল ডিরেক্টরিতে রেখে দিতে পারেন। আমি ব্যবহারকারীদের www-ডেটাতে রাখতে পারি না কারণ তারা তখন প্রতিটি অন্যান্য ব্যবহারকারী ওয়েবসাইট পড়তে পারে।

আমি চাই ওয়েবসভারটি সমস্ত ওয়েবসাইট পড়ুক, আমি চাই ব্যবহারকারীরা তাদের নিজস্ব পরিবর্তন করতে সক্ষম হন।

অনুমতিগুলি এই মুহুর্তে ফোল্ডারগুলিতে সেট করা আছে ...

drwxr-x--- 3 john www-data 4096 Feb 17 21:27 john

এভাবে কাজ করার অনুমতি দেওয়ার জন্য বিএসডি-র স্ট্যান্ডার্ড আচরণ। এটি করার জন্য আমি কীভাবে লিনাক্স পাব?


2
আপনি এসিএল ব্যবহার করতে পারেন?
slm

উত্তর:


128

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

উদাহরণ

$ whoami
saml

$ groups
saml wheel wireshark

পার্স + মালিকানা সহ একটি ডিরেক্টরি সেটআপ করুন

$ sudo mkdir --mode=u+rwx,g+rs,g-w,o-rwx somedir
$ sudo chown saml.apache somedir
$ ll -d somedir/
drwxr-s---. 2 saml apache 4096 Feb 17 20:10 somedir/

এই dir মধ্যে একটি ফাইল হিসাবে saml হিসাবে স্পর্শ করুন

$ whoami
saml

$ touch somedir/afile
$ ll somedir/afile 
-rw-rw-r--. 1 saml apache 0 Feb 17 20:11 somedir/afile

এটি আপনাকে যা চায় তা প্রায় দেবে give আপনি যদি যা বর্ণনা করেছেন ঠিক তেমনটি চান তবে আমি মনে করি যে এটি (এসিএল) পেতে আপনার অ্যাক্সেস কন্ট্রোল তালিকার কার্যকারিতা অবলম্বন করতে হবে।

ACLs

আপনি যদি ডিরেক্টরিতে তৈরি হওয়া ফাইলগুলির অনুমতিগুলির উপর আরও কিছুটা নিয়ন্ত্রণ পেতে চান তবে আপনি somedirডিফল্ট অনুমতিগুলি সেট করতে নীচের এসিএল বিধিটি যুক্ত করতে পারেন।

আগে

$ ll -d somedir
drwxr-s---. 2 saml apache 4096 Feb 17 20:46 somedir

অনুমতি সেট করুন

$ sudo setfacl -Rdm g:apache:rx somedir
$ ll -d somedir/
drwxr-s---+ 2 saml apache 4096 Feb 17 20:46 somedir/

+শেষে লক্ষ্য করুন , এর অর্থ এই ডিরেক্টরিতে এটিতে এসিএল প্রয়োগ করা হয়েছে।

$ getfacl somedir
# file: somedir
# owner: saml
# group: apache
# flags: -s-
user::rwx
group::r-x
other::---
default:user::rwx
default:group::r-x
default:group:apache:r-x
default:mask::r-x
default:other::---

পরে

$ touch somedir/afile
$ ll somedir/afile 
-rw-r-----+ 1 saml apache 0 Feb 17 21:27 somedir/afile
$ 

$ getfacl somedir/afile
# file: somedir/afile
# owner: saml
# group: apache
user::rw-
group::r-x              #effective:r--
group:apache:r-x        #effective:r--
mask::r--
other::---

ডিফল্ট অনুমতি ( setfacl -Rdm) সেট সহ নোট করুন যাতে অনুমতিগুলি ( r-x) ডিফল্ট ( g:apache:rx) দ্বারা হয়। এটি যে কোনও নতুন ফাইলগুলিকে কেবল তাদের rবিট সক্ষম করতে বাধ্য করে।


ধন্যবাদ মনে হচ্ছে যে আমি যে কার্যকারিতা চেয়েছিলাম তা সরবরাহ করে।
জন টেট

এটি আমার অনুরূপ সমস্যাও সমাধান করবে বলে মনে হচ্ছে। যাইহোক, আমি শেষ বাক্যটি পুরোপুরি বুঝতে পারি না: "এটি কোনও নতুন ফাইলকে কেবল তাদের আর বিট সক্ষম করতে বাধ্য করে।" এক্স অনুমতি সক্ষম করা হয় না কেন? এটি ডিফল্টরূপে সক্ষম করার কোনও উপায় আছে ??
yaobin

1
@ আইয়াবিন আমি মনে করি এটি একটি সুরক্ষা বিষয়, আপনি সত্যই কোনও ফাইল ডিফল্টরূপে কার্যকর করতে চান না
সিডার্কেন

এই কাজ করে না unzip?
datasn.io

@ datasn.io - এর ম্যান পেজটি দেখুন unzip। বিশেষত -Xস্যুইচ।
slm

37

টি এল: ডিআর; করতে নতুন ফাইল ধারক ফোল্ডার গ্রুপ উত্তরাধিকারী করুন:

$ chmod g+s somefolder

দ্রষ্টব্য: এটি স্বীকৃত উত্তরে অন্তর্ভুক্ত, এটি কেবল একটি স্নিপেট।


3
সেটগিডের অর্থ হল যে নতুন ফাইল এবং ফোল্ডারগুলির সঠিক গ্রুপ থাকবে তবে মনে রাখবেন যে আপনি যদি ফাইলগুলিকে গাছের মধ্যে নিয়ে যান তবে তাদের সঠিক মালিক কনফিগার করা থাকবে না। এসিএল পদ্ধতির সাথে এটি কপি করে (সাধারণভাবে)।
ক্রিস মরগান

@ ক্রিসমোরগান এটি কীভাবে মোকাবেলা করতে পারে? গ্রহণযোগ্য উত্তর থেকে সমাধানগুলি আমার ক্ষেত্রে সরানো ফাইলগুলির জন্য কিছুই করতে পারেনি।
ড্যান এম

@ ড্যানএম .: ফাইল মোড সহ, আপনি অনুমতিগুলি সেট করেছেন যা উত্তরাধিকারসূত্রে প্রাপ্ত নয়; কিন্তু ACLs সঙ্গে, আপনি যে অনুমতিগুলি সেট করা হয় উত্তরাধিকারসূত্রে, রানটাইম এ পরীক্ষা করা হচ্ছে (যদিও শিশুরা তাদের নিজস্ব যে ওভাররাইড যে ACLs নির্দিষ্ট করতে পারেন)।
ক্রিস মরগান

@ ক্রিসমোরগান হ্যাঁ তুমি এটা কিভাবে করলে? ACL ফর্ম গৃহীত উত্তর ব্যবহার করে সমাধান কাজ করে না।
ড্যান এম

10

স্ল্যামের উত্তরের পরিপূরক হিসাবে, নোট করুন, একটি ext2 / 3/4 ফাইল সিস্টেমে bsdgroupsপার্টিশনের মাউন্ট অপশনটি ব্যবহার করে আপনি যে BSD আচরণটি বর্ণনা করেছেন তা প্রতিলিপি করতে পারেন । থেকে mount(1)মানুষ পৃষ্ঠা:

grpid|bsdgroups and nogrpid|sysvgroups
              These options define what group id a newly  created  file  gets.
              When  grpid  is  set,  it takes the group id of the directory in
              which it is created; otherwise (the default) it takes the  fsgid
              of  the current process, unless the directory has the setgid bit
              set, in which case it takes the gid from the  parent  directory,
              and also gets the setgid bit set if it is a directory itself.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.