फ्रीबीएसडी ने डब्ल्यू मास्क क्यों खो दिया लेकिन डेबियन ने इसे बरकरार रखा?


10

मैं FreeBSD ACL और Linux ACL के बीच व्यवहार के अंतर को समझने की कोशिश कर रहा हूं। विशेष रूप से, डिफ़ॉल्ट एसीएल के लिए विरासत तंत्र।

मैंने डेबियन 9.6 और फ्रीबीएसडी 12 दोनों पर निम्नलिखित प्रयोग किया:

$ cat test_acl.sh
#!/bin/sh

set -xe

mkdir storage
setfacl -d -m u::rwx,g::rwx,o::-,m::rwx storage

touch outside
cd storage
touch inside
cd ..

ls -ld outside storage storage/inside

getfacl -d storage
getfacl storage
getfacl outside
getfacl storage/inside

umask

मुझे डेबियन 9.6 से निम्न आउटपुट मिलता है:

$ ./test_acl.sh
+ mkdir storage
+ setfacl -d -m u::rwx,g::rwx,o::-,m::rwx storage
+ touch outside
+ cd storage
+ touch inside
+ cd ..
+ ls -ld outside storage storage/inside
-rw-r--r--  1 aaa aaa    0 Dec 28 11:16 outside
drwxr-xr-x+ 2 aaa aaa 4096 Dec 28 11:16 storage
-rw-rw----+ 1 aaa aaa    0 Dec 28 11:16 storage/inside

+ getfacl -d storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::rwx
mask::rwx
other::---

+ getfacl storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::rwx
default:mask::rwx
default:other::---

+ getfacl outside
# file: outside
# owner: aaa
# group: aaa
user::rw-
group::r--
other::r--

+ getfacl storage/inside
# file: storage/inside
# owner: aaa
# group: aaa
user::rw-
group::rwx          #effective:rw-
mask::rw-
other::---

+ umask
0022

ध्यान दें कि outsideऔर insideफ़ाइलों की अलग-अलग अनुमतियां हैं। विशेष रूप से, outsideफ़ाइल में है -rw-r--r--, जो इस उपयोगकर्ता के लिए डिफ़ॉल्ट है और insideफ़ाइल ने -rw-rw----डिफ़ॉल्ट ACLs का सम्मान करते हुए मुझे storageनिर्देशिका सौंपी है ।

FreeBSD 12 पर एक ही स्क्रिप्ट का आउटपुट:

$ ./test_acl.sh
+ mkdir storage
+ setfacl -d -m u::rwx,g::rwx,o::-,m::rwx storage
+ touch outside
+ cd storage
+ touch inside
+ cd ..
+ ls -ld outside storage storage/inside
-rw-r--r--  1 aaa  aaa    0 Dec 28 03:16 outside
drwxr-xr-x  2 aaa  aaa  512 Dec 28 03:16 storage
-rw-r-----+ 1 aaa  aaa    0 Dec 28 03:16 storage/inside

+ getfacl -d storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::rwx
mask::rwx
other::---

+ getfacl storage
# file: storage
# owner: aaa
# group: aaa
user::rwx
group::r-x
other::r-x

+ getfacl outside
# file: outside
# owner: aaa
# group: aaa
user::rw-
group::r--
other::r--

+ getfacl storage/inside
# file: storage/inside
# owner: aaa
# group: aaa
user::rw-
group::rwx      # effective: r--
mask::r--
other::---

+ umask
0022

(ध्यान दें कि डेबियन की getfaclडिफॉल्ट ACLs तब भी दिखाई देंगी, जब -dFreeBSD का उपयोग नहीं होता है, लेकिन मैं नहीं सोचता कि वास्तविक ACL storageअलग हैं।)

यहां, outsideऔर insideफ़ाइलों की भी अलग-अलग अनुमतियां हैं, लेकिन insideफ़ाइल में समूह लिखने की अनुमति नहीं है जो कि डेबियन संस्करण करता है, शायद इसलिए कि डेबियन में मास्क ने बरकरार रखा wजबकि फ्रीबीएसडी में मुखौटा खो गया w

फ्रीबीएसडी ने wमुखौटा क्यों खो दिया लेकिन डेबियन ने इसे बरकरार रखा?


1
getfacl storageदोनों प्रणालियों पर क्या दिखाता है?
मिकेल

यदि आप चिपचिपा समूह बिट ( g+s) का उपयोग नहीं करते हैं तो क्या यह पहचान से काम करता है ?
sebasth 17

@Mikel मैंने getfaclजानकारी दिखाने के लिए मूल प्रश्न सामग्री अपडेट की है ।
रॉक्सी

@sebasth मैंने सेटगिड बिट को हटाने के लिए मूल प्रश्न अपडेट किया है। यह अप्रासंगिक है।
रॉक्सी

एसीएल को स्थापित करने के बाद storage, ls दिखाना चाहिए+ , इसी तरह मैं getfaclआउटपुट की अपेक्षा करता हूं कि आप डेबियन सिस्टम पर समान हो। क्या setfaclसफलता से बाहर निकलें कोड?
sebasth

जवाबों:


1

संक्षेप में मैं कहूँगा (मान लें) वे अलग से umask का उपयोग कर रहे हैं।

0022 वास्तव में समूह-अन्य परेशान डब्ल्यू है। आप लेखन निषेध को हटाने और परिणाम की जांच करने के लिए umask बदल सकते हैं।

सोलारिस उर्फ ​​सनोस मैनुअल (और टिप्पणियों के साथ) का हवाला देते हुए क्योंकि यह बहुत संबंधित प्रतीत होता है: "... ओम्स्क (1) को लागू नहीं किया जाएगा यदि निर्देशिका में डिफ़ॉल्ट एसीएल प्रविष्टियां हैं ..."।


1
क्या एक सही है और दूसरा गलत है? वहाँ एक मानक है कि यह पालन करना चाहिए है?
रॉक्सी

मैं इस पर एक विशेषज्ञ नहीं हूं (विडंबनापूर्ण रूप से) FreeBSD के WEB आदमी के पास "कैनोनिकल" (यकीनन) कार्यान्वयन (SunOS) के लिए प्रविष्टि है जो स्पष्ट रूप से कहता है कि umask को गिना नहीं जाना चाहिए: freebsd.org/cgi-man.cgi?query= setfacl और मैनपाट = सनोस + ५.१०
२०

"... umask (1) यदि निर्देशिका डिफ़ॉल्ट एसीएल प्रविष्टियों शामिल लागू किया नहीं किया जाएगा ...।"
poige

FreeBSD के अपने मैन पेज का उल्लेख नहीं किया गया है umask, इसलिए यह एक कम परिभाषित व्यवहार प्रतीत होता है। क्या FreeBSD के ACL कार्यान्वयन को SunOS के समान कार्य करना चाहिए?
रॉक्सी

जाहिर है कि यह (उल्लेख) कारण नहीं है अन्यथा इसे स्पष्ट रूप से बताई और की गई चीजों के बीच विरोधाभास देखा जाएगा।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.