주:

Oracle Linux에서 SELinux 사용

소개

SELinux는 커널 모드 및 사용자 공간 도구 세트로, 다른 계층의 시스템 보안, 정확한 액세스 제어, 시스템 차원의 관리 정의 정책 및 권한 에스컬레이션 공격에 대한 개선된 완화를 제공합니다.

이 자습서에서는 이러한 사용자 공간 도구를 사용하여 시스템을 강제 실행 모드로 유지하는 방법을 안내합니다.

목표

이 실습에서는 다음 내용을 배웁니다.

필요 조건

랩 환경 설정

주: 무료 실습 환경을 사용하는 경우 Oracle Linux Lab Basics에서 연결 및 기타 사용 지침을 참조하십시오.

사용자 생성

추가 사용자는 이 연습의 뒷부분에서 SELinux 유저 할당을 테스트할 수 있습니다.

  1. 아직 연결되지 않은 경우 터미널을 열고 ssh를 통해 ol8-server 시스템에 연결합니다.

    ssh oracle@<ip_address_of_ol8-server>
    
  2. 사용자를 만들고 암호를 설정합니다.

    sudo useradd -u 8000 ralph
    echo "ralph:oracle" | sudo chpasswd
    
  3. SSH 접속을 허용합니다.

    oracle 사용자 계정에서 SSH 키를 복사합니다.

    sudo mkdir /home/ralph/.ssh
    sudo cp /home/oracle/.ssh/authorized_keys /home/ralph/.ssh/authorized_keys
    sudo chown -R ralph:ralph /home/ralph/.ssh
    sudo chmod 700 /home/ralph/.ssh
    sudo chmod 600 /home/ralph/.ssh/authorized_keys
    
  4. 새 터미널을 열고 SSH 접속이 작동하는지 확인합니다.

    ssh ralph@<ip_address_of_ol8-server>
    

    그런 다음 세션을 exit하고 터미널 window를 닫습니다.

SELinux 모드 및 상태

Oracle Linux는 기본적으로 SELinux를 설치하며 Enforcing 모드로 실행됩니다.

  1. SELinux 모드를 확인하여 확인합니다.

    Enforcing로 설정해야 합니다.

    getenforce
    
  2. SELinux 상태 및 모드를 확인합니다.

    sestatus
    

    sestatus 명령 출력에는 SELinux 상태, 정책 및 모드가 표시됩니다.

    예제 출력:

    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
    

SELinux 보안 레이블

