19.2. SELinux 상태 및 모드 변경


활성화되면 SELinux를 강제 또는 허용 모드의 두 가지 모드 중 하나로 실행할 수 있습니다. 다음 섹션에서는 이러한 모드로 영구적으로 변경하는 방법을 보여줍니다.

19.2.1. SELinux 상태 및 모드의 영구 변경

SELinux 상태 및 모드에서 설명한 대로 SELinux를 활성화하거나 비활성화할 수 있습니다. 활성화되는 경우 SELinux에는 강제 및 허용 모드의 두 가지 모드가 있습니다.

getenforce 또는 sestatus 명령을 사용하여 SELinux가 실행 중인 모드를 확인합니다. getenforce 명령은 Enforcing,Permissive 또는 Disabled 를 반환합니다.

sestatus 명령은 SELinux 상태 및 사용 중인 SELinux 정책을 반환합니다.

$ sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          enforcing
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Memory protection checking:     actual (secure)
Max kernel policy version:      31
Copy to Clipboard Toggle word wrap
주의

시스템이 허용 모드에서 SELinux를 실행하는 경우 사용자와 프로세스는 다양한 파일 시스템 오브젝트에 잘못 레이블을 지정할 수 있습니다. SELinux가 비활성화되는 동안 생성된 파일 시스템 오브젝트는 레이블로 지정되지 않습니다. 이 동작은 SELinux가 파일 시스템 오브젝트의 올바른 레이블을 사용하므로 강제 모드로 변경할 때 문제가 발생합니다.

레이블이 지정되지 않은 파일에 잘못 레이블이 지정되지 않은 파일을 방지하기 위해 SELinux는 비활성화 상태에서 허용 또는 강제 모드로 변경될 때 파일 시스템의 레이블을 자동으로 다시 지정합니다. 다음 재부팅 시 파일의 레이블을 다시 지정하려면 root로 fixfiles -F onboot 명령을 사용하여 -F 옵션이 포함된 /.autorelabel 파일을 만듭니다.

레이블을 다시 지정하기 위해 시스템을 재부팅하기 전에, 예를 들어 enforcing=0 커널 옵션을 사용하여 허용 모드로 부팅되는지 확인합니다. 이렇게 하면 selinux-autorelabel 서비스를 시작하기 전에 시스템에 systemd 에 필요한 레이블이 지정되지 않은 파일이 포함된 경우 시스템이 부팅되지 않습니다. 자세한 내용은 RHBZ#2021835 를 참조하십시오.

19.2.2. SELinux를 허용 모드로 변경

SELinux가 허용 모드로 실행 중이면 SELinux 정책이 적용되지 않습니다. 시스템이 작동 상태로 남아 있으며 SELinux는 작업을 거부하지 않고 AVC 메시지만 기록합니다. 그러면 문제 해결, 디버깅 및 SELinux 정책 개선에 사용할 수 있습니다. 각 AVC는 이 경우 한 번만 로깅됩니다.

사전 요구 사항

  • selinux-policy-targeted,libselinux-utilspolicycoreutils 패키지가 시스템에 설치됩니다.
  • selinux=0 또는 enforcing=0 커널 매개 변수는 사용되지 않습니다.

절차

  1. 선택한 텍스트 편집기에서 /etc/selinux/config 파일을 엽니다. 예를 들면 다음과 같습니다.

    # vi /etc/selinux/config
    Copy to Clipboard Toggle word wrap
  2. SELINUX=permissive 옵션을 구성합니다.

    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #       enforcing - SELinux security policy is enforced.
    #       permissive - SELinux prints warnings instead of enforcing.
    #       disabled - No SELinux policy is loaded.
    SELINUX=permissive
    # SELINUXTYPE= can take one of these two values:
    #       targeted - Targeted processes are protected,
    #       mls - Multi Level Security protection.
    SELINUXTYPE=targeted
    Copy to Clipboard Toggle word wrap
  3. 시스템을 다시 시작하십시오.

    # reboot
    Copy to Clipboard Toggle word wrap

