사용자가 상위 디렉터리에 액세스할 수 없는 경우 파일에 액세스할 수 있습니까?

사용자가 상위 디렉터리에 액세스할 수 없는 경우 파일에 액세스할 수 있습니까?

다음 권한을 가진 폴더(0700)가 있는 경우:

drwx------  2 patrick patrick   4096 Sep 12 00:00 test

제가 올바르게 이해했다면 이는 폴더 소유자만 다음을 수행할 수 있음을 의미합니다.

  • 읽기: 파일 목록
  • 쓰기: 파일 생성, 삭제 및 이름 바꾸기(단, 실행이 설정된 경우에만 작동함)
  • 실행: 파일 콘텐츠 및 메타정보에 액세스

이제 권한(0777)이 있는 폴더에 파일을 추가하면 다음과 같습니다.

-rwxrwxrwx  1 patrick patrick    0 Sep 12 00:00 testfile

파일 자체는 모든 사용자가 읽고, 쓰고, 실행할 수 있지만, 다른 사용자는 해당 파일에 접근할 수 없습니다. 내 말이 맞습니까, 아니면 Unix 권한 시스템에 대한 일부 세부 사항이 누락되었습니까?

내가 맞다면 (모든 것을 깔끔하게 유지하는 것 외에) 해당 폴더의 올바른 파일 권한에 대해 계속 걱정할 이유가 있습니까? 다른 사용자가 여전히 파일에 액세스할 수 있는 상황이 있습니까(예: 상대 경로를 통해?)?

답변1

이는 r디렉터리나 파일 자체를 읽을 수 있음을 의미합니다. 디렉토리의 표현은 x디렉토리를 순회할 수 있습니다.

질문에 권한이 설정되는 방식에 따라 Patrick 이외의 사용자 및 그룹은 디렉토리에 들어가거나 해당 내용을 나열할 수 없습니다. 디렉토리의 내용에 대해 직접 실행할 수 있지만 정보를 제공하지 않고 ls반환됩니다 .permission denied

x디렉터리 권한만 부여 하면 cd디렉터리에 들어갈 수 있습니다. ls디렉터리 내에서 실행되는 경우 권한이 부여되지만 permission denied, 해당 파일의 이름을 알고 있거나 추측할 수 있는 경우 해당 파일에서 직접 실행하여 해당 파일이 있는지 확인할 수 있습니다. 파일에 대한 읽기 권한이 있는 경우 또는 기타 텍스트 편집기를 사용하여 ls파일 내용을 읽을 수도 있습니다.catvim

r다른 권한을 부여하지 않고 디렉터리에 권한을 부여하면 사용자는 cd디렉터리에 들어갈 수 없지만 ls디렉터리에서 실행하고 해당 콘텐츠를 볼 수는 있지만 ls파일 자체를 실행하거나 사용하거나 cat해당 vim콘텐츠를 볼 수는 없습니다.

답변2

파일은 다른 곳(Linux의 경우 다른 곳에 마운트된 번들)으로 하드 링크될 수 있으며, 이는 포함된 원래 디렉터리의 권한을 우회합니다.

# mkdir dir; echo yup > dir/in
# ln dir/in out
# touch out-b; mount --bind dir/in out-b
# chmod 700 dir
# su user

user$ cat out out-b
yup
yup
user$ cat dir/in
cat: dir/in: Permission denied
user$ ls dir/in
ls: cannot access 'dir/in': Permission denied
user$ ls dir
ls: cannot open directory 'dir': Permission denied

이러한 하드 링크 또는 바인드 마운트는 실수로(다른 것의 일부 등으로) 발생할 수 있으므로안 돼요불필요한 권한을 부여하는 것이 좋습니다.

drwx------ 2 patrick patrick 4096 Sep 12 00:00 test

제가 올바르게 이해했다면 이는 폴더 소유자만 다음을 수행할 수 있음을 의미합니다.

실행: 파일 콘텐츠 및 메타정보에 액세스

아니요, x디렉터리에 대한 (실행/검색) 권한은 이를 의미하지 않습니다. 이는 소유자만이 디렉토리 항목을 통해 파일에 액세스할 수 있음을 의미합니다. 파일 내용에 대한 액세스는 해당 파일에 의해 제어됩니다.내 자신의권한.

관련 정보