SELinux의 모든 프로세스 및 시스템 리소스에는 SELinux 컨텍스트라는 보안 레이블이 있습니다. SELinux 레이블이라고도 하는 SELinux 컨텍스트는 보안 등록 정보에 중점을 두고 SELinux 정책의 객체를 참조할 수 있는 일관된 방법을 보장합니다.

  1. 파일에 대한 SELinux 보안 레이블을 표시합니다.

    ls -ldZ /etc/passwd
    

    예제 출력:

    -rw-r--r--. 1 root root system_u:object_r:passwd_file_t:s0 1892 Apr 13 14:39 /etc/passwd
    

    -Z 옵션이 있는 ls 출력에는 4개의 SELinux 속성 필드가 표시됩니다.

    • 사용자: system_u
    • 역할: object_r
    • 유형: passwd_file_t
    • 보안: s0

    가장 중요한 것은 SELinux 유형입니다. 대부분의 SELinux targeted 정책 규칙은 SELinux 유형을 활용하여 한 객체(예: 프로세스)와 다른 객체(예: 파일) 간에 허용되는 상호 작용을 정의하기 때문입니다.

  2. 사용 가능한 SELinux 유형 목록을 가져옵니다.

    seinfo --type | head
    
    • head 명령은 출력을 처음 10개의 출력 행으로만 제한합니다.

    전체 출력은 sshsshd와 같은 여러 명령 및 서비스에 대해 SELinux 유형이 존재함을 보여줍니다.

  3. 특정 SELinux 유형의 목록을 가져옵니다.

    grepssh 단어를 포함하는 유형으로만 출력을 제한합니다.

    seinfo -t | grep ssh
    
  4. 특정 프로세스 및 구성 파일에 대한 보안 레이블 목록을 가져옵니다.

    ps를 사용하면 프로세스에 대한 보안 레이블이 생성됩니다.

    ps -efZ | grep sshd
    

    예제 출력:

    system_u:system_r:sshd_t:s0-s0:c0.c1023 root 2535      1  0 14:37 ?        00:00:00 /usr/sbin/sshd -D
    system_u:system_r:sshd_t:s0-s0:c0.c1023 root 18514  2535  0 15:21 ?        00:00:00 sshd: oracle [priv]
    unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 oracle 18528 18514  0 15:21 ? 00:00:00 sshd: oracle@pts/0
    unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 oracle 23611 18529  0 15:41 pts/0 00:00:00 grep --color=auto sshd
    

    ls를 사용하면 구성 파일에 대한 보안 레이블이 생성됩니다.

    ls -lZ /etc/ssh/
    

    예제 출력:

    total 600
    -rw-r--r--. 1 root root     system_u:object_r:etc_t:s0      577388 Oct  9  2021 moduli
    -rw-r--r--. 1 root root     system_u:object_r:etc_t:s0        1770 Oct  9  2021 ssh_config
    drwxr-xr-x. 2 root root     system_u:object_r:etc_t:s0          28 Feb 18 08:51 ssh_config.d
    -rw-------. 1 root root     system_u:object_r:etc_t:s0        4268 Apr 13 14:37 sshd_config
    -rw-r-----. 1 root ssh_keys system_u:object_r:sshd_key_t:s0    537 Apr 13 14:37 ssh_host_ecdsa_key
    -rw-r--r--. 1 root root     system_u:object_r:sshd_key_t:s0    197 Apr 13 14:37 ssh_host_ecdsa_key.pub
    -rw-r-----. 1 root ssh_keys system_u:object_r:sshd_key_t:s0    432 Apr 13 14:37 ssh_host_ed25519_key
    -rw-r--r--. 1 root root     system_u:object_r:sshd_key_t:s0    117 Apr 13 14:37 ssh_host_ed25519_key.pub
    -rw-r-----. 1 root ssh_keys system_u:object_r:sshd_key_t:s0   2635 Apr 13 14:37 ssh_host_rsa_key
    -rw-r--r--. 1 root root     system_u:object_r:sshd_key_t:s0    589 Apr 13 14:37 ssh_host_rsa_key.pub
    

    sshd 데몬 프로세스는 sshd_t 유형을 사용합니다. 따라서 targeted 정책에서 sshd_t을 가진 객체가 다음 보안 속성을 가진 객체에 액세스할 수 있음을 알리는 sshd_t SELinux 속성에 대한 규칙이 필요합니다.

    • etc_t
    • sshd_key_t
    • ...

    마찬가지로 ssh 명령을 검토할 경우 ssh_home_tssh_exec_t 간의 유사한 매핑을 확인할 수 있습니다.

    ls -lZ /usr/bin/ssh
    

    예제 출력:

    -rwxr-xr-x. 1 root root system_u:object_r:ssh_exec_t:s0 775720 Oct  9  2021 /usr/bin/ssh
    
    ls -lZ ~/.ssh
    

    예제 출력:

    total 4
    -rw-------. 1 oracle oracle unconfined_u:object_r:ssh_home_t:s0 404 Apr 13 14:39 authorized_keys
    
  5. 사용자의 보안 컨텍스트를 가져옵니다.

    관련된 다른 컨텍스트 유형은 unconfined_t입니다. 이 SELinux 유형의 객체(예: 사용자)는 무제한 액세스 권한을 가집니다. 이 액세스 레벨은 SELinux가 사용자가 수행할 수 있는 작업을 제한하지 않고 DAC 권한을 통해서만 금지함을 의미합니다. DAC(임의 액세스 제어)는 기존 사용자, 그룹 및 기타 권한에 의해 처리되는 보안 정책입니다.

    예를 들어, oracle 사용자에 대한 보안 속성을 표시합니다.

    whoami
    
    id -Z
    

    예제 출력:

    [oracle@ol-selinux ~]$ whoami
    oracle
    [oracle@ol-selinux ~]$ id -Z
    unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
    

