쓰기 권한 없이 디렉터리에 파일을 추가할 수 있는 이유는 무엇입니까?

쓰기 권한 없이 디렉터리에 파일을 추가할 수 있는 이유는 무엇입니까?

나는 첫 번째 예를 이해합니다.

> mkdir foo
> chmod u-w foo
> touch foo/test
touch: cannot touch `foo/test': Permission denied
> echo "BAD" >> foo/test
bash: foo/test: Permission denied

이는 의미가 있습니다. 해당 디렉토리에 대한 쓰기 권한이 없으므로 변경 사항을 쓸 수 없어야 합니다. 첨부할 수 있는 파일을 만지거나 생성할 수 없습니다. 그런데 왜 이것이 작동합니까?

> mkdir bar
> touch bar/test
> chmod u-w bar
> echo "BAD" >> bar/test 
> cat bar/test 
BAD

답변1

이 디렉터리에 대한 쓰기 권한이 없습니다. 이는 이 디렉터리를 수정할 수 없음을 의미합니다. 디렉터리에서 파일을 생성하거나 삭제하면(파일 생성 또는 삭제, 디렉터리 안팎으로 파일 이동 포함) 디렉터리가 수정됩니다. 디렉터리 내의 파일을 수정하는 경우(파일을 추가하거나 덮어써서) 디렉터리 자체는 수정되지 않습니다.

파일을 소유하고 있는 한 디렉터리 및 파일 권한에 관계없이 파일의 메타데이터(날짜, 권한 등)를 수정할 수 있습니다. 읽기가 파일에 대한 유일한 권한인 경우에도 파일을 읽으면 간접적으로 파일 액세스 시간을 수정할 수도 있습니다. 파일 메타데이터에 대한 액세스는 권한으로 제어되지 않습니다.

디렉토리 내의 파일 수정과 관련된 디렉토리에 대한 유일한 권한은 실행 권한입니다. 파일에 액세스할 수 있는지 여부를 제어합니다. (디렉터리에 대한 읽기 권한은 디렉터리의 파일을 나열할 수 있는지 여부를 제어합니다. 읽기는 되지만 실행할 수는 없습니다. 파일 이름은 볼 수 있지만 파일에 액세스할 수 없습니다. 실행은 되지만 읽을 수는 없습니다. 디렉터리의 파일에 액세스할 수 있지만 이름을 아는 경우에만 디렉터리의 파일에 액세스할 수 있습니다.) 파일에 액세스할 수 있는 한 디렉터리의 권한은 중요하지 않습니다.

전체 디렉토리 트리를 읽기 전용으로 만들고 싶다면 디렉토리의 권한을 변경하는 것만으로는 불가능하며 각 파일의 권한을 변경해야 합니다. 또는,읽기 전용 보기 만들기.

관련 정보