지난 시간에 r, w, x 권한을 알아봤는데 이 외에 3가지 특별한 권한에 대해 공부해 봅시다
특별한 권한 3가지
(1) setuid : setuid가 설정되어 있다면, 파일을 실행했을 때 이 파일의 소유자 권한으로 실행됩니다.
대표적으로 passwd 명령어에 setuid가 설정되어 있는데 확인해 봅시다
ls -l /usr/bin/passwd passwd 경로에 권한 정보를 보면 소유자 권한이 rws라고 설정되어 있습니다
마지막 x(실행) 권한이 있는 자리에 특수 권한을 설정해두는데 소유자 권한에 s라고 표시되어 있는 게 setuid가 설정되었다는 의미입니다 만약에 x(실행) 권한이 있는지 없는지 확인이 안될 때가 있는데 s를 표현할 때, 대소문자를 구분합니다 소문자 s로 쓰면 실행 권한이 있으면서 setuid가 설정된 것이고, 대문자 S로 쓰면 실행 권한이 없으면서 setuid가 설정되어 있는 것입니다
passwd 파일의 소유자는 root이고 즉 /usr/bin/passwd 파일을 musa라는 계정으로 실행하면 이 파일이 실행되는 중에는 musa 가 아니라 root라고 인정해 줍니다
이처럼 다른 계정으로 setuid가 설정된 파일을 실행시킨 순간만큼은 root(최고 관리자)가 됩니다
그렇기에 setuid 설정된 root 파일을 악용해 root 권한으로 권한 상승도 가능하기 때문에 주의합시다!
setuid를 설정이 필요한 이유는 예를 들어 passwd(비밀번호를 변경하는 프로그램)은 /etc/shadow와 같이 root만 접근하고 편집할 수 있는 파일을 수정해야 합니다 musa라는 계정이 본인의 비밀번호를 바꾸고 싶다면 root 계정을 가진 사람에게 부탁을 해야 합니다 그렇기에 root 권한이 필요한 명령어들을 사용해야 합니다 이를 다른 일반 사용자들도 프로그램이 실행되는 동안만큼 그 프로그램 소유자의 권한을 가지게 해주는 의도입니다
(2) setgid : 개념은 setuid와 같고, setgid가 설정된 파일을 실행할 때, 사용자의 그룹이 그 파일의 소유 그룹으로 변경되어 실행됩니다 권한 위치는 그룹 권한을 설정하는 위치에 표시되며, setuid와 똑같은 방식으로 설정됩니다
(3) sticky bit : 스티키 비트는 디렉터리에 설정되는데 주 목적은 공유 디렉터리를 설정할 때 사용합니다
이 권한이 설정되면 누구나 마음대로 이 디렉터리에 파일을 생성할 수 있습니다 그러나 다른 사람이 만든 파일과 디렉터리를 수정하거나 삭제할 수 없다는 특징이 있습니다
스티키 비트는 디렉터리 영역에 표시되는데 setuid, setgid는 s로 표현되었다면 스티키 비트는 t로 표시됩니다
/tmp 디렉터리가 t로 표시되어 있습니다
스티키 비트도 setuid와 같이 대소문자를 가립니다 소문자 t로 되어 있다면 실행 권한까지 있는 것이고, 대문자 t로 되어 있다면 실행 권한이 없다는 뜻입니다
이번 시간에 특수 권한 3가지에 대해 알아봤습니다
다음 시간에는 권한을 변경하는 방법에 대해 공부해 봅시다
[ 참고 사이트 ]