SELinux 및 네트워크 서비스

SELinux는 내부 데이터베이스 내에서 가장 일반적으로 사용되는 네트워크 기반 소프트웨어 패키지에 대한 구성을 추적합니다. 이 추적을 통해 SELinux는 외부 서비스에서 공격에 이르기까지 시스템을 보호할 수 있습니다.

따라서 비표준 디렉토리나 포트를 사용하도록 소프트웨어를 구성하면 SELinux에서 서비스가 작동하지 않을 수 있습니다.

시스템의 표준 포트에 대해 SELinux가 인식하는 것을 표시하려면 SELinux 유틸리티 semanage를 사용해야 합니다. Oracle Linux는 기본적으로 유틸리티를 설치하지 않으므로 설치합니다.

  1. 유틸리티를 제공하는 패키지를 확인합니다.

    sudo dnf whatprovides semanage
    

    결과는 /usr/sbin/semanagepolicycoreutils-python-utils 패키지의 일부임을 보여줍니다.

  2. 패키지 및 종속성을 설치합니다.

    sudo dnf install -y policycoreutils-python-utils
    
  3. SELinux에서 허용되는 sshd 포트를 확인합니다.

    sudo semanage port -l | grep ssh
    

    예제 출력:

    ssh_port_t                     tcp      22
    
  4. SELinux 정책에 새 포트를 추가합니다.

    SSH 데몬이 수신하는 포트를 2222로 변경하거나 기본 구성을 저장하는 위치를 변경하려는 경우 SELinux에 해당 변경사항을 알려야 합니다. semanage를 다시 사용하여 새 정책 규칙을 추가하여 사용자정의 포트를 허용할 수 있습니다.

    sudo sudo semanage port -a -t ssh_port_t -p tcp 2222
    
    • -a 옵션은 -t 유형의 새 정책 규칙을 추가합니다.
  5. SELinux가 허용하는 포트를 확인합니다.

    sudo semanage port -l | grep ssh
    

    예제 출력:

    ssh_port_t                     tcp      2222, 22
    
  6. SELinux 정책에서 포트를 수정합니다.

    SSH 데몬을 포트 443에 매핑하려고 한다고 가정해 보겠습니다. 동일한 명령을 반복하지만 포트가 이미 사용 중이라는 메시지와 함께 오류가 발생합니다.

    sudo semanage port -a -t ssh_port_t -p tcp 443
    

    예제 출력:

    ValueError: Port tcp/443 already defined
    

    http_port_t 유형에서 ssh_port_t 유형으로 포트 443을 전환하려고 시도하는 중 오류가 발생했습니다. 이렇게 하려면 포트 객체 레코드를 수정하는 -m 옵션을 사용합니다.

    sudo semanage port -m -t ssh_port_t -p tcp 443
    

SELinux 유저

