권한 비트가 있는 디렉토리가 있습니다 r
.
dr-------- 3 robert robert 4096 2017-12-17 03:47 dir
이 디렉터리에는 두 개의 파일과 디렉터리가 있습니다.
file 1.txt file 2.txt subdir
ls dir
계정에서 명령을 실행하면 robert
디렉터리 내용 옆에 오류 메시지가 표시됩니다.
ls: cannot access dir/file 1.txt: Permission denied
ls: cannot access dir/file 2.txt: Permission denied
ls: cannot access dir/subdir: Permission denied
file 1.txt file 2.txt subdir
ls
디렉토리 내용은 정상적으로 표시되는데 오류가 표시되는 이유는 무엇입니까 ?
답변1
ls
디렉토리 자체에서 readdir()
(또는 )를 호출하는 것은 디렉토리를 "읽는" 것과 같습니다. 일부 유닉스에서는 마치 디렉토리가 파일인 것처럼 getdents()
에 대한 실제 호출로 이것을 구현한다고 생각합니다 . read()
이는 디렉토리에 대한 읽기 액세스 권한이 있기 때문에 작동하지만 파일 이름만 제공합니다.
그 외에도 ls
파일 유형을 찾고자 하는 경우가 많습니다(다른 유형을 다른 색상으로 표시하거나 뒤에 슬래시 및 별표를 추가하는 등 ls -F
). 그러나 찾기 유형에는 일반적으로 stat()
파일 자체 에 대한 호출이 필요하며 +x
실제로 파일을 여는 데 필요한 것과 동일한 방식으로 디렉터리에 대한 access() 권한이 필요합니다. 그리고 당신은 그것을 가지고 있지 않습니다.