권한을 역순으로 재귀적으로 확인하는 방법은 무엇입니까?

권한을 역순으로 재귀적으로 확인하는 방법은 무엇입니까?

아파치와 함께 제공되거나 이와 관련되어 항상 권한을 확인하는 명령이 있습니다. 따라서 권한이 있는 경우 /home/foo/bar/baz, , 및 에 대한 권한이 무엇인지 알려줍니다 . 이 명령이 무엇인지 또는 이를 수행하는 다른 방법을 아는 사람이 있습니까? 명령은 기본적으로 매개변수로 시작하여 권한 문제가 있는지 확인할 수 있도록 권한이 무엇인지 알려줍니다.bazbarfoohome/

답변1

여러분이 생각할 수 있는 유틸리티는 namei명령입니다. 매뉴얼 페이지에 따르면:

Namei는 해당 인수를 모든 유형의 Unix 파일(기호 링크, 파일, 디렉터리 등)에 대한 경로 이름으로 사용합니다. 그런 다음 Namei는 끝점(파일, 디렉터리, 문자 장치 등)을 찾을 때까지 각 경로 이름을 따릅니다. 심볼릭 링크를 찾으면 링크를 표시하고 따라가기 시작하여 컨텍스트를 표시하기 위해 출력을 들여쓰기합니다.

원하는 출력은 다음을 통해 수신될 수 있습니다.

$ namei -l /usr/src/linux-headers-2.6.35-22/include/
f: /usr/src/linux-headers-2.6.35-22/include/
drwxr-xr-x root root /
drwxr-xr-x root root usr
drwxrwsr-x root src  src
drwxr-xr-x root root linux-headers-2.6.35-22
drwxr-xr-x root root include

명령 namei리눅스 유틸리티-ng소프트웨어 패키지. 보다 매뉴얼 페이지자세한 내용은.

답변2

어떤 명령도 모르지만 스크립트를 작성하는 것은 쉽습니다.

#!/bin/bash    
ARG=$1
while [[ "$ARG" != "." && "$ARG" != "/" ]]
do
        ls -ld -- "$ARG"
        ARG=`dirname -- "$ARG"`      
done

예:

$ perms.sh /tmp/1/2/3/hello.txt

-rw-rw-r--    1 user    group          0 Jan 14 16:59 /tmp/1/2/3/hello.txt
drwxrwxr-x    2 user    group       4096 Jan 14 16:59 /tmp/1/2/3
drwxrwxr-x    3 user    group       4096 Jan 14 16:43 /tmp/1/2
drwxrwxr-x    3 user    group       4096 Jan 14 16:43 /tmp/1
drwxrwxrwt   12 root     root       4096 Jan 14 17:02 /tmp

답변3

당신이 찾고있는 명령은 다음과 같습니다.

namei -l `pwd`

/tmp/foo/bar에서 실행하면 다음 목록이 제공됩니다.

drwxr-xr-x root   root   /
drwxrwxrwt root   root   tmp
drwxr-xr-x user   group  foo
drwxr-xr-x user   group  bar

답변4

이것은 쉽게 선이 될 수 있습니다. 이는 재귀적이지 않으며 bash에서 비교적 빠르게 수행할 수 있는 방법입니다. 부르다비밀번호모든 루프에서 특별히 빠르지는 않으므로 가능하면 피하세요.

#!/bin/bash
if [ -n "$1" ]; then
    echo "Usage: $0 [FILE]"
    exit 1
fi
cd -P -- "$1"
IFS="/"
set -f # turn off globbing for the expansion of $PWD below
for dir in $PWD; do
    stat -c "$PWD %A" .
    cd ..
done

또 다른 옵션은 현재 디렉터리에 대한 코드 줄입니다.

(IFS="/"; set -f; for dir in $PWD; do stat -c "$PWD %A" .; cd ..; done)

관련 정보