루트가 아니어도 내 홈 디렉터리에서 루트가 소유한 파일을 삭제할 수 있었던 이유는 무엇입니까?

루트가 아니어도 내 홈 디렉터리에서 루트가 소유한 파일을 삭제할 수 있었던 이유는 무엇입니까?

그래서 오늘 오전에 서버 유지 관리를 하다가 홈 디렉토리에서 루트가 소유한 파일을 삭제할 수 있다는 것을 알게 되었습니다.

샘플을 재현할 수 있었습니다.

[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x.  2 cbennett cbennett 4096 Oct  5 20:59 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct  5 20:58 ..
-rw-rw-r--.  1 cbennett cbennett    0 Oct  5 20:58 my-own-file
[cbennett@nova ~/temp]$ sudo touch file-owned-by-root
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x.  2 cbennett cbennett 4096 Oct  5 21:00 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct  5 20:58 ..
-rw-r--r--.  1 root     root        0 Oct  5 21:00 file-owned-by-root
-rw-rw-r--.  1 cbennett cbennett    0 Oct  5 20:58 my-own-file
[cbennett@nova ~/temp]$ rm file-owned-by-root
rm: remove write-protected regular empty file ‘file-owned-by-root’? y
[cbennett@nova ~/temp]$ ls -al
total 8
drwxrwxr-x.  2 cbennett cbennett 4096 Oct  5 21:00 .
drwxr-xr-x. 22 cbennett cbennett 4096 Oct  5 20:58 ..
-rw-rw-r--.  1 cbennett cbennett    0 Oct  5 20:58 my-own-file
[cbennett@nova ~/temp]$

-rw-r--r--제 질문은 루트가 아닌데 루트가 소유하고 권한이 있는 파일을 어떻게 삭제할 수 있었느냐는 것입니다 .

답변1

권한, 콘텐츠 및 모든 속성은 inode의 일부입니다. 이름은 디렉토리 항목에 있습니다. 권한은 반복적으로 상속되지 않습니다(Posix ACL에서 기본값을 사용하는 경우 제외).

파일을 삭제할 때 내부적으로는 디렉토리 항목에서 inode로의 하드 링크만 제거하면 됩니다. 모든 하드링크가 제거되고 inode가 사용되지 않으면 파일 시스템이 공간을 회수합니다. 파일에 어떤 권한이 설정되어 있는지에 관계없이 폴더에 대한 쓰기 권한만 필요합니다(변경할 수 없는 확장 권한 제외). 빈 폴더에도 마찬가지입니다.

비어 있지 않은 폴더를 삭제하는 경우 삭제하려는 폴더와 해당 상위 폴더에 대한 쓰기 권한이 필요합니다.

답변2

당신이 디렉토리를 소유하면 디렉토리의 권한에 따라 디렉토리와 그 안의 내용에 대해 무엇이든 할 수 있습니다. 따라서 파일을 소유하지 않았음에도 불구하고 파일이 있는 디렉터리에 대한 읽기/쓰기 권한이 있었기 때문에 파일을 삭제할 수 있었습니다.

관련 정보