2011-06-07 9 views
10

के मैनुअल पेज को पढ़ने के बाद getfacl/setfacl के मैन पेज को पढ़ने के बाद मुझे एक स्पष्ट/मजबूत/सुरुचिपूर्ण विधि नहीं मिली, यह जांचने के लिए कि किसी दिए गए पथ (बीए) sh के लिए एसीएल सक्षम है या नहीं, मुझे एक स्पष्ट/मजबूत/सुरुचिपूर्ण विधि नहीं मिल सका। ।किसी दिए गए पथ

कोई सुझाव?

+0

'getfacl पथ; अगर [$? -एक 0]; फिर "कोई एसीएल" गूंजें; फाई काम नहीं करता है? –

+0

@Let_Me_Be: नहीं, यह एक कर्नेल के साथ भी एसीएल समर्थन के साथ सफल है। (यह फ़ाइल मोड बिट्स को एसीएल में अनुमान लगाता है) – Mat

+0

@Mat: बिल्कुल। 'getfacl' इंगित करता है कि एक एसीएल सेट है या नहीं। लेकिन अगर अंतर्निहित फाइल सिस्टम एसीएल सक्षम नहीं है। –

उत्तर

4
{ 
    # Determine what the mount point for the path is: 
    MOUNT_POINT=$(df -P $FILENAME | tail -n 1 | awk '{print $6}') 
    # Get the mount options for the path: 
    MOUNT_OPTS=$(awk '$2=="'$MOUNT_POINT'" { print $4 }' /proc/mounts) 
    # Check to see if acl is one of the mount points: 
    echo $MOUNT_OPTS | tr , \\\n | grep '^acl$' -q 
    if [ $? -eq 0 ]; then 
    echo "ACLs enabled" 
    else 
    echo "ACLs disabled" 
    fi 
} 
+0

दुर्भाग्यवश यह एक एनएफएस माउंट पॉइंट पर विफल रहता है। –

+0

कौन सा हिस्सा काम नहीं करता है? क्या यह निहितार्थ है कि एनएफएस एसीएल को 'एसीएल' माउंट विकल्प द्वारा इंगित नहीं किया गया है या क्या उनकी स्क्रिप्ट किसी भी तरह एनएफएस माउंट पर टूट जाती है? – synthesizerpatel

+0

@ एमआर। श्रीमान: एनएएफएके ने एनएफएस ने कभी भी एसीएल का समर्थन नहीं किया ... केवल सामान्य यूनिक्स अधिकार। शायद यह बदल गया लेकिन मुझे ऐसा नहीं लगता। – TMS