각 Linux 사용자는 SELinux 정책을 사용하여 SELinux 유저에 매핑됩니다. 이 방법을 통해 Linux 사용자는 SELinux 사용자 매핑에 따라 제한 사항을 상속할 수 있습니다. Oracle Linux의 기본 매핑은 SELinux unconfined_u 사용자에게 매핑되는 __default__ 로그인입니다.

  1. 현재 모든 Linux 사용자 매핑 목록을 가져옵니다.

    sudo semanage login -l
    
    • oracle 사용자는 나열되지 않으므로 unconfined_u 사용자에게 매핑됩니다.
  2. SELinux 사용자 목록을 가져옵니다.

    seinfo -u
    
  3. 사용자의 작업을 제한합니다.

    기본 Linux 사용자가 제약 없이 실행되지만, 사용자의 작업으로 인해 응용 프로그램 domain에 따라 제한이 발생할 수 있습니다. domain는 SELinux 유형이 동일한 다양한 객체입니다.

    사용자가 X 윈도우 시스템, sudo 및 네트워크를 사용하지 못하도록 차단하려면 어떻게 해야 합니까?

    SELinux에 해당 사용자가 있습니다.

    이를 확인하려면 다른 Linux 사용자가 있어야 합니다. 사용자 ralph를 사용합니다.

    1. guest_u에 대한 새 매핑을 생성합니다.

      sudo semanage login -a -s guest_u ralph
      
    2. 매핑을 확인합니다.

      sudo semanage login -l
      
    3. ralph가 네트워크에 액세스할 수 없는지 테스트합니다.

      guest_u에서 상속된 제한은 로그인 후에만 발생하며 sudo 또는 su를 수행하지 않습니다.

      터미널을 열고 ssh를 통해 ol8-server 시스템에 ralph 사용자로 연결합니다.

      ssh ralph@<ip_address_of_ol8-server>
      
    4. 사용자의 컨텍스트를 확인합니다.

      id; id -Z
      

      예제 출력:

      uid=8000(ralph) gid=8000(ralph) groups=8000(ralph) context=guest_u:guest_r:guest_t:s0
      guest_u:guest_r:guest_t:s0
      
    5. 사용자의 현재 프로세스의 보안 컨텍스트 표시:

      ps axZ
      

      출력에는 guest_u에 매핑된 사용자 ralph가 표시되고 로그인할 수 있습니다. 그러나 ralph는 네트워크에 액세스할 수 없어야 합니다.

    6. ping를 사용하여 네트워크 연결을 테스트합니다.

      ping localhost
      

      예제 출력:

      ping: socket: Permission denied
      
    7. 또한 curl를 사용하여 네트워크를 테스트합니다.

      curl ifconfig.me
      

      예제 출력:

      curl: (6) Could not resolve host: ifconfig.me
      

      이 메시지는 curlifconfig.me의 DNS 이름을 IP 주소로 분석할 수 없음을 나타냅니다. Linux 네트워크 서비스인 DNS를 사용하려면 소켓을 열어야 하므로 SELinux guest_u 사용자가 이를 차단합니다.

    8. 현재 터미널 window를 닫습니다.

      사용자 ralph로 테스트를 마쳤으므로 해당 터미널 창을 닫습니다.

      exit
      

SELinux 부울

