সেটফ্যাকল: এই দুটি কমান্ড কি একই রকম?


10

আমার কাছে একটি ডিপ্লোয়মেন্ট স্ক্রিপ্ট রয়েছে (ক্যাপিফোনির উপর ভিত্তি করে) যা একটি সিমফনি 2 ইনস্টলেশন জন্য নির্দিষ্ট সার্ভারে তে অনুমতি নির্ধারণ করে। এটিতে বেশ কয়েকটি ডিরেক্টরি ব্যবহারের জন্য নিম্নলিখিত দুটি কমান্ড রয়েছে:

setfacl -R -m u:www-data:rwx -m u:`whoami`:rwX app/cache
setfacl -dR -m u:www-data:rwx -m u:`whoami`:rwX app/cache

অনুমতি দুটি ঠিক করার উপায় হিসাবে এই দুটি কমান্ড সিমফনি 2 সাইটে রয়েছে, তবে এগুলি আমার মতোই আকর্ষণীয় দেখায়। সুতরাং আমি ম্যানেজগুলির জন্য আমার নজর ছিলাম setfaclএবং যা আমি বুঝতে পারি তার থেকে দ্বিতীয় কমান্ডটি একটি অতিরিক্ত বিকল্প দিয়ে প্রথমটি ঠিক কী করে (যা আমি বেশ বুঝতে পারি না) তা করে। আমার প্রশ্নটি, আমার ধারণাটি কি সঠিক? যদি তাই হয়, আমি প্রথম কমান্ডটি সরিয়ে দিলে কি এটির একই প্রভাব থাকবে?

উত্তর:


15

প্রথম কমান্ডটি পূর্ব-বিদ্যমান ফাইল / ডিরেক্টরিগুলির অনুমতি পরিবর্তন করবে। -dদ্বিতীয় কমান্ড এ ডিফল্ট কোনো ডিরেক্টরি, যেটা ঘুরে ফিরে এই ডিরেক্টরির মধ্যে কোন ফাইলের জন্য ACLs একটি ডিফল্ট সেট প্রদান করবে এগিয়ে যাচ্ছে অনুমতি স্থাপন গুরুত্বপূর্ণ।

দ্রষ্টব্য: উভয় ক্ষেত্রে কমান্ডগুলি পুনরাবৃত্তভাবে -Rস্যুইচটির মাধ্যমে চলবে ।

সংক্রান্ত -dসুইচ থেকে setfaclমানুষ পৃষ্ঠা:

   -d, --default
       All operations apply to the Default ACL. Regular ACL entries in the 
       input set are promoted to Default ACL entries. Default ACL  entries
       in the input set are discarded. (A warning is issued if that happens).

এই অংশটি এটিকে মোটামুটি ভালভাবে ব্যাখ্যা করেছে:

দুটি ধরণের এসিএল রয়েছে: এসিএল এবং ডিফল্ট এসিএলগুলি অ্যাক্সেস করুন। একটি অ্যাক্সেস এসিএল হ'ল নির্দিষ্ট ফাইল বা ডিরেক্টরিগুলির অ্যাক্সেস নিয়ন্ত্রণ তালিকা। একটি ডিফল্ট এসিএল কেবল একটি ডিরেক্টরিতে যুক্ত হতে পারে; ডিরেক্টরিতে থাকা কোনও ফাইলের যদি অ্যাক্সেস এসিএল না থাকে, তবে এটি ডিরেক্টরিতে ডিফল্ট এসিএল এর নিয়ম ব্যবহার করে। ডিফল্ট এসিএলগুলি .চ্ছিক।

সূত্র: 8.2। অ্যাক্সেস এসিএল সেট করা হচ্ছে

উদাহরণ

বলুন আমার এই ডিরেক্টরি কাঠামো আছে।