검증

  1. 시스템이 다시 시작되면 getenforce 명령이 Permissive 를 반환하는지 확인합니다.

    $ getenforce
    Permissive
    Copy to Clipboard Toggle word wrap

19.2.3. SELinux를 강제 모드로 변경

SELinux가 강제 모드에서 실행 중인 경우 SELinux 정책을 적용하고 SELinux 정책 규칙에 따라 액세스를 거부합니다. RHEL에서는 SELinux를 사용하여 처음 시스템을 설치할 때 강제 모드가 기본적으로 활성화됩니다.

사전 요구 사항

  • selinux-policy-targeted,libselinux-utilspolicycoreutils 패키지가 시스템에 설치됩니다.
  • selinux=0 또는 enforcing=0 커널 매개 변수는 사용되지 않습니다.

절차

  1. 선택한 텍스트 편집기에서 /etc/selinux/config 파일을 엽니다. 예를 들면 다음과 같습니다.

    # vi /etc/selinux/config
    Copy to Clipboard Toggle word wrap
  2. SELINUX=enforcing 옵션을 구성합니다.

    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #       enforcing - SELinux security policy is enforced.
    #       permissive - SELinux prints warnings instead of enforcing.
    #       disabled - No SELinux policy is loaded.
    SELINUX=enforcing
    # SELINUXTYPE= can take one of these two values:
    #       targeted - Targeted processes are protected,
    #       mls - Multi Level Security protection.
    SELINUXTYPE=targeted
    Copy to Clipboard Toggle word wrap
  3. 변경 사항을 저장하고 시스템을 다시 시작하십시오.

    # reboot
    Copy to Clipboard Toggle word wrap

    다음 부팅 시 SELinux는 시스템 내의 모든 파일과 디렉터리의 레이블을 다시 지정하고 SELinux가 비활성화될 때 생성된 파일과 디렉토리에 대해 SELinux 컨텍스트를 추가합니다.

검증

  1. 시스템이 다시 시작되면 getenforce 명령이 Enforcing:

    $ getenforce
    Enforcing
    Copy to Clipboard Toggle word wrap

문제 해결

강제 모드로 변경한 후 SELinux는 올바르지 않거나 누락된 SELinux 정책 규칙으로 인해 일부 작업을 거부할 수 있습니다.

  • SELinux 거부 작업을 보려면 root로 다음 명령을 입력합니다.

    # ausearch -m AVC,USER_AVC,SELINUX_ERR,USER_SELINUX_ERR -ts today
    Copy to Clipboard Toggle word wrap
  • 또는 se rsh-server 패키지가 설치되어 있으면 다음을 입력합니다.

    # grep "SELinux is preventing" /var/log/messages
    Copy to Clipboard Toggle word wrap
  • SELinux가 활성화되어 있고 감사 데몬(auditd)이 시스템에서 실행되지 않는 경우 dmesg 명령의 출력에서 특정 SELinux 메시지를 검색합니다.

    # dmesg | grep -i -e type=1300 -e type=1400
    Copy to Clipboard Toggle word wrap

자세한 내용은 SELinux와 관련된 문제 해결을 참조하십시오.

19.2.4. 이전에 비활성화한 시스템에서 SELinux 활성화

이전에 비활성화한 시스템에서 SELinux를 활성화하거나 처리할 수 없는 시스템과 같은 문제를 방지하려면 허용 모드에서 AVC(Access Vector Cache) 메시지를 먼저 해결합니다.

시스템이 허용 모드에서 SELinux를 실행하는 경우 사용자와 프로세스는 다양한 파일 시스템 오브젝트에 잘못 레이블을 지정할 수 있습니다. SELinux가 비활성화되는 동안 생성된 파일 시스템 오브젝트는 레이블로 지정되지 않습니다. 이 동작은 SELinux가 파일 시스템 오브젝트의 올바른 레이블을 사용하므로 강제 모드로 변경할 때 문제가 발생합니다.