SELinux 부울은 SELinux 정책을 작성하는 방법을 몰라도 런타임 시 특정 정책 변경을 허용합니다. Oracle Linux는 많은 내장 부울을 제공하거나 SELinux 정책에 익숙한 관리자가 직접 작성할 수 있습니다. 구현된 정책이 선택 사항인 경우 관리자는 정책을 부울로 작성하는 것이 좋습니다.

  1. 그들의 의미와 함께 부울의 목록을 가져옵니다.

    oracle로 로그인한 터미널로 다시 전환하고 다음 명령을 실행합니다.

    sudo semanage boolean -l
    

    예제 출력:

    SELinux boolean                State  Default Description
    
    abrt_anon_write                (off  ,  off)  Allow abrt to anon write
    abrt_handle_event              (off  ,  off)  Allow abrt to handle event
    abrt_upload_watch_anon_write   (on   ,   on)  Allow abrt to upload watch anon write
    antivirus_can_scan_system      (off  ,  off)  Allow antivirus to can scan system
    antivirus_use_jit              (off  ,  off)  Allow antivirus to use jit
    auditadm_exec_content          (on   ,   on)  Allow auditadm to exec content
    authlogin_nsswitch_use_ldap    (off  ,  off)  Allow authlogin to nsswitch use ldap
    authlogin_radius               (off  ,  off)  Allow authlogin to radius
    ...
    
    • 출력은 각 부울이 수행하는 작업과 사용으로 설정(on) 또는 사용 안함(off) 여부를 설명합니다.
  2. 부울의 목록과 상태를 확인하세요.

    sudo getsebool -a
    

    예제 출력:

    abrt_anon_write --> off
    abrt_handle_event --> off
    abrt_upload_watch_anon_write --> on
    antivirus_can_scan_system --> off
    antivirus_use_jit --> off
    auditadm_exec_content --> on
    authlogin_nsswitch_use_ldap --> off
    authlogin_radius --> off
    authlogin_yubikey --> off
    ...
    
  3. 단일 부울의 상태를 가져옵니다.

    부울 이름이 알려진 경우 이름을 인수로 전달하여 해당 부울 상태만 가져옵니다.

    sudo getsebool virt_use_nfs
    
  4. 부울에 대한 SELinux 정책을 질의합니다.

    SELinux 정책 내에서 부울 트리거가 무엇인지 궁금해본 적이 있습니까? SELinux는 이러한 규칙을 질의하는 유틸리티를 제공합니다.

    sesearch -b virt_use_nfs -A
    

    예제 출력:

    allow fsdaemon_t autofs_t:dir { getattr open search }; [ virt_use_nfs ]:True
    allow fsdaemon_t nfs_t:dir { getattr ioctl lock open read search }; [ virt_use_nfs ]:True
    allow fsdaemon_t nfs_t:dir { getattr ioctl lock open read search }; [ virt_use_nfs ]:True
    allow fsdaemon_t nfs_t:dir { getattr ioctl lock open read search }; [ virt_use_nfs ]:True
    allow fsdaemon_t nfs_t:dir { getattr open search }; [ virt_use_nfs ]:True
    allow fsdaemon_t nfs_t:dir { getattr open search }; [ virt_use_nfs ]:True
    allow fsdaemon_t nfs_t:file { getattr ioctl lock open read }; [ virt_use_nfs ]:True
    allow fsdaemon_t nfs_t:lnk_file { getattr read }; [ virt_use_nfs ]:True
    ...
    
  5. 부울에서 액세스를 허용하는지 질의합니다.

    조건부 부울을 기준으로 특정 액세스가 허용되는지 여부는 어떻습니까? 질문 해답: 사용자 ping이 사용자 도메인(user_t)에서 ping 도메인(ping_t)으로의 전환을 허용합니까?

    sesearch -s user_t -t ping_t -c process -p transition -AT
    

    예제 출력:

    allow user_t ping_t:process transition; [ selinuxuser_ping ]:True
    
    • user_ping SELinux 부울이 사용으로 설정된 경우 전환이 허용됩니다.
  6. 부울을 사용으로 설정합니다.

    KVM이 Samba 공유에 이미지를 저장하도록 허용하시겠습니까? 이것 또한 부울이 있습니다.

    1. 부울을 찾습니다.

      sudo semanage boolean -l | grep virt | grep samba
      

      예제 출력:

      virt_use_samba                 (off  ,  off)  Allow virt to use samba
      
    2. 부울을 enabled로 변경합니다.

      sudo setsebool virt_use_samba on
      

      또는

      sudo semanage boolean -m --on virt_use_samba
      
    3. 현재 상태를 확인합니다.

      getsebool virt_use_samba
      
    4. 재부트 시 변경 사항이 지속되는지 확인합니다.

      sudo setsebool -P virt_use_samba on
      
  7. 로컬 SELinux 정책 사용자정의를 표시합니다.

    기본 설정을 변경했음을 알면 해당 로컬 사용자 정의를 표시할 수 있습니다.

    sudo semanage boolean -l -C
    

    예제 출력:

    SELinux boolean                State  Default Description
    
    virt_use_samba                 (on   ,   on)  Allow virt to use samba
    
    • 출력에는 기본값이 on로 표시됩니다. 스위치를 영구적으로 만들고 보류 중인 값을 디스크의 정책 파일에 기록한 후 기본값이 변경되었습니다.

SELinux 파일 컨텍스트

SELinux를 실행할 때 모든 파일 및 디렉토리에는 SELinux 컨텍스트 레이블이 지정됩니다. 파일 시스템 레이블 지정을 관리하기 위한 몇 가지 명령을 살펴보겠습니다.