$ tree
.
|-- dir1
|   |-- dirA
|   |   `-- file1
|   `-- fileA
`-- file1

2 directories, 3 files

এখন setfaclআপনার প্রশ্নের প্রথম কমান্ড ব্যবহার করে অনুমতিগুলি সেট করা যাক :

$ setfacl -R -m u:saml:rwx -m u:samtest:rwX .

যার ফলাফল নিম্নলিখিত:

$ getfacl dir1/ file1
# file: dir1
# owner: saml
# group: saml
user::rwx
user:saml:rwx
user:samtest:rwx
group::rwx
mask::rwx
other::r-x

# file: file1
# owner: saml
# group: saml
user::rw-
user:saml:rwx
user:samtest:rwx
group::rw-
mask::rwx
other::r--

-dRকমান্ডটি এখানে চালানো ছাড়া নতুন ডিরেক্টরিগুলি আপনার এসিএল দ্বারা আচ্ছাদিত হবে না:

$ mkdir dir2

$ getfacl dir2
# file: dir2
# owner: saml
# group: saml
user::rwx
group::rwx
other::r-x

তবে আমরা যদি এই ডিরেক্টরিটি সরিয়ে setfacl -dR ...ফেলি এবং কমান্ডটি চালিত করি এবং উপরে এই ক্রিয়াকলাপটি পুনরাবৃত্তি করুন:

$ rmdir dir2
$ setfacl -dR -m u:saml:rwx -m u:samtest:rwX .

অনুমতিগুলি এখন অন্যরকম দেখাচ্ছে:

$ getfacl dir1/ file1 
# file: dir1/
# owner: saml
# group: saml
user::rwx
user:saml:rwx
user:samtest:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:saml:rwx
default:user:samtest:rwx
default:group::rwx
default:mask::rwx
default:other::r-x

# file: file1
# owner: saml
# group: saml
user::rw-
user:saml:rwx
user:samtest:rwx
group::rw-
mask::rwx
other::r--

এবং এখন আমাদের নতুন তৈরি ডিরেক্টরিটি এই "ডিফল্ট" অনুমতিগুলি গ্রহণ করবে:

$ mkdir dir2

$ getfacl dir2
# file: dir2
# owner: saml
# group: saml
user::rwx
user:saml:rwx
user:samtest:rwx
group::rwx
mask::rwx
other::r-x
default:user::rwx
default:user:saml:rwx
default:user:samtest:rwx
default:group::rwx
default:mask::rwx
default:other::r-x

এই অনুমতিগুলি স্থানে dir2রাখলে এখন ফাইলগুলির মধ্যেও এই অনুমতিগুলি কার্যকর করা হবে dir2:

$ touch dir2/fileA
$ getfacl dir2/fileA 
# file: dir2/fileA
# owner: saml
# group: saml
user::rw-
user:saml:rwx           #effective:rw-
user:samtest:rwx        #effective:rw-
group::rwx          #effective:rw-
mask::rw-
other::r--

আহ, তাই কেবল নিশ্চিত করার জন্য, আপনি বোঝাতে চাইছেন আমাদের যদি app/cacheএকটি ডিরেক্টরি আছে যার মধ্যে একটি ডিরেক্টরি বলা আছে dev, প্রথম কমান্ডটি প্রয়োগ করা হবে, তবে দ্বিতীয়টি নয়? এবং যদি পরে অন্য ডিরেক্টরি যুক্ত করা হয় (যেমন prod), দ্বিতীয় কমান্ড অনুমতিগুলি সেট করবে? যদি এটি না হয় তবে আমার দ্বিতীয় কমান্ডটি এড়িয়ে যেতে পারা উচিত?
হোশ সাদিক

1
@ হোশসাদিক - কোনটিই -Rপুনরাবৃত্ত আদেশ নয়, সুতরাং অনুমতিগুলি প্রয়োগ হয়। -dরক্ষীদের কেউ একটি ডিরেক্টরি তৈরি বা গাছ মধ্যে কিছু ডিরেক্টরি সরানো পরে তাই এটি খুব এই ক্ষেত্রে ACL আবেদন করেছেন যে ছিল পারেন।
slm

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