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


12
$ 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

없어진 물건 있어요?

답변:


22

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

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


나는 775 drwxrwxr-x디렉토리를 얻는다 .
tshepang

1
디렉토리의 그룹 소유권은 무엇입니까? 언급 한 두 번째 7은 사용자 그룹이 아니라 디렉토리 그룹이 갖는 권한입니다.
jsbillings

1
ls -ld /path/to/directory또는 단순히 ls -ld .해당 디렉토리로 cd 한 경우.
jsbillings

1
어떤 이유로 든 stat는 그룹 ID 1002를 조회 할 수 없습니다. stat는 / etc / group, NIS, LDAP 등에서 그룹 ID를 조회하고 오류가 발생하여 알 수없는 이유가 있습니다. getent group 1002좀 더 장황한 오류가 있는지 확인하기 위해 실행하려고 합니다.
jsbillings

1
실제로, 나는이 행동이 전혀 혼란스럽지 않다. 실제 "실제"디렉토리의 작동 방식과 동일하므로 "폴더"와 같이 다르게 동작하는 "디렉토리" 라고 하는 이유 입니다. 전화 번호부에서 누군가를 삭제하고 싶은 경우, 그녀의 집에 가서 그녀를 죽이지 않고, 나는 단순히 펜을 가지고 그녀의 번호를칩니다. IOW : 디렉토리에 대한 쓰기 권한이 필요하며 디렉토리에 대한 액세스 권한이 없습니다. Windows에는 폴더가 있고 Unix에는 디렉토리가 있으며 둘 다 실제 파일처럼 동작합니다. 혼란은 당신이 그들을 혼합하는 경우에만 발생합니다.
Jörg W Mittag

0

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.