레이블이 지정되지 않은 파일에 잘못 레이블이 지정되지 않은 파일을 방지하기 위해 SELinux는 비활성화 상태에서 허용 또는 강제 모드로 변경될 때 파일 시스템의 레이블을 자동으로 다시 지정합니다.

주의

레이블을 다시 지정하기 위해 시스템을 재부팅하기 전에, 예를 들어 enforcing=0 커널 옵션을 사용하여 허용 모드로 부팅되는지 확인합니다. 이렇게 하면 selinux-autorelabel 서비스를 시작하기 전에 시스템에 systemd 에 필요한 레이블이 지정되지 않은 파일이 포함된 경우 시스템이 부팅되지 않습니다. 자세한 내용은 RHBZ#2021835 를 참조하십시오.

절차

  1. 허용 모드에서 SELinux를 활성화합니다. 자세한 내용은 허용 모드로 변경에서 참조하십시오.
  2. 시스템을 다시 시작하십시오.

    # reboot
    Copy to Clipboard Toggle word wrap
  3. SELinux 거부 메시지를 확인합니다. 자세한 내용은 SELinux 거부 식별 을 참조하십시오.
  4. 다음 재부팅 시 파일의 레이블을 다시 지정했는지 확인합니다.

    # fixfiles -F onboot
    Copy to Clipboard Toggle word wrap

    이렇게 하면 -F 옵션이 포함된 /.autorelabel 파일이 생성됩니다.

    주의

    fixfiles -F onboot 명령을 시작하기 전에 항상 허용 모드로 전환합니다.

    기본적으로 autorelabel 은 시스템에 사용 가능한 CPU 코어만큼 많은 스레드를 병렬로 사용합니다. 자동 레이블을 다시 지정하는 동안 단일 스레드만 사용하려면 fixfiles -T 1 onboot 명령을 사용합니다.

  5. 거부가 없는 경우 강제 모드로 전환합니다. 자세한 내용은 부팅 시 SELinux 모드 변경을 참조하십시오.

검증

  1. 시스템이 다시 시작되면 getenforce 명령이 Enforcing:

    $ getenforce
    Enforcing
    Copy to Clipboard Toggle word wrap

다음 단계

SELinux를 강제 모드로 사용자 지정 애플리케이션을 실행하려면 다음 시나리오 중 하나를 선택하십시오.

  • unconfined_service_t 도메인에서 애플리케이션을 실행합니다.
  • 애플리케이션에 대한 새 정책을 작성합니다. 자세한 내용은 사용자 지정 SELinux 정책 작성 섹션을 참조하십시오.

19.2.5. SELinux 비활성화

SELinux를 비활성화하면 시스템이 SELinux 정책을 로드하지 않습니다. 결과적으로 시스템은 SELinux 정책을 적용하지 않고 AVC(Access Vector Cache) 메시지를 기록하지 않습니다. 따라서 SELinux 실행의 모든 이점이 사라집니다.

성능이 취약한 보안으로 인해 상당한 위험이 발생하지 않는 시스템과 같이 특정 시나리오를 제외하고 SELinux를 비활성화하지 마십시오.

중요

프로덕션 환경에서 디버깅을 수행해야 하는 경우 SELinux를 영구적으로 비활성화하는 대신 허용 모드를 일시적으로 사용합니다. 허용 모드에 대한 자세한 내용은 허용 모드로 변경을 참조하십시오.

사전 요구 사항

  • grubby 패키지가 설치되어 있습니다.

    $ rpm -q grubby
    grubby-<version>
    Copy to Clipboard Toggle word wrap

절차

  1. selinux=0 을 커널 명령줄에 추가하도록 부트 로더를 구성합니다.

    $ sudo grubby --update-kernel ALL --args selinux=0
    Copy to Clipboard Toggle word wrap
  2. 시스템을 다시 시작하십시오.

    $ reboot
    Copy to Clipboard Toggle word wrap

