다음 권한을 가진 폴더(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
파일 내용을 읽을 수도 있습니다.cat
vim
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
디렉터리에 대한 (실행/검색) 권한은 이를 의미하지 않습니다. 이는 소유자만이 디렉토리 항목을 통해 파일에 액세스할 수 있음을 의미합니다. 파일 내용에 대한 액세스는 해당 파일에 의해 제어됩니다.내 자신의권한.