मैं मैक ओएस एक्स पर एसीएल की नकल कैसे करूं?


13

अधिकांश यूनिक्स व्युत्पन्न ACLs को एक फ़ाइल से दूसरी फ़ाइल में कॉपी कर सकते हैं:

getfacl filename1 | setfacl -f - filename2

दुर्भाग्य से मैक ओएस एक्स में गेटफैक्ल और सेटफेकल कमांड नहीं हैं, क्योंकि उन्होंने एसीएल हैंडलिंग को चामोद में रोल किया है। chmod -E स्टड पर ACL की एक सूची को स्वीकार करता है, लेकिन मुझे ऐसा कमांड नहीं मिला है जो stdout पर उपयुक्त प्रारूप में ACL को थूक देगा। सबसे अच्छा मैं साथ आया हूँ:

ls -led filename1 | tail +2 | sed 's/^ *[0-9][0-9]*: *//' | chmod -E filename2

क्या अधिक मजबूत समाधान है?

बोनस सवाल: पायथन में ऐसा करने का एक अच्छा तरीका है, बिना किसी मॉड्यूल का उपयोग किए बिना 10.6 के साथ भेजना नहीं है?


तो यह अब वर्ष 2020 है, और macOS अभी भी नहीं getfacl/ है setfacl। काफी उल्लेखनीय। github.com/jvscode/getfacl 10 साल का है, मैं इसे काम करने में सक्षम नहीं हूं। serverfault.com/a/303752/104173 जटिल लग रहा है, और अगर यह get/setfaclकार्यक्षमता को बदलने का प्रयास करता है तो मैं स्पष्ट नहीं हूं । मुझे लगता है कि macOS एक सर्वर प्लेटफॉर्म नहीं है, लेकिन यह अभी भी सुरक्षा घुसपैठ का अनुभव कर सकता है। क्या Apple.stackexchange.com पर इस बातचीत को फिर से शुरू करने लायक है ?
जॉनी उटाह

जवाबों:


8

ls -e फ़ाइल से जुड़े एक्सेस कंट्रोल लिस्ट (ACL) को प्रिंट करें, अगर मौजूद है तो लंबे (-l) आउटपुट में।

यह इस तरह के रूप में एक परिणाम देता है ...

drwxr-xr-x@ 19 localadmin   646B Aug  4 00:21  APPBUNDLE
0: user:localadmin allow add_file,add_subdirectory,writeattr,writeextattr,writesecurity
                   ⬆    ⇧                      ⇶                                     ⬆

निजी तौर पर, मेरे पास "निर्यात" है ~/.bash_profile

export FILE_ALL="read,write,append,execute,delete,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown"
export DIR_ALL="list,search,add_file,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown"

ऐसा chmodसंभव है ...

sudo chmod + "a localadmin $ DIR_ALL" / APPBUNDLE की अनुमति दें

से chmodआदमी पेज, वहाँ जानकारी के इस बिट है ... कि संकेत है कि यह वास्तव में संभव है कि आप का वर्णन कुछ करने के लिए हो सकता है ..

"एसीएल को प्रतीकात्मक मोड व्याकरण के एक्सटेंशन का उपयोग करके हेरफेर किया जाता है। प्रत्येक फ़ाइल में एक एसीएल होता है, जिसमें प्रविष्टियों की एक सूची होती है। प्रत्येक प्रविष्टि एक उपयोगकर्ता या समूह को संदर्भित करती है, और अनुमतियों के एक सेट को अनुदान या इनकार करती है। ऐसे मामलों में जहां एक उपयोगकर्ता और। समूह एक ही नाम के साथ मौजूद है, उपयोगकर्ता / समूह का नाम "उपयोगकर्ता:" या "समूह:" के साथ उपसर्ग किया जा सकता है ताकि नाम के प्रकार को निर्दिष्ट किया जा सके। "

chmod -E नए सिरे से अलग ACE की क्रमिक सूची के रूप में, stdin से ACL जानकारी पढ़ता है। यदि सूचना सही ढंग से पार्स करती है, तो मौजूदा जानकारी को बदल दिया जाता है।

इसके अलावा, मैं करने के लिए बाहर एक चिल्लाओ दे देंगे BatchMod , एक oldie, लेकिन एक एसीएल के लिए गुडी, साथ ही TinkerToolSystem


इसने मेरे लिए काम किया, लेकिन मुझे chmod कमांड को बदलना पड़ा: sudo chmod +a "localadmin allow $DIR_ALL" /APPBUNDLE(उपयोगकर्ता नाम और allow) स्विचिंग
ई। मोफात


1

शायद https://github.com/jvscode/getfacl पर एक नज़र है ।


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