13.2. 유형


고급 프로세스 격리를 제공하기 위해 SELinux 대상 정책에 사용되는 기본 권한 제어 방법은 Type Enforcement입니다. 모든 파일과 프로세스는 유형으로 레이블이 지정됩니다. type은 프로세스의 SELinux 도메인과 파일의 SELinux 유형을 정의합니다. SELinux 정책 규칙은 유형에 액세스하는 도메인이든 다른 도메인에 액세스하는 도메인이든 관계없이 유형이 서로 액세스하는 방법을 정의합니다. 액세스는 허용하는 특정 SELinux 정책 규칙이 있는 경우에만 허용됩니다.
다음 예제에서는 /var/www/html/ 디렉터리에 새 파일을 생성하고 상위 디렉터리(/var/www/html/)에서 httpd_sys_content_t 유형을 상속하는 파일을 보여줍니다.
  1. 다음 명령을 입력하여 /var/www/html/:의 SELinux 컨텍스트를 확인합니다.
    ~]$ ls -dZ /var/www/html
    drwxr-xr-x  root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html
    
    이는 /var/www/html/httpd_sys_content_t 유형으로 레이블이 지정됩니다.
  2. touch 유틸리티를 root로 사용하여 새 파일을 생성합니다.
    ~]# touch /var/www/html/file1
  3. 다음 명령을 입력하여 SELinux 컨텍스트를 확인합니다.
    ~]$ ls -Z /var/www/html/file1
    -rw-r--r--  root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/file1
    
ls -Z 명령은 httpd_sys_content_t 유형으로 레이블이 지정된 file1 을 표시합니다. SELinux는 httpd 가 이 유형으로 레이블이 지정된 파일을 읽을 수 있도록 허용하지만 Linux 권한이 쓰기 액세스를 허용하는 경우에도 해당 파일에 쓸 수 없습니다. SELinux 정책은 httpd_t 도메인에서 실행되는 프로세스 유형을 정의합니다( httpd 가 실행되는 위치)는 읽고 쓸 수 있습니다. 따라서 프로세스가 다른 프로세스에서 사용할 파일에 액세스하는 것을 방지할 수 있습니다.
예를 들어 httpdhttpd_sys_content_t 유형으로 레이블이 지정된 파일에 액세스할 수 있지만 기본적으로 samba_share_t 유형으로 레이블이 지정된 파일에 액세스할 수 없습니다( Samba로 권장됨). 또한 사용자 홈 디렉터리의 파일은 user_home_t 유형으로 레이블이 지정됩니다. 기본적으로 httpd 가 사용자 홈 디렉터리의 파일을 읽거나 쓰는 것을 방지합니다.
다음은 httpd 와 함께 사용되는 몇 가지 유형을 나열합니다. 다양한 유형을 사용하여 유연한 액세스를 구성할 수 있습니다.
httpd_sys_content_t
정적 웹 사이트에서 사용하는 .html 파일과 같은 정적 웹 콘텐츠에 이 유형을 사용합니다. 이 유형으로 레이블이 지정된 파일은 httpdhttpd 에서 실행하는 스크립트에 액세스할 수 있습니다(읽기 전용). 기본적으로 이 유형으로 레이블이 지정된 파일과 디렉터리는 httpd 또는 기타 프로세스에서 작성하거나 수정할 수 없습니다. 기본적으로 에서 생성되거나 /var/www/html/ 디렉터리에 복사된 파일은 httpd_sys_content_t 유형으로 레이블이 지정됩니다.
httpd_sys_script_exec_t
httpd 를 실행할 스크립트에 이 유형을 사용합니다. 이 유형은 일반적으로 /var/www/cgi-bin/ 디렉터리의 CGI(Common Gateway Interface) 스크립트에 사용됩니다. 기본적으로 SELinux 정책은 httpd 가 CGI 스크립트를 실행하지 못하도록 합니다. 이를 허용하려면 httpd_sys_script_exec_t 유형으로 스크립트에 레이블을 지정하고 httpd_enable_cgi 부울을 활성화합니다. httpd _sys_script_exec_t 로 레이블이 지정된 스크립트는 httpd_sys_script_t 도메인에서 실행됩니다. httpd_sys_script_t 도메인은 postgresql_tmysqld_t 와 같은 다른 시스템 도메인에 액세스할 수 있습니다.
httpd_sys_rw_content_t
이 유형으로 레이블이 지정된 파일은 httpd_sys_script_exec_t 유형으로 레이블이 지정된 스크립트에서 작성할 수 있지만 다른 유형으로 레이블이 지정된 스크립트에서 수정할 수 없습니다. httpd_sys_rw_content_t 유형을 사용하여 httpd_sys_script_exec_t 유형으로 레이블이 지정된 스크립트에서 읽고 쓸 파일에 레이블을 지정해야 합니다.
httpd_sys_ra_content_t
이 유형으로 레이블이 지정된 파일은 httpd_sys_script_exec_t 유형으로 레이블이 지정된 스크립트에서 추가할 수 있지만 다른 유형으로 레이블이 지정된 스크립트에서 수정할 수 없습니다. httpd_sys_ra_content_t 유형을 사용하여 httpd_sys_script_exec_t 유형으로 레이블이 지정된 스크립트에서 읽고 추가할 파일에 레이블을 지정해야 합니다.
httpd_unconfined_script_exec_t
이 유형으로 레이블이 지정된 스크립트는 SELinux 보호 없이 실행됩니다. 다른 모든 옵션을 모두 고갈시킨 후 복잡한 스크립트에만 이 유형을 사용합니다. httpd 또는 전체 시스템에 대해 SELinux 보호를 비활성화하는 대신 이 유형을 사용하는 것이 좋습니다.
참고
httpd에 사용 가능한 유형을 추가하려면 다음 명령을 입력합니다.
~]$ grep httpd /etc/selinux/targeted/contexts/files/file_contexts

