리눅스 디렉토리 내 파일 삭제 못하게 보호하기

리눅스는 여러 사용자가 함께 사용하는 특징이 있다. 때문에 /tmp 같은 공용 디렉토리를 많이 활용한다. 이런 공용 디렉토리에 올라오는 파일을 w 권한이 있다고해서 아무나 자유롭게 삭제할 수 있으면 곤란하다. 이런 경우 유용하게 활용할 수 있는 게 스티키 비트(sticky bit)다.

스티키 비트가 적용된 디렉토리에서는 파일을 소유한 사용자나 디렉토리의 소유자와 root 사용자만 파일을 삭제할 수 있다. 즉 root 계정을 가진 관리자, 파일을 생성한 소유자만 파일을 삭제할 수 있는 환경을 만들 수 있다.

구문

chmod +t [디렉토리명]

예시

testdir에 스티키 비트를 적용해 본다.

[root@localhost ~]# ll
total 0
drwxr-xr-x. 2 root root    6 Nov  4 08:47 testdir

777 권한을 주고 테스트 해본다.

[root@localhost ~]# chmod 777 testdir/
[root@localhost ~]# ll
total 0
drwxrwxrwx. 2 root root 6 Nov  4 08:47 testdir
[root@localhost ~]# chmod +t testdir/

디렉토리 권한 표시 정보 오른쪽 끝에 x 대신 t가 들어간 걸 볼 수 있다.

[root@localhost ~]# ll
total 0
drwxrwxrwt. 2 root root 6 Nov  4 08:47 testdir

user1 사용자로 user1_file을 생성했다.

[user1@localhost testdir]$ touch user1_file
[user1@localhost testdir]$ ll
total 0
-rw-rw-r--. 1 user1 user1 0 Nov  4 08:59 user1_file

참고로 디렉토리에 있는 파일을 삭제할 수 있는지 여부를 결정하는 건 해당 파일에 대한 권한이 아니라 파일이 있는 디렉토리의 권한을 따른다. 그러니까 예시에선 user1_file 파일에 대해 user1 이외의 사용자는 r 권한 밖에 없지만 testdir 디렉토리에 대해서는 rwx 권한을가지고 있기 때문에 원래는 삭제가 가능하다.

하지만 스티키 비트를 적용했기 때문에 삭제가 거부된다.

[user2@localhost testdir]$ ll
total 0
-rw-rw-r--. 1 user1 user1 0 Nov  4 08:59 user1_file
[user2@localhost testdir]$ rm user1_file
rm: remove write-protected regular empty file 'user1_file'? y
rm: cannot remove 'user1_file': Operation not permitted

댓글 남기기