ฉันจะแสดงรายการการอนุญาตของทุก ๆ องค์ประกอบในพา ธ ไฟล์ได้อย่างไร?


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แสดงให้เห็นว่าที่สิทธิของผู้ใช้ที่ถูก จำกัด

วิธีที่ง่ายที่สุดในการแสดงสิทธิ์การเข้าถึงสำหรับทุกองค์ประกอบ (ไดเรกทอรีและไฟล์) ในเส้นทางคืออะไร? ฉันสนใจในการแก้ปัญหาระบบ Unix เป็นหลัก

คำตอบ:


17

สำหรับสิทธิ์ UNIX ขั้นพื้นฐาน (เจ้าของ / กลุ่ม / อื่น ๆ ) ใช้nameiซึ่งเป็นส่วนหนึ่งของutil-linux :

# namei -l / sys / kernel / debug / usb / อุปกรณ์
f: / sys / kernel / debug / usb / อุปกรณ์
drwxr-xr-x root root /
dr-xr-xr-x sys รูท sys
เคอร์เนลรูท drwxr-xr-x
drwx ------ ดีบักรูทราก
drwxr-xr-x root usb ยูเอสบี
-r - r - r-- อุปกรณ์รูทราก

1

ด้านล่างนี้เป็นสคริปต์ของ Bourne-like-shell มันสำรวจเส้นทางด้วยการลบส่วนประกอบสุดท้ายโดยใช้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แสดง+ในตอนท้ายคุณจะต้องแสดงรายการ ACL โดยใช้getfaclเพื่อดูสิทธิ์การเข้าถึงที่สมบูรณ์:

#!/bin/sh

f="$1"
p=
while test "$f" != "$p" ; do
    getfacl "$f"
    p="$f"
    f="$(dirname "$f")"
done
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.