CTF 운영에 대한 글을 정리하면서 https://neutrinox4b1.xyz/posts/suggestions-for-running-a-ctf/
pwnable 부분에
chmod 1733
chmod 2755 같은 4자리로 된 권한 부여를 보면서 뭐지? 생각하다가 찾아보면서 알게되어 정리합니다.
특수 권한
기본적인 권한 rwx는 알고있다고 가정하고, setuid, setgid도 명확하지 않으니 이것부터 설명해보겠습니다.
setuid
setuid는 권한을 빌려주는 것입니다. 일반적인 사용자가 파일을 실행하면 소유자 권한으로 실행되며 /bin/passwd가 대표적인 예시입니다.
소유자 권한에 x대신 s가 들어가며, 대문자 S는 setuid가 걸려있지만 실행 권한이 없음을 나타냅니다.
setgid
setuid와 유사하게 소유 그룹의 권한을 인가합니다. 일반 사용자가 소유 그룹 권한으로 실행되며,
소유 그릅 권한에 x대신 s가 들어갑니다.
sticky bit
디렉토리에 사용되는 특수 권한입니다. 일반적으로 공유 디렉토리에 사용되며 sticky bit가 설정되면 디렉토리 소유자와 root외 유저는 파일 생성에는 제한이 없지만, 본인이 생성한 파일 외에는 삭제가 불가능합니다
대표적으로 /tmp 디렉토리에 설정되어 있습니다.
설정하면 일반사용자 권한에 x 대신 t가 들어가며 실행 권한이 없으면 T로 나타냅니다.
명령어 사용
chmod 1733은
sticky bit, rwx, -wx, -wx 권한, 이를 표현하면 rwx-wx-wt
chmod 2755는
set gid, rwx, r-x, r-x 즉, rwxr-sr-x 가 됩니다.
u+
g+
o+
a+ (모든 사용자)
같은 형식을 사용하는 경우, (+ - = 기호로 설정)
chmod u+s,
chmod g+s
chmod o+t
이렇게 setuid, setgid, sticky bit를 설정할 수 있습니다.
다음번에는 쉘 명령어가 아닌 C언어 코드 상에서 특수 권한을 알아보겠습니다.