우리가 흔히 rwx 권한을 가지고 파일을 실행하게 되면 현재 나의 실행권한으로 실행이 된다!
하지만 그 안에 따로 파일을 생성한 사람만 사용할 수 있는 제어 등이 되어있다면
제한이 많아진다!!
그래서 setuid 권한을 가지고 있으면 파일을 생성한 주체의 권한으로 프로세스를 실행할 수가 있다1!
which passwd
ls -l /bin/passwd ## rwsr-x-rx 로 되어있다!
이때 passwd 파일을 생성한 user는 root다!
setuid설정이 되어있으면 x가 있어야하는 부분에 's'로 되어있다!!
root 사용자는 파일의 권한을 어느정도 무시가 가능해서 패스워드나 정보를 수정하는게 가능해진다!!
우리는 저 root의 권한을 사용하는 것!!
setgid도 setuid랑 사실 크게 다르지 않다
하지만 setuid는 스크립트 파일이나 실행파일에서 사용을 주로 하고
setgid는 디렉토리 설정에서 많이 사용한다!
디렉토리에 setgid가 되어있으면 해당 디렉토리에서 파일을 만들때
그 디렉토리 생성 그룹의 권한으로 만들 수 있어 에러를 발생시키지 않는다!
ls -ld /run/log/journal
drwxr-sr-x root systemed-journal 60 Feb 22 14:55 /run/log/journal
기타 사용자 권한에 읽기 쓰기 실행 (r,w,x)가 다 설정 되어있으면
누구나 그 파일을 삭제 수정 할 수 있게 된다!!
하지만 이 문제는 생각보다 심각하다
누군가 실수로 정말 필요한 파일을 해킹하거나 삭제하면 프로그램 자체가 망가지기 때문에!
이때 sticky bit를 사용한다면 해당 파일의 권한이 있어도 삭제를 막아버린다!!
즉 파일을 소유한 사용자만이 삭제 가능!
ex) 인터넷 게시판 -> 다른사람이 작성한 글 아무나 삭제 못하게!!
ls -l /tmp
drwxrwxrwt 15 root root 4096 Feb 23 16:47 /tmp
우리가 chmod 777 /rudgus/test1 -> 파일의 권한이 rwxrwxrwx가 된다!
이때 3자리가 아닌 앞에 한자리를 더 추가한 4자리로 설정을 해버리면 확장권한도 적을 수가 있다!!
chmod 1000 /rudgus/test1 -> 파일 권한에 sticky bit가 추가 된다!
chmod -1000 /rudgus/test1 -> 파일 권한에 sticky bit가 해제 된다!
setuid는 4, setgid는 2, sticky bit는 1이다!!