[unix] 그룹 회원으로 쓰기 권한이있는 파일을 삭제할 수 없습니다

$ touch testfile
$ chmod g+w testfile
$ sudo adduser user2 user1
$ stat -c'%a %A' testfile
664 -rw-rw-r--
$ su user2
Password:
$ groups
user2 user1
$ rm testfile
rm: cannot remove `testfile': Permission denied

없어진 물건 있어요?



답변

파일을 삭제한다는 것은 파일 자체가 아니라 파일 이있는 디렉토리 를 변경한다는 의미 입니다. 파일을 제거하려면 그룹의 디렉토리에서 rw가 필요합니다. 파일에 대한 권한은 파일 자체를 변경하기위한 것입니다.

파일 시스템의 작동 방식을 생각할 때까지 처음에는 혼란 스러울 수 있습니다. 파일은 단지 inode이며 디렉토리는 inode를 나타냅니다. 제거하면 디렉토리에서 해당 파일의 inode에 대한 참조 만 제거됩니다. 따라서 파일이 아닌 디렉토리를 변경하고 있습니다. 다른 디렉토리에있는 해당 파일에 대한 하드 링크를 가질 수 있으며 실제로 파일 자체를 변경하지 않고 첫 번째 디렉토리에서 해당 파일을 제거 할 수 있으며 다른 디렉토리에도 여전히 존재합니다.


답변

시스템에서만 파일을 삭제할 수 있으며 참조가없는 경우에만 파일을 삭제할 수 있습니다. 단순한 사용자 만 파일을 링크 해제 할 수 있습니다 . 즉, 디렉토리에서 파일을 제거 할 수 있습니다. 디렉토리에서 파일을 링크 해제하려면 디렉토리에 대한 쓰기 액세스 권한이 필요합니다. 파일을 연결 해제해도 파일이 수정되지 않으므로 파일에 대한 쓰기 액세스 권한은 관련이 없습니다.


답변