검증

  • 재부팅 후 getenforce 명령이 Disabled:을 반환하는지 확인합니다.

    $ getenforce
    Disabled
    Copy to Clipboard Toggle word wrap

대체 방법

RHEL 8에서는 /etc/selinux/config 파일에서 SELINUX=disabled 옵션을 사용하여 더 이상 사용되지 않는 SELinux를 비활성화하는 방법을 계속 사용할 수 있습니다. 그러면 SELinux가 활성화된 상태로 커널이 부팅되고 부팅 프로세스 후반부에서 비활성화 모드로 전환됩니다. 결과적으로 커널 패닉을 유발하는 메모리 누수 및 경쟁 조건이 발생할 수 있었습니다. 이 방법을 사용하려면 다음을 수행합니다.

  1. 선택한 텍스트 편집기에서 /etc/selinux/config 파일을 엽니다. 예를 들면 다음과 같습니다.

    # vi /etc/selinux/config
    Copy to Clipboard Toggle word wrap
  2. SELINUX=disabled 옵션을 구성합니다.

    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #       enforcing - SELinux security policy is enforced.
    #       permissive - SELinux prints warnings instead of enforcing.
    #       disabled - No SELinux policy is loaded.
    SELINUX=disabled
    # SELINUXTYPE= can take one of these two values:
    #       targeted - Targeted processes are protected,
    #       mls - Multi Level Security protection.
    SELINUXTYPE=targeted
    Copy to Clipboard Toggle word wrap
  3. 변경 사항을 저장하고 시스템을 다시 시작하십시오.

    # reboot
    Copy to Clipboard Toggle word wrap

19.2.6. 부팅 시 SELinux 모드 변경

부팅 시 다음 커널 매개변수를 설정하여 SELinux가 실행되는 방식을 변경할 수 있습니다.

enforcing=0

이 매개 변수를 설정하면 시스템이 허용 모드로 시작되므로 문제를 해결할 때 유용합니다. 파일 시스템이 너무 손상된 경우 허용 모드를 사용하는 것이 문제를 감지하는 유일한 옵션일 수 있습니다. 또한 허용 모드에서 시스템은 라벨을 올바르게 만듭니다. 이 모드에서 생성되는 AVC 메시지는 강제 모드에서와 다를 수 있습니다.

허용 모드에서는 일련의 동일한 거부 중 첫 번째 거부만 보고됩니다. 그러나 강제 모드에서는 디렉터리 읽기와 관련된 거부가 발생할 수 있으며 애플리케이션이 중지될 수 있습니다. 허용 모드에서는 동일한 AVC 메시지가 표시되지만 애플리케이션은 디렉토리에 있는 파일을 계속 읽고 각 거부에 대해 AVC도 받습니다.

selinux=0

이 매개 변수를 사용하면 커널이 SELinux 인프라의 일부를 로드하지 않습니다. init 스크립트는 시스템이 selinux=0 매개 변수로 부팅되었으며 /.autorelabel 파일을 터치합니다. 이로 인해 SELinux를 활성화한 다음 부팅할 때 시스템이 자동으로 레이블을 다시 지정합니다.

중요

프로덕션 환경에서는 selinux=0 매개변수를 사용하지 마십시오. 시스템을 디버깅하려면 SELinux를 비활성화하는 대신 일시적으로 허용 모드를 사용합니다.

autorelabel=1

이 매개변수는 시스템에서 다음 명령과 유사하게 레이블을 다시 지정하도록 강제 적용합니다.

# touch /.autorelabel
# reboot
Copy to Clipboard Toggle word wrap

파일 시스템에 레이블이 잘못 지정된 오브젝트가 많은 경우 허용 모드로 시스템을 시작하여 자동 레이블 프로세스가 성공적으로 수행됩니다.

맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat