리눅스에서 권한(Permission)은 너무나도 익숙한 개념이다. 777, 711, 644, drwxrwxrwx 등 리눅스를 겉핥기식으로 아는 사람들이라면 일반적으로 소유자(User) 권한, 소유그룹(Group) 권한, 그 외(Other) 권한 3가지, 그리고 쓰기(Write), 읽기(Read), 실행(Execute) 3가지로 인식하는 경우가 많다.
하지만 실제로 리눅스에서 적용되는 권한은 4가지이다. 위 3+3 분류로 해결할수 없는 특수한 상황이 필요한 경우가 있기 때문이다. 실제로 권한을 조회하다 보면 rwx가 아닌 rwS 같은 특이한 권한이 보이기도 하고, chmod나 몇몇 권한 세팅 예제에서 1755, 0644 등 4자리로 표현되는 권한을 보기도 한다. 모두 특수권한이 적용되는 경우이다.
특수권한은 3가지가 있다. 바로 Set-UID, Set-GID, Sticky-Bit이다.
많이 쓰이나? 꼭 알아야되나? 라고 생각 할 수도 있지만, 필요에 의해 따로 설정해서 쓰지 않더라도 리눅스 기본 시스템이나 소프트웨어에서 불가피하게 사용되고 있는 곳이 많고, 여러가지 해킹 기법 및 보안사고의 근원이므로 상식적인 차원에서도 무조건 알아두어야 한다.
실행하는 동안 해당 파일의 소유자 권한으로 인식한다.
일반적으로 실행 파일에 사용된다.
소유자 권한 부분의 x 자리에 s 로 표기 된다.
실행 권한이 없을 경우 대문자 S 로 표시된다.
실행하는 동안 해당 파일의 소유자그룹 권한으로 인식한다.
일반적으로 디렉터리에 설정된다.
사용자가 파일이나 디렉터리를 생성하면 사용자가 속한 그룹에 상관없이 디렉터리 소유 그룹으로 만들어진다.
그룹 권한 부분의 x 자리에 s 로 표기 된다.
실행 권한이 없을 경우 대문자 S 로 표시된다.
일반 사용자들이 디렉터리에서 파일 및 디렉터리 생성이 가능하다.
일반 사용자들은 자신이 생성한 것 이외에는 수정 및 삭제가 불가능하다.
디렉터리에만 적용된다.
시스템 기본 폴더인 /tmp 디렉터리에 설정되어 있다.
설정하면 other 계층 권한 부분의 x 자리에 t 로 표기되며 실행권한이 없는 경우 대문자 T 로 표기된다.
우리에게 익숙한 chmod 를 사용한다.
문자모드인 경우에는 Set-UID 와 Set-GID 는 s 를 사용하고, Sticky-bit 는 t 를 사용한다.