
/tmp/testfile
아래에는 다음이 소유한 파일이 표시됩니다.사용자1그룹이 다음으로 변경됨바퀴그것도 포함사용자 2. 파일에 rw
그룹에 대한 권한이 있습니다. 그러면 그룹의 어떤 구성원도 이를 삭제할 수 없어야 합니까? 아래 예제 출력은 다음을 보여줍니다.사용자 2파일을 삭제할 수 없습니다. 왜?
[user2@files ~]$ ls -l /tmp/testfile
-rw-rw-r-- 1 user1 wheel 0 Jul 18 18:54 /tmp/testfile
[user2@files ~]$ groups
user2 wheel
[user2@files ~]$ rm /tmp/testfile
rm: cannot remove `/tmp/testfile': Operation not permitted
답변1
첫째, 잘못된 권한을 보고 계십니다. 파일을 이동/이름 바꾸기/삭제하면 파일만 수정됩니다.상위 디렉토리– 파일 자체의 권한은 확인되지 않습니다. 디렉토리의 파일 목록에서만 항목을 제거할 수 있습니다. 따라서 상위 디렉터리(이 경우 /tmp
)의 권한을 확인해야 합니다.
$ ls -ld /tmp
drwxrwxrwt 15 root root 460 Jul 19 15:18 /tmp/
둘째, /tmp
특별하다. 거의 모든 시스템에서 누구나 쓸 수 있으므로( ugo=rwx
) 언뜻 보면 누구나 파일 이름을 바꾸거나 파일을 삭제할 수 있는 것처럼 보입니다. 물론 이렇게 하면 다른 사용자에게 문제를 일으키는 것이 더 쉬워집니다. 따라서 /tmp
항상 "고정", 즉 "제한된 삭제" 모드가 설정되어 있습니다( o+t
). 이 모드를 설정하면 권한에 관계없이 파일 소유자만 해당 디렉터리의 파일을 이동하거나 삭제할 수 있습니다.
(GNU coreutils의 chmod(1)
매뉴얼 페이지 에는"제한된 삭제 플래그 또는 고정 비트".)