SELinux[1]는 커널의 LSM(Linux Security Module)으로 구현된 강제 접근 제어(MAC)다. 미국 NSA 가 개발해 2000년 공개했고 2003년 커널에 들어갔다. RHEL 계열은 기본 enforcing 이며 프로세스와 파일에 붙은 보안 컨텍스트(label)로 접근을 판단한다.
| 모드 | 동작 |
|---|---|
enforcing |
정책 위반을 막고 로그에 남긴다 |
permissive |
막지 않고 로그만 남긴다. 디버깅용 |
disabled |
정책을 싣지 않는다 |
데이터 플랫폼 설치 문서 다수가 SELinux 비활성화를 요구하지만, 운영에서는 permissive 로 두고 audit.log 를 보며 정책을 다듬는 편이 낫다.
getenforce
sestatus
sudo setenforce 0 # permissive
sudo setenforce 1 # enforcing
재부팅하면 /etc/selinux/config 의 값으로 돌아간다.
sudo sed -i 's/^SELINUX=.*/SELINUX=permissive/' /etc/selinux/config
/etc/selinux/config 의 형식은 다음과 같다.
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
현행[2]. RHEL 9 부터는 설정 파일의 SELINUX=disabled 가 지원되지 않는다. 커널 인자 selinux=0 을 준다.
sudo grubby --update-kernel ALL --args selinux=0
sudo reboot
다시 켤 때는 인자를 빼고 재부팅한 뒤 sudo touch /.autorelabel 로 파일 컨텍스트를 다시 붙인다.
sudo grubby --update-kernel ALL --remove-args selinux=0
sudo touch /.autorelabel
sudo reboot
설정 파일에서 disabled 로 바꾸고 재부팅한다. 2022년 테스트 됨.
sudo sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
sudo reboot
getenforce
Disabled · Permissive · Enforcing 중 의도한 값이 나오면 된다.
Security-Enhanced Linux ↩︎
RHEL 9 Changing SELinux states and modes (grubby --update-kernel ALL --args selinux=0) — 2026-09-20 확인. https://docs.redhat.com/en/documentation/red_hat_enterprise_linux/9/html/using_selinux/changing-selinux-states-and-modes_using-selinux ↩︎