![파일 경로에 있는 모든 구성 요소의 권한을 어떻게 나열할 수 있나요?](https://rvso.com/image/1388804/%ED%8C%8C%EC%9D%BC%20%EA%B2%BD%EB%A1%9C%EC%97%90%20%EC%9E%88%EB%8A%94%20%EB%AA%A8%EB%93%A0%20%EA%B5%AC%EC%84%B1%20%EC%9A%94%EC%86%8C%EC%9D%98%20%EA%B6%8C%ED%95%9C%EC%9D%84%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EB%82%98%EC%97%B4%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F.png)
때로는 경로 액세스 권한이 제한되는 디렉토리를 결정해야 할 때도 있습니다. 예는 다음과 같습니다.
$ 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 계열 시스템을 위한 솔루션에 관심이 있습니다.
답변1
기본 UNIX 권한(소유자/그룹/기타)의 namei
경우유틸리티 리눅스:
# 이름i -l /sys/kernel/debug/usb/devices f: /sys/kernel/debug/usb/devices drwxr-xr-x 루트 루트 / dr-xr-xr-x 루트 루트 sys drwxr-xr-x 루트 루트 커널 drwx------ 루트 루트 디버그 drwxr-xr-x 루트 루트 USB -r--r--r-- 루트 루트 장치
답변2
다음은 Bourne과 유사한 쉘 스크립트입니다. 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