라는 디렉터리를 만들고 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
.