디렉토리에 대한 실행 권한이 없을 때 "ls"와 "ls -l"의 차이점은 무엇입니까?

디렉토리에 대한 실행 권한이 없을 때 "ls"와 "ls -l"의 차이점은 무엇입니까?

라는 디렉터리를 만들고 folder실행 권한을 제거했습니다.

$ mkdir folder
$ touch folder/innerFile
$ mkdir folder/innerFolder
$ chmod -x folder

이제 내가 그렇게 하면

$ ls folder

파일 목록을 출력하지만 내가 할 때

$ ls -l folder

알겠어요

ls: innerFile: Permission denied
ls: innerFolder: Permission denied

왜 그런 겁니까?

답변1

ls -l폴더에서 사용해 보세요.stat내용은 ls다음과 같습니다.

$ strace ls folder -l
...
lstat("folder/innerFolder", {st_mode=S_IFREG|0644, st_size=0, ...}) = 0
getxattr("folder/innerFolder", "system.posix_acl_access", 0x0, 0) = -1 ENODATA (No data available)
getxattr("folder/innerFolder", "system.posix_acl_default", 0x0, 0) = -1 ENODATA (No data available)
lstat("folder/innerFile", {st_mode=S_IFDIR|0755, st_size=40, ...}) = 0
getxattr("folder/innerFile", "system.posix_acl_access", 0x0, 0) = -1 ENODATA (No data available)
getxattr("folder/innerFile", "system.posix_acl_default", 0x0, 0) = -1 ENODATA (No data available)
...

그렇기 때문에 ls -l대신 "권한 거부"가 표시됩니다 ls.

관련 정보