리눅스 파일 권한은 서버 운영, 보안 점검, 자격증 시험에 모두 나오는 기본기다. 그런데 chmod 숫자는 외워도 umask 계산이나 특수 권한에서 자주 헷갈린다. 오늘은 umask와 SUID·SGID·스티키 비트를 8문제로 정리한다.
학습용 예상문제 안내: 아래 문제는 직접 만든 학습용 예상문제이며 실제 시험과 다를 수 있다. 최신 출제 범위는 KISA, 한국데이터산업진흥원 등 공식 공지를 반드시 확인하자.
이 글의 구성
- 문제 1~2: umask 계산(파일은 666, 디렉터리는 777에서 뺀다)
- 문제 3~4: SUID와 ls 출력 읽기
- 문제 5~6: SGID, 스티키 비트의 쓰임
- 문제 7~8: 심볼릭 모드와 find 점검 명령
각 문제 아래 파란 상자가 정답과 풀이다. 먼저 직접 풀고 확인하길 권한다. 명령은 모두 리눅스 셸에서 실행해 결과를 확인한 것들이다.
문제 1. umask 022가 만드는 기본 권한
umask가 022인 환경에서 touch a.txt와 mkdir dir1을 실행했다. 파일과 디렉터리에 부여되는 권한을 8진수로 쓰시오.
umask는 기본 권한에서 빼는 값이다. 새 파일의 기본값은 666, 디렉터리는 777이다. 파일은 666에서 022를 빼 644(rw-r–r–)가 되고, 디렉터리는 777에서 022를 빼 755(rwxr-xr-x)가 된다. 파일에 실행 권한이 처음부터 붙지 않는 점이 핵심이다.
문제 2. umask 027 환경의 결과
umask 027일 때 새로 만든 파일과 디렉터리의 권한을 각각 쓰고, 그룹 외 사용자(other)가 할 수 있는 일을 설명하시오.
666-027=640(rw-r—–), 777-027=750(rwxr-x—)이다. other 자리가 0이므로 소유자·그룹 외 사용자는 읽기, 쓰기, 디렉터리 진입 모두 할 수 없다. 서버 계정의 기본 umask를 027로 두는 것은 흔한 보안 설정이다.
문제 3. SUID가 설정된 파일 읽기
-rwsr-xr-x 1 root root ... /usr/bin/passwd 에서 s의 의미와 숫자 표기를 쓰시오. 이 설정이 보안상 점검 대상인 이유도 설명하시오.
실행 시 실행한 사용자가 아니라 파일 소유자(여기서는 root)의 권한으로 프로세스가 돌아간다. 일반 사용자가 /etc/shadow를 직접 수정할 수 없어도 passwd 명령으로 자기 비밀번호를 바꿀 수 있는 이유다. 반대로 취약한 SUID 프로그램은 권한 상승 경로가 되므로, 불필요한 SUID 파일은 주기적으로 찾아 제거해야 한다.
문제 4. 대문자 S가 나오는 경우
chmod 4644 test.sh 후 ls -l 결과의 소유자 권한 부분이 rwS로 표시되었다. 소문자 s가 아닌 이유는 무엇인가?
특수 권한 비트는 해당 자리의 x 위치에 겹쳐 표시된다. x가 있으면 소문자(s, t), 없으면 대문자(S, T)다. 644에는 소유자 실행 권한이 없으므로 S가 되고, 이 상태의 SUID는 사실상 효과가 없다. 직접 실행해 보면 바로 확인된다.
문제 5. 공유 디렉터리와 SGID
개발팀이 함께 쓰는 디렉터리에서 누가 파일을 만들든 그룹 소유가 디렉터리의 그룹으로 유지되게 하려 한다. 필요한 특수 권한과 명령을 쓰시오(권한은 rwxrwxr-x).
chmod 2775 디렉터리디렉터리에 SGID를 걸면 그 안에서 새로 만든 파일과 하위 디렉터리가 만든 사람의 기본 그룹이 아니라 디렉터리의 그룹을 상속한다. ls 결과는
drwxrwsr-x로 나타난다.문제 6. /tmp의 스티키 비트
/tmp는 모든 사용자가 쓸 수 있는데도 남의 파일은 지우지 못한다. 이를 가능하게 하는 권한과 숫자 표기를 쓰시오.
스티키 비트가 걸린 디렉터리에서는 파일 소유자, 디렉터리 소유자, root만 파일을 삭제하거나 이름을 바꿀 수 있다. 표시는
drwxrwxrwt다.문제 7. 심볼릭 모드로 권한 지정
소유자는 읽기·쓰기·실행, 그룹은 읽기·실행, 기타 사용자는 권한 없음으로 만드는 chmod 명령을 심볼릭 모드로 쓰고 숫자로도 환산하시오.
chmod u=rwx,g=rx,o= 파일 = 750소유자 4+2+1=7, 그룹 4+0+1=5, 기타 0이다.
o=처럼 등호 뒤를 비우면 해당 권한을 모두 제거한다.문제 8. SUID 파일 점검 명령
시스템 전체에서 SUID가 설정된 일반 파일을 찾는 find 명령을 쓰고, 오류 메시지를 화면에 보이지 않게 하는 방법도 포함하시오.
find / -perm -4000 -type f 2>/dev/null-perm -4000은 해당 비트가 모두 설정된 파일을 찾는다. SUID와 SGID 중 하나라도 있는 파일은 -perm /6000으로 찾는다. 2>/dev/null은 접근 거부 같은 표준 오류를 버린다. 결과 목록을 기준 목록과 비교해 낯선 파일이 있는지 보는 것이 점검의 요점이다.공부 팁 3가지
- umask는 암기보다 계산이다. 파일 666, 디렉터리 777에서 빼는 것만 기억하면 어떤 값이 나와도 풀 수 있다.
- 특수 권한은 문자 위치와 숫자 자리(4=SUID, 2=SGID, 1=스티키)를 한 쌍으로 묶어 외운다. 테스트용 디렉터리에서 직접 chmod를 바꿔 가며 ls -l 출력을 비교하면 대문자 S와 T의 차이도 금방 익는다.
- find로 SUID 파일을 찾는 명령은 실기와 실무 점검 양쪽에 쓰인다. 옵션 -perm의 – 와 / 차이를 꼭 구분해 두자.
면책: 이 글의 문제는 학습용으로 직접 만든 예상문제이며 실제 시험과 다를 수 있다. 시험 범위와 일정은 반드시 KISA, 한국데이터산업진흥원 등 공식 공지로 확인하자. 운영 서버에 명령을 적용할 때는 반드시 테스트 환경에서 먼저 확인한다.