Linux 시스템 보안 기초 · 16/50편
이 글은
리눅스 시스템 기초·파일 · 권한 · 사용자 관리·서비스 · 프로세스 관리시리즈를 선행 학습으로 두고, 동일한 개념을 보안관제(SOC) 관점에서 한 단계 확장합니다.
선행 시리즈에서 rwx와 chmod는 충분히 다뤘습니다. 이번 편은 그 지식을 접근통제(access control) 라는 보안 렌즈로 다시 봅니다. 권한 비트는 단순한 설정이 아니라, 커널이 매 접근마다 실행하는 '판정 규칙'입니다.
권한 판정의 실제 순서를 이해해야 합니다. 커널은 다음 순서로 딱 한 그룹만 적용합니다.
핵심 함정: owner여도 owner 비트만 봅니다. owner 비트가 ---면, group/other가 열려 있어도 owner는 접근하지 못합니다. '가장 먼저 매칭된 그룹만 적용'이 접근통제의 실제 규칙입니다.
접근 요청 (프로세스 EUID/EGID)
│
▼
EUID == owner? ──yes──> owner 비트(rwx)로 판정 → 끝
│no
▼
그룹 소속? ──yes──> group 비트로 판정 → 끝
│no
▼
other 비트로 판정
권한 비트는 inode에 저장된 12비트(특수 3 + rwx 9)입니다. 커널의 inode_permission() 계열 함수가 위 순서로 검사합니다. 디렉터리의 권한은 파일과 의미가 다릅니다.
r: 목록 조회(ls)x: 진입/내부 접근(cd, 경로 통과)w: 내부 파일 생성/삭제(파일 내용과 무관!)그래서 디렉터리에 w가 있으면 그 안의 파일을 삭제할 수 있습니다 — 파일 자체 권한과 별개입니다. 이 오해가 실무 사고의 흔한 원인입니다.
# 권한을 기호+8진수로 함께 보기
stat -c '%A %a %U:%G %n' /etc/passwd /etc/shadow /tmp
# 특정 사용자 관점에서 접근 가능 여부 테스트(설명적)
sudo -u alice test -r /etc/shadow && echo 'alice can read' || echo 'alice denied'
실습 환경 실제 실행 결과입니다. (실제 캡처)
$ stat -c '%A %a %U:%G %n' /etc/passwd /etc/shadow /tmp
-rw-r--r-- 644 root:root /etc/passwd
-rw-r----- 640 root:shadow /etc/shadow
drwxrwxrwt 1777 root:root /tmp
$ sudo -u alice test -r /etc/shadow && echo yes || echo 'alice denied'
alice denied
alice는 shadow의 owner도 shadow 그룹도 아니므로 other 비트(---)에 걸려 거부됩니다. /tmp의 1777에서 끝의 t(Sticky Bit)는 20편에서 다룹니다.
777 (웹셸 업로드·실행)w 남발로 임의 삭제 가능접근통제 점검은 '누가 이 파일을 읽고/쓸 수 있는가'를 EUID 관점에서 재구성하는 작업입니다.
stat)auditd의 chmod syscall)권한은 예방 통제지만, 권한 변경 이벤트는 탐지 대상입니다. auditd로 중요 경로의 chmod/chown syscall을 감사하면 '공격자가 방어를 약화시키는 순간'을 잡습니다. Wazuh SCA/FIM은 민감 파일 권한이 기준을 벗어나면 알람을 올립니다.
[ ] 권한 판정의 owner→group→other 순서 이해
[ ] 디렉터리 w의 삭제 의미 이해
[ ] 민감 파일 권한 기준선 확인
[ ] sudo -u로 접근 가능성 점검
다음 편에서는 17. World-Writable 파일 보안 점검 를 다룹니다. 누구나 쓸 수 있는 World-Writable 파일이 왜 위험한지, 어떻게 찾는지 봅니다.
본 실습은 격리된 테스트 VM(Rocky Linux / Ubuntu, VMware) 및 테스트 계정 환경을 기준으로 하며, 운영 서버를 대상으로 하지 않습니다. 실행 결과는 실제 캡처와 예시 출력을 명확히 구분해 표기합니다.