Table of Contents
C – umask(0) 함수의 보안 위험성
C 언어에서 umask(0); 명령을 사용할 때 발생하는 보안 위험성을 설명합니다.
사전지식
유닉스 체제에서 1 은 실행권한, 2 는 쓰기권한, 4 는 읽기권한을 의미합니다.
예를들어,
권한이 644 인 경우,
6 = 2 + 4 = 쓰기/읽기 권한.
권한이 755 인 경우,
7 = 1 + 2 + 4 = 실행/쓰기/읽기 권한
5 = 1 + 4 = 실행/읽기 권한
이 됩니다.
기능
일반적으로 umask 는 생성되는 파일의 권한을 깎아 내리는 용도로 쓰입니다.
예를 들어, umask가 0022 로 설정되어 있으면 그룹과 기타 사용자에 대해 쓰기 권한을 제거해 줍니다.
umask(0); 설정을 하게 되면, 이러한 권한 제거를 전부 없애버립니다.
문제점
일반적인 C 파일 생성함수는 디폴트로 666 의 권한이 부여됩니다.
즉, 아무나 읽고 쓸 수 있는 파일을 생성하게 됩니다.
폴더의 위치와 파일명만 알게 된다면 누구나 파일의 내용을 읽고 변조할 수 있게 됩니다.
해결책
umask(0027);
위 명령을 실행함으로 해서, 그룹 사용자에게는 디폴트로 쓰기 권한을 제거하고,
기타 사용자에게는 모든 권한을 제거합니다.