익숙한 예로는 Nginx 문서 루트에 대한 새 디렉토리를 만드는 것입니다.

  1. 세 개의 파일과 함께 새 디렉토리를 생성합니다.

    sudo mkdir -p /web
    sudo touch /web/file{1,2,3}
    
  2. 새 디렉토리 및 파일 레이블 지정을 확인합니다.

    ls -lZ /web
    

    예제 출력:

    total 0
    -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file1
    -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file2
    -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file3
    
    • 새 디렉토리의 컨텍스트 유형과 파일은 default_t입니다.

    주: 새로 생성된 파일 및 디렉토리는 상위 디렉토리의 SELinux 유형을 상속합니다.

  3. 임시 레이블을 변경합니다.

    문제 해결 또는 테스트의 일부로 일시적으로 컨텍스트를 변경할 수 있습니다.

    sudo chcon -R -t httpd_sys_content_t /web/
    
    ls -lZ /web
    
  4. 레이블을 기본 설정으로 되돌립니다.

    컨텍스트를 기본 컨텍스트 유형으로 다시 전환합니다.

    sudo restorecon -R -v /web/
    

    예제 출력:

    [oracle@ol-selinux ~]$ sudo restorecon -R -v /web/
    Relabeled /web from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:default_t:s0
    Relabeled /web/file1 from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:default_t:s0
    Relabeled /web/file2 from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:default_t:s0
    Relabeled /web/file3 from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:default_t:s0
    [oracle@ol-selinux ~]$ ls -lZ /web
    total 0
    -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file1
    -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file2
    -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file3
    
  5. 레이블 변경 사항을 영구적으로 적용합니다.

    변경 사항을 영구적으로 적용하고 재부트를 계속하려면 semanage fcontext 명령을 사용합니다. -a/etc/selinux/targeted/contexts/files/file_contexts.local 파일에 레코드를 추가하고 -t는 유형을 정의합니다.

    sudo semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?"
    

    주: semanage fcontext로 SELinux 컨텍스트를 변경할 때 파일 시스템 레이블을 재지정하거나 restorecon를 실행한 후 파일 레이블이 잘못 지정되지 않도록 파일 또는 디렉토리에 대한 전체 경로를 사용하는 것이 좋습니다.

  6. 컨텍스트를 확인하십시오.

    ls -ldZ /web; ls -lZ /web
    

    예제 출력:

    [oracle@ol-selinux ~]$ ls -ldZ /web; ls -lZ /web
    drwxr-xr-x. 2 root root unconfined_u:object_r:default_t:s0 45 Apr 14 19:00 /web
    total 0
    -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file1
    -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file2
    -rw-r--r--. 1 root root unconfined_u:object_r:default_t:s0 0 Apr 14 19:00 file3
    

    컨텍스트가 변경되지 않았으며 예상했던 내용을 확인합니다.

  7. 새로 만든 파일 및 디렉토리의 컨텍스트를 표시합니다.

    sudo semanage fcontext -C -l
    

    예제 출력:

    [oracle@ol-selinux ~]$ sudo semanage fcontext -C -l
    SELinux fcontext                                   type               Context
    
    /web(/.*)?                                         all files          system_u:object_r:httpd_sys_content_t:s0 
    
  8. 컨텍스트에 변경 사항을 적용합니다.

    sudo restorecon -R -v /web
    

    예제 출력:

    [oracle@ol-selinux ~]$ sudo restorecon -R -v /web
    Relabeled /web from unconfined_u:object_r:default_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
    Relabeled /web/file1 from unconfined_u:object_r:default_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
    Relabeled /web/file2 from unconfined_u:object_r:default_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
    Relabeled /web/file3 from unconfined_u:object_r:default_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
    
  9. 새 SELinux 컨텍스트를 제거합니다.

    sudo semanage fcontext -d "/web(/.*)?"
    
    • 이 예제에서는 컨텍스트를 생성할 때 사용되는 정규 표현식을 전달하여 파일의 컨텍스트 레코드 시작 부분에 배치합니다. 정규 표현식이므로 따옴표로 묶습니다.
  10. 변경 사항을 적용하고 default_t로 반환된 컨텍스트를 확인합니다.

    sudo restorecon -R -v /web; ls -ldZ /web; ls -lZ /web
    

표시된 유틸리티는 man 페이지를 확인하십시오. 그런 다음 배운 내용을 사용하여 SELinux를 Enforcing 모드로 유지합니다.

추가 정보

다른 관련 리소스 보기:

추가 학습 자원

docs.oracle.com/learn에서 다른 실습을 살펴보거나 Oracle Learning YouTube 채널에서 보다 무료 학습 컨텐츠에 접근할 수 있습니다. 또한 education.oracle.com/learning-explorer을 방문하여 Oracle Learning Explorer가 됩니다.

제품 설명서는 Oracle Help Center를 참조하십시오.