![rm이 다른 사용자 소유권으로 파일을 삭제할 수 있는 이유는 무엇입니까?](https://linux55.com/image/71983/rm%EC%9D%B4%20%EB%8B%A4%EB%A5%B8%20%EC%82%AC%EC%9A%A9%EC%9E%90%20%EC%86%8C%EC%9C%A0%EA%B6%8C%EC%9C%BC%EB%A1%9C%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%82%AD%EC%A0%9C%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%8A%94%20%EC%9D%B4%EC%9C%A0%EB%8A%94%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
게시물에서rm이 읽기 전용 파일을 삭제할 수 있는 이유는 무엇입니까?내가 아는 한, rm
파일을 삭제하려면 해당 디렉터리에 대한 쓰기 권한만 있으면 됩니다. 하지만 소유자와 그룹이 다른 파일을 쉽게 삭제할 수 있는 동작을 이해하기 어렵습니다.
나는 다음을 시도했다
mtk: 내 사용자 이름
abc: 새 사용자를 만들었습니다.
$ ls -l file
-rw-rw-r-- 1 mtk mtk 0 Aug 31 15:40 file
$ sudo chown abc file
$ sudo chgrp abc file
$ ls -l file
-rw-rw-r-- 1 abc abc 0 Aug 31 15:40 file
$ rm file
$ ls -l file
<deleted>
나는 이것이 허용되어서는 안 된다고 생각한다. 사용자는 자신이 소유한 파일만 삭제할 수 있어야 합니까? 누군가 이것이 허용되는 이유를 밝힐 수 있습니까? 이것을 피하는 방법은 무엇입니까? 상위 디렉터리에 대한 쓰기 권한만 제한하면 실수로 파일이 삭제되는 것을 방지할 수 있다고 가정할 수 있습니다.
답변1
이것이 허용되는 이유는 파일 삭제가 실제로 수행하는 작업과 관련이 있습니다. 개념적으로 rm
작업은 디렉터리에서 이름 항목을 제거하는 것입니다. 이것이 파일의 이름뿐이라면 파일에 접근할 수 없게 될 수 있으므로, 그 시점에서 파일이 차지한 아이노드와 공간을 복구할 수 있다는 사실은 거의 부수적이다. 이 사실은 이 명령에 의해 호출된 시스템 호출의 이름 에서도 암시됩니다 rm
(예: .unlink
그리고 디렉토리에서 이름 항목을 삭제하는 것은 기본적으로 작업입니다.이 디렉토리에, 따라서 이 디렉토리는 쓰기 권한이 필요한 디렉토리입니다.
다음 시나리오를 사용하면 마음이 더 편해질 수 있습니까? 디렉토리가 있다고 가정합니다.
/home/me # owned and writable only by me
/home/you # owned and writable only by you
내 소유의 파일이 있고 그 안에 두 개의 하드 링크가 있습니다.
/home/me/myfile
/home/you/myfile
/home/you/myfile
처음에 하드 링크가 어떻게 거기에 도달했는지는 신경 쓰지 마십시오 . 어쩌면 root
거기에 놓을 수도 있습니다.
이 예의 아이디어는 하드 링크를 삭제할 수 있어야 한다는 것입니다 /home/you/myfile
. 결국엔 엉망이야당신의목차.너내부에 존재하는 것과 존재하지 않는 것을 통제하는 것이 가능해야 합니다 /home/you
. 삭제를 수행할 때 /home/you/myfile
실제로 파일을 삭제하는 것이 아니라는 점에 유의하세요. 링크 하나만 삭제했습니다.
파일이 포함된 디렉터리에 고정 비트가 설정된 경우( 표시됨 t
)ls
하다파일을 삭제하려면 파일의 소유자여야 합니다(디렉토리를 소유하지 않은 경우). 고정 비트는 일반적으로 /tmp
.
답변2
파일 링크를 해제하려면 파일이 있는 디렉터리에 쓸 수 있어야 합니다.
이것이 마음에 들지 않으면 chmod +t dir
최신 운영 체제를 사용하는 경우 "고정" 비트(이 기능은 1986년경 SunOS에 도입됨)를 설정하여 수행할 수 있습니다.
보다 세분화된 기능을 원한다면 최신 ACL 구현(예: ZFS)을 갖춘 파일 시스템이 필요합니다. NTFS를 통한 표준 NFSv4 ACL에는 사용자별 파일별 삭제 권한과 디렉터리에 대한 "delete_child" 권한에 대한 지원이 포함됩니다.
답변3
논리는 집의 논리와 유사합니다. 주인이나 임차인은 손님이 누구인지에 관계없이 어떤 손님을 버릴지 결정합니다. 더욱이, (다른 사람의 디렉토리에 또 다른 하드 링크가 있는) 다른 집에서 환영받는 퇴거 손님은 밖에서 얼어 죽지 않을 것입니다.