나는 그 안에 디렉토리 d
와 파일을 만들었 f
습니다. 그런 다음 해당 디렉토리에 대한 읽기 권한 만 부여했습니다. 나는 이것이 파일을 나열 할 수 있다는 것을 이해해야 하지만 (예 : here ) 할 수는 없습니다.
will@wrmpb /p/t/permissions> ls -al
total 0
drwxr-xr-x 3 will wheel 102 4 Oct 08:30 .
drwxrwxrwt 16 root wheel 544 4 Oct 08:30 ..
dr-------- 3 will wheel 102 4 Oct 08:42 d
will@wrmpb /p/t/permissions> ls d
will@wrmpb /p/t/permissions>
쓰기 및 실행 권한을 변경하면 파일을 볼 수 있습니다.
will@wrmpb /p/t/permissions> chmod 500 d
will@wrmpb /p/t/permissions> ls d
f
will@wrmpb /p/t/permissions>
왜 이런거야? MacOS를 사용하고 있습니다.
편집 : @ccorn의 답변과 관련하여 물고기를 type ls
사용하고 다음을 제공하는 것이 관련이 있습니다 .
will@wrmpb /p/t/permissions> type ls
ls is a function with definition
function ls --description 'List contents of directory'
command ls -G $argv
end
답변
몇 가지 준비 사항만으로도 ls
더 많은 것을 시도하지 않아야합니다.
$ unalias ls 2>/dev/null
$ unset -f ls
$ unset CLICOLOR
r
디렉토리 권한 시연 :
$ ls -ld d
dr-------- 3 ccorn ccorn 102 4 Okt 14:35 d
$ ls d
f
$ ls -l d
ls: f: Permission denied
$ ls -F d
ls: f: Permission denied
전통적인 유닉스 파일 시스템에서 디렉토리는 단순히 (이름, 아이 노드 번호) 쌍의 목록이었습니다. inode 번호는 파일 메타 데이터의 나머지 부분이 저장되는 파일 시스템의 inode 테이블에 대한 색인으로 사용되는 정수입니다.
r
디렉토리에 권한이 있습니다 목록 등 파일 형식, 파일 길이, 파일 사용 권한을 얻고, 또는 파일을 여는 인 아이 노드 테이블에 저장된 정보를 그 안에 이름이 있지만 액세스 할 수 있습니다. 이를 위해서는 x
디렉토리에 대한 권한 이 필요합니다 .
이유입니다 ls -l
, ls -F
, ls
색상 코드 출력 등으로하지 않고 실패 x
의 허가 단순한는 반면, ls
성공합니다.
x
권한 만, 그 디렉토리 내에서 명시 적으로 이름이 지정됩니다 아이 노드 액세스를 허용 x
의 아이 노드 및 디렉토리 항목의 메타 데이터에 대한 액세스를 조회 할 수 있습니다 :
$ chmod 100 d
$ ls -l d/f
-rw-r--r-- 1 ccorn ccorn 0 4 Okt 14:35 d/f
$ ls d
ls: d: Permission denied
따라서, 파일을 열 수 /a/b/c/f
또는 메타 데이터, 디렉토리 목록 /
, /a
, /a/b
, 및 /a/b/c
부여해야합니다 x
권한.
당연히 디렉토리 항목을 작성하려면 w
및 x
권한 이 모두 필요합니다 .
$ chmod 100 d
$ touch d/g
touch: d/g: Permission denied
$ chmod 200 d
$ touch d/g
touch: d/g: Permission denied
$ chmod 300 d
$ touch d/g
$
Wikipedia는 파일 시스템 사용 권한 에 대한 기사를 간략하게 소개 합니다 .
답변
디렉토리를 읽으려면 디렉토리를 탐색 할 수 있어야합니다 (x 비트). 따라서 최소한 어떤 방식 으로든 디렉토리에 액세스하려면 rx가 필요합니다.