디렉토리 권한이 r인 경우 ls가 -l 없이 1을 반환하는 이유는 무엇입니까?

디렉토리 권한이 r인 경우 ls가 -l 없이 1을 반환하는 이유는 무엇입니까?

내가 읽고이것그리고이것, 내 문제가 다르고 더 구체적이라는 것을 발견했습니다.

나의 이해는 다음과 같습니다.

  • 디렉토리의 +x는 이 특정 디렉토리를 통해 파일 inode에 대한 액세스 권한을 부여합니다.
  • 사용 중인 파일의 메타 정보가 ls -li-노드에 저장되어 있지만 파일 이름이 해당 파일에 속하지 않습니다.

위의 2가지 점에서, ls없이는 -l디렉터리에 있는 파일의 i 노드에 액세스할 필요가 없으므로 성공적으로 파일 이름을 나열하고 0을 반환해야 합니다.

그러나 내 컴퓨터에서 시도하면 파일 이름이 나열되지만 일부 경고가 표시되고 permission denied반환 코드는 1입니다.

b03705028@linux7 [~/test] chmod 500 permission/
b03705028@linux7 [~/test] ls --color=no permission/
f1*
b03705028@linux7 [~/test] chmod 400 permission/
b03705028@linux7 [~/test] ls --color=no permission/
ls: 無法存取 'permission/f1': 拒絕不符權限的操作
f1
b03705028@linux7 [~/test] echo $0
bash

한자는 기본적으로 다음과 같이 말합니다.permission denied

내 유닉스 배포판은Linux 4.17.11-arch1

답변1

ls귀하의 경우에는 비슷한 별칭인 것 같습니다 ls --color=auto. 이 경우 ls사용할 색상을 결정하기 위해 디렉터리에 포함된 파일에 대한 정보를 찾아보세요.

ls --color=no

디렉토리는 불평 없이 나열되어야 합니다.

여전히 문제가 발생한다면 파일 메타데이터(예: /viewfiletype) 에 액세스해야 하는 -F또는 등의 다른 옵션을 사용하고 있을 가능성이 높습니다 .--classify-F--classify

앨리어싱 없이 실행 중인지 확인하려면 ls다음 방법 중 하나를 사용하세요.

command ls

또는

\ls

별칭을 제거하려면 ls다음을 사용하세요.

unalias ls

관련 정보