पहला कमांड किसी भी पहले से मौजूद फाइल / निर्देशिका की अनुमतियों को बदल देगा। -d
दूसरा आदेश में डिफ़ॉल्ट किसी भी निर्देशिका, जो बारी में इन निर्देशिका के भीतर किसी भी फ़ाइलों के लिए एसीएल के डिफ़ॉल्ट सेट प्रदान करेगा के लिए आगे बढ़ने के लिए अनुमति की स्थापना के लिए महत्वपूर्ण है।
नोट: कि दोनों मामलों में आदेश -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).
इस अंश को यह भी अच्छी तरह से समझाता है:
दो प्रकार के एसीएल हैं: एसीएल और डिफ़ॉल्ट एसीएल का उपयोग करें। एक एक्सेस एसीएल एक विशिष्ट फ़ाइल या निर्देशिका के लिए एक्सेस कंट्रोल सूची है। एक डिफ़ॉल्ट एसीएल केवल एक निर्देशिका के साथ जुड़ा हो सकता है; यदि निर्देशिका के भीतर मौजूद फ़ाइल में ACL का उपयोग नहीं होता है, तो यह निर्देशिका के लिए डिफ़ॉल्ट ACL के नियमों का उपयोग करता है। डिफ़ॉल्ट ACL वैकल्पिक हैं।
स्रोत: 8.2 एक्सेस ACLs सेट करना ।
उदाहरण
कहो कि मेरे पास यह निर्देशिका संरचना है।
$ 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
यहां कमांड चलाने के बिना , नई निर्देशिका आपके ACL द्वारा कवर नहीं की जाएगी:
$ 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
), तो दूसरी कमांड अनुमतियाँ सेट करेगी? यदि यह मामला नहीं है, तो मुझे दूसरी कमांड को छोड़ना चाहिए?