मैं फ़ाइल पथ में हर घटक की अनुमतियों को कैसे सूचीबद्ध कर सकता हूं?


10

कभी-कभी यह निर्धारित करना आवश्यक होता है कि पथ एक्सेस अधिकारों में कौन सी निर्देशिका सीमित है। यहाँ एक उदाहरण है:

$ ls /sys/kernel/debug/usb/devices
ls: cannot access /sys/kernel/debug/usb/devices: Permission denied
$ cat /sys/kernel/debug/usb/devices
cat: /sys/kernel/debug/usb/devices: Permission denied

न तो lsहै और न ही catपता चलता है, जहां उपयोगकर्ता अधिकार सीमित थे।

पथ में हर घटक (निर्देशिका और फ़ाइल) के लिए पहुँच अधिकार दिखाने का सबसे सरल तरीका क्या है? मुझे मुख्य रूप से यूनिक्स जैसी प्रणालियों के समाधान में दिलचस्पी है।

जवाबों:


17

मूल UNIX अनुमतियों (स्वामी / समूह / अन्य) के लिए, उपयोग -लिनेक्सnamei का हिस्सा है जो उपयोग करें :

# namei -l / sys / कर्नेल / डिबग / यूएसबी / डिवाइस
f: / sys / कर्नेल / डिबग / usb / डिवाइस
drwxr-xr-x रूट रूट /
dr-xr-xr-x रूट रूट सीस
drwxr-xr-x रूट रूट कर्नेल
drwx ------ मूल रूट डिबग
drwxr-xr-x रूट रूट यूएसबी
-r - r - r-- रूट रूट डिवाइस

1

नीचे एक साधारण बॉर्न-जैसी-शेल स्क्रिप्ट है। यह dirnameकमांड का उपयोग करके अंतिम घटकों के क्रमिक हटाने के द्वारा पथ का पता लगाता है जब तक कि मार्ग बदलना बंद न हो जाए। आप /या तो .अंत में मिलता है।

#!/bin/sh

f="$1"
p=
while test "$f" != "$p" ; do
    ls -ld "$f"
    p="$f"
    f="$(dirname "$f")"
done

sudoसीमित पहुंच अधिकारों वाले घटकों को देखने में सक्षम होने के लिए एक एकल पंक्ति में :

f=/sys/kernel/debug/usb/devices p= ; while test "$f" != "$p" ; do sudo ls -ld "$f" ; p="$f" ; f="$(dirname "$f")" ; done

उदाहरण आउटपुट

-r--r--r-- 1 root root 0 Dec  5 10:36 /sys/kernel/debug/usb/devices
drwxr-xr-x 3 root root 0 Dec  5 10:36 /sys/kernel/debug/usb
drwx------ 19 root root 0 Dec  5 10:36 /sys/kernel/debug
drwxr-xr-x 7 root root 0 Dec  5 10:37 /sys/kernel
drwxr-xr-x 13 root root 0 Dec  5 10:37 /sys
drwxr-xr-x 27 root root 4096 Dec  3 09:39 /

POSIX ACL

यदि अंतिम छोर पर ls -lशो से अनुमति स्ट्रिंग +आपको getfaclपूर्ण एक्सेस अधिकारों को देखने के लिए ACL को सूचीबद्ध करना है:

#!/bin/sh

f="$1"
p=
while test "$f" != "$p" ; do
    getfacl "$f"
    p="$f"
    f="$(dirname "$f")"
done
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.