절차 13.1. SELinux 컨텍스트 변경

파일 및 디렉토리의 유형은 chcon 명령을 사용하여 변경할 수 있습니다. chcon 을 사용하여 변경한 내용은 파일 시스템의 레이블을 다시 지정하거나 restorecon 명령으로 유지되지 않습니다. SELinux 정책은 사용자가 지정된 파일에 대한 SELinux 컨텍스트를 수정할 수 있는지 여부를 제어합니다. 다음 예제에서는 httpd 에서 사용할 새 디렉터리와 index.html 파일을 생성하고 해당 파일과 디렉터리에 레이블을 지정하여 httpd 액세스를 허용하는 방법을 보여줍니다.
  1. root Cryostat 유틸리티를 사용하여 httpd 에서 사용할 파일을 저장할 최상위 디렉터리 구조를 만듭니다.
    ~]# mkdir -p /my/website
  2. file-context 구성의 패턴과 일치하지 않는 파일 및 디렉터리는 default_t 유형으로 레이블을 지정할 수 있습니다. 이 유형은 제한된 서비스에 액세스할 수 없습니다.
    ~]$ ls -dZ /my
    drwxr-xr-x  root root unconfined_u:object_r:default_t:s0 /my
    
  3. root로 다음 명령을 입력하여 my/ 디렉토리 및 하위 디렉터리의 유형을 httpd 에 액세스할 수 있는 유형으로 변경합니다. 이제 /my/website/ 에서 생성된 파일은 default_t 유형이 아닌 httpd_sys_content_t 유형을 상속하므로 httpd에 액세스할 수 있습니다.
    ~]# chcon -R -t httpd_sys_content_t /my/
    ~]# touch /my/website/index.html
    ~]# ls -Z /my/website/index.html
    -rw-r--r--  root root unconfined_u:object_r:httpd_sys_content_t:s0 /my/website/index.html
    
chcon 에 대한 자세한 내용은 4.7.1절. “임시 변경 사항: chcon” 을 참조하십시오.
semanage fcontext 명령( policycoreutils-python 패키지에서 제공하는semanage )을 사용하여 레이블 재레이블 및 restorecon 명령 후에도 레이블을 변경합니다. 이 명령은 파일 컨텍스트 구성에 변경 사항을 추가합니다. 그런 다음 file-context 구성을 읽는 restorecon 을 실행하여 레이블 변경을 적용합니다. 다음 예제에서는 httpd 에서 사용할 새 디렉터리와 index.html 파일을 생성하고 해당 디렉터리와 파일의 레이블을 지속적으로 변경하여 httpd 액세스를 허용하는 방법을 보여줍니다.
  1. root Cryostat 유틸리티를 사용하여 httpd 에서 사용할 파일을 저장할 최상위 디렉터리 구조를 만듭니다.
    ~]# mkdir -p /my/website
  2. root로 다음 명령을 입력하여 레이블 변경 사항을 파일 컨텍스트 구성에 추가합니다.
    ~]# semanage fcontext -a -t httpd_sys_content_t "/my(/.*)?"
    "/my(/.*)?" 표현식은 레이블 변경이 my/ 디렉토리와 그 아래의 모든 파일과 디렉터리에 적용됨을 의미합니다.
  3. touch 유틸리티를 root로 사용하여 새 파일을 생성합니다.
    ~]# touch /my/website/index.html
  4. root로 다음 명령을 입력하여 레이블 변경 사항을 적용합니다.restorecon 은 2단계에서 semanage 명령으로 수정된 file-context 구성을 읽습니다.
    ~]# restorecon -R -v /my/
    restorecon reset /my context unconfined_u:object_r:default_t:s0->system_u:object_r:httpd_sys_content_t:s0
    restorecon reset /my/website context unconfined_u:object_r:default_t:s0->system_u:object_r:httpd_sys_content_t:s0
    restorecon reset /my/website/index.html context unconfined_u:object_r:default_t:s0->system_u:object_r:httpd_sys_content_t:s0
    
semanage에 대한 자세한 내용은 4.7.2절. “영구적인 변경 사항: semanage fcontext” 을 참조하십시오.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat, Inc.