$ 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
없어진 물건 있어요?
답변1
파일을 삭제한다는 것은 변경 중임을 의미합니다.목차파일 자체가 아닌 파일에 상주합니다. 파일을 삭제하려면 그룹에서 디렉터리를 읽어야 합니다. 파일의 권한은 파일 자체를 변경하는 데에만 사용됩니다.
파일 시스템이 어떻게 작동하는지 생각할 때까지는 처음에는 혼란스러울 수 있습니다. 파일은 단지 inode일 뿐이고, 디렉토리는 inode를 참조합니다. 삭제하면 디렉터리에 있는 파일의 inode에 대한 참조만 제거됩니다. 따라서 파일이 아닌 디렉토리를 변경하는 것입니다. 다른 디렉토리에 있는 파일에 대한 하드 링크를 가질 수 있으며 파일 자체를 실제로 변경하지 않고도 첫 번째 디렉토리에서 해당 파일을 삭제할 수 있으며 해당 파일은 다른 디렉토리에 계속 존재합니다.
답변2
시스템에서만 파일을 삭제할 수 있으며 파일이 참조되지 않은 경우에만 가능합니다. 일반 사용자만 가능풀리다즉, 디렉터리에서 파일을 제거합니다. 디렉터리에서 파일 링크를 해제하려면 디렉터리에 대한 쓰기 권한이 필요합니다. 파일 링크를 해제해도 파일은 수정되지 않으므로 파일에 대한 쓰기 권한은 중요하지 않습니다.
답변3
필요한 디렉토리에서 파일을 제거하는 것 같습니다사용자 쓰기권한. 허용되는 답변에 따르면 그룹 쓰기 및 모든 쓰기만으로는 충분하지 않습니다.
두 컴퓨터의 두 파일 시스템에서 이것을 테스트했습니다.
$ mkdir testdir
$ touch testdir/foo
$ chmod u-w testdir
$ chmod o+w testdir
$ ls -ld testdir
dr-xr-xrwx 2 tim all 17 Nov 25 23:08 testdir
$ rm testdir/foo
rm: cannot remove 'testdir/foo': Permission denied
$ chmod g+w testdir
$ rm testdir/foo
rm: cannot remove 'testdir/foo': Permission denied
$ chmod u+w testdir
$ rm testdir/foo