'x' 실행 비트 세트 없이 디렉터리 내용 읽기

'x' 실행 비트 세트 없이 디렉터리 내용 읽기

디렉터리의 다른 모든 사람에 대한 "x" 실행 권한과 쓰기 권한을 제거했습니다. /u/permtst/테스트/비트/. 디렉터리 세부 정보는 사용자: permtst 및 그룹: permtst입니다.

permtst@localhost(nyc):~/test/bits> ls -la
total 8
drwxrw-r-- 2 permtst permtst 4096 Aug  3 12:51 .
drwxrwsr-x 8 permtst permtst 4096 Aug  3 11:52 ..
-rw-rw-r-- 1 permtst permtst    0 Aug  3 11:56 test_file
-rw-rw-r-- 1 permtst permtst    0 Aug  3 11:56 test_file2

사용자모타마리속하지 않는라이센스 테스트그룹.

~부터다른 사람읽기 권한이 있으면 디렉토리의 ls는 디렉토리에 있는 파일 목록을 제공해야 합니다. 그러나 다음과 같은 내용이 표시되면 No Access가 인쇄되고 파일 목록도 예상대로 인쇄됩니다.

내 질문은 오류가 인쇄되는 이유입니다.ls: cannot access '/u/permtst/test/bits/test_file': Permission denied

motamari@localhost:~% ls /u/permtst/test/bits/
ls: cannot access '/u/permtst/test/bits/test_file': Permission denied
ls: cannot access '/u/permtst/test/bits/test_file2': Permission denied
test_file  test_file2

답변1

r디렉토리 에 없으면 실제로 파일 이름을 나열할 수 있지만 파일을 호출할 수 없기 때문에(*) x파일에 대한 다른 정보를 얻을 수 없습니다 .stat()

-F또는 와 같은 짧은 목록의 경우에도 파일 형식을 결정해야 하는 옵션으로 시작하는 경우 --color오류 메시지와 동작은 정확히 GNU ls가 표시하는 것과 같습니다. ls옵션이 있는 항목에 별칭을 추가했을 수 있습니다 alias ls. \ls를 사용하거나 프로그램을 실행하면 별칭을 무시할 수 있습니다 /bin/ls. 를 사용 -l하면 매우 혼란스러워 보이는 일련의 물음표도 얻게 됩니다.

$ mkdir dir; touch dir/file.txt; chmod a-x dir;
$ ls dir
ls: cannot access 'dir/file.txt': Permission denied
file.txt
$ \ls dir
file.txt
$ ls -l dir
ls: cannot access 'dir/file.txt': Permission denied
total 0
-????????? ? ? ? ?            ? file.txt
$ alias ls
alias ls='ls -vF --color=auto'

하지만 동작은 구현에 따라 다릅니다 . 예를 들어 Busybox는 오류에 대해 덜그럭거리고 목록을 인쇄하지 않습니다(여기에서는 OR ls도 사용하지 않습니다 ).-F--color

$ busybox ls dir
ls: dir/file.txt: Permission denied

(*일부 시스템에서는 파일 형식도 제공하지만 여기서는 readdir()이것이 왜 충분하지 않은지 잘 모르겠습니다 ls.)

관련 정보