4.7. SELinux 컨텍스트 - 파일 레이블 지정


SELinux를 실행하는 시스템에서는 보안 관련 정보를 나타내는 방식으로 모든 프로세스와 파일에 레이블이 지정됩니다. 이 정보를 SELinux 컨텍스트라고 합니다. 파일의 경우 ls -Z 명령을 사용하여 확인할 수 있습니다.
~]$ ls -Z file1
-rw-rw-r--  user1 group1 unconfined_u:object_r:user_home_t:s0 file1
Copy to Clipboard Toggle word wrap
이 예에서 SELinux는 사용자(unconfined_u), 역할(object_r), 유형(user_home_t) 및 수준(s0)을 제공합니다. 이 정보는 액세스 제어 결정을 내리는 데 사용됩니다. DAC 시스템에서는 Linux 사용자 및 그룹 ID를 기반으로 액세스가 제어됩니다. SELinux 정책 규칙은 DAC 규칙 후에 확인됩니다. DAC 규칙이 먼저 액세스를 거부하면 SELinux 정책 규칙이 사용되지 않습니다.
참고
기본적으로 새로 생성된 파일과 디렉터리는 상위 디렉터리의 SELinux 유형을 상속합니다. 예를 들어 /etc 디렉토리에 etc_t 유형으로 레이블이 지정된 새 파일을 생성할 때 새 파일은 동일한 유형을 상속합니다.
~]$ ls -dZ - /etc
drwxr-xr-x. root root system_u:object_r:etc_t:s0       /etc
Copy to Clipboard Toggle word wrap
~]# touch /etc/file1
Copy to Clipboard Toggle word wrap
~]# ls -lZ /etc/file1
-rw-r--r--. root root unconfined_u:object_r:etc_t:s0   /etc/file1
Copy to Clipboard Toggle word wrap
SELinux는 chcon,semanage fcontext,restorecon, matchpathcon 과 같은 파일 시스템 레이블링을 관리하기 위한 여러 명령을 제공합니다.

4.7.1. 임시 변경 사항: chcon

chcon 명령은 파일의 SELinux 컨텍스트를 변경합니다. 그러나 chcon 명령을 사용하여 변경한 내용은 파일 시스템 재레이블 또는 restorecon 명령 실행 시 지속되지 않습니다. SELinux 정책은 사용자가 지정된 파일에 대한 SELinux 컨텍스트를 수정할 수 있는지 여부를 제어합니다. chcon 을 사용하는 경우 사용자는 SELinux 컨텍스트의 전부 또는 일부를 제공하여 변경합니다. 잘못된 파일 유형은 액세스를 거부하는 SELinux의 일반적인 원인입니다.

참고 자료

  • chcon -t 유형 file-name 명령을 실행하여 파일 유형을 변경합니다. 여기서 type 은 SELinux 유형(예: httpd_sys_content_t )이며 file-name 은 파일 또는 디렉터리 이름입니다.
    ~]$ chcon -t httpd_sys_content_t file-name
    Copy to Clipboard Toggle word wrap
  • chcon -R -t 유형 directory-name 명령을 실행하여 디렉터리 및 해당 콘텐츠의 유형을 변경합니다. 여기서 type 은 SELinux 유형(예: httpd_sys_content_t )이고 directory-name 은 디렉터리 이름입니다.
    ~]$ chcon -R -t httpd_sys_content_t directory-name
    Copy to Clipboard Toggle word wrap

절차 4.6. 파일 또는 디렉토리 유형 변경

다음 절차에서는 유형 및 SELinux 컨텍스트의 다른 특성을 변경하는 방법을 보여줍니다. 이 섹션의 예제는 디렉터리(예: file1 이 디렉터리인 경우)에 대해 동일하게 작동합니다.
  1. 홈 디렉터리로 변경합니다.
  2. 새 파일을 생성하고 SELinux 컨텍스트를 봅니다.
    ~]$ touch file1
    Copy to Clipboard Toggle word wrap
    ~]$ ls -Z file1
    -rw-rw-r--  user1 group1 unconfined_u:object_r:user_home_t:s0 file1
    
    Copy to Clipboard Toggle word wrap
    이 예에서 file1 에 대한 SELinux 컨텍스트에는 SELinux unconfined_u 사용자, object_r 역할, user_home_t 유형 및 s0 수준이 포함됩니다. SELinux 컨텍스트의 각 부분에 대한 설명은 2장. SELinux 컨텍스트 의 내용을 참조하십시오.
  3. 다음 명령을 입력하여 유형을 samba_share_t 로 변경합니다. t 옵션은 유형만 변경합니다. 그런 다음 변경 사항을 확인합니다.
    ~]$ chcon -t samba_share_t file1
    Copy to Clipboard Toggle word wrap
    ~]$ ls -Z file1 
    -rw-rw-r--  user1 group1 unconfined_u:object_r:samba_share_t:s0 file1
    
    Copy to Clipboard Toggle word wrap
  4. 다음 명령을 사용하여 file1 파일의 SELinux 컨텍스트를 복원합니다. v 옵션을 사용하여 변경 사항을 확인하십시오.
    ~]$ restorecon -v file1
    restorecon reset file1 context unconfined_u:object_r:samba_share_t:s0->system_u:object_r:user_home_t:s0
    
    Copy to Clipboard Toggle word wrap
    이 예에서 이전 유형 samba_share_t 는 올바른 user_home_t 유형으로 복원됩니다. 대상 정책(Red Hat Enterprise Linux의 기본 SELinux 정책)을 사용하는 경우 restorecon 명령은 /etc/selinux/targeted/contexts/files/ 디렉터리에 있는 파일을 읽고 어떤 SELinux 컨텍스트 파일이 있어야 하는지 확인합니다.

절차 4.7. 디렉토리 및 콘텐츠 유형 변경

다음 예제에서는 새 디렉터리를 만들고 디렉터리의 파일 유형을 Apache HTTP 서버에서 사용하는 유형으로 변경하는 방법을 보여줍니다. 이 예제의 구성은 Apache HTTP Server에서 다른 문서 루트( /var/www/html/대신)를 사용하도록 하는 경우 사용됩니다.
  1. root 사용자로 이 디렉터리에 새 web/ 디렉토리를 만들고 3개의 빈 파일(file1,file2file3)을 만듭니다. 이 디렉터리의 web/ 디렉터리 및 파일은 default_t 유형으로 레이블이 지정됩니다.
    ~]# mkdir /web
    Copy to Clipboard Toggle word wrap
    ~]# touch /web/file{1,2,3}
    Copy to Clipboard Toggle word wrap
    ~]# ls -dZ /web
    drwxr-xr-x  root root unconfined_u:object_r:default_t:s0 /web
    
    Copy to Clipboard Toggle word wrap
    ~]# ls -lZ /web
    -rw-r--r--  root root unconfined_u:object_r:default_t:s0 file1
    -rw-r--r--  root root unconfined_u:object_r:default_t:s0 file2
    -rw-r--r--  root root unconfined_u:object_r:default_t:s0 file3
    
    Copy to Clipboard Toggle word wrap
  2. root 로서 다음 명령을 입력하여 웹/ 디렉터리(및 해당 콘텐츠)의 유형을 httpd_sys_content_t 로 변경합니다.
    ~]# chcon -R -t httpd_sys_content_t /web/
    Copy to Clipboard Toggle word wrap
    ~]# ls -dZ /web/
    drwxr-xr-x  root root unconfined_u:object_r:httpd_sys_content_t:s0 /web/
    
    Copy to Clipboard Toggle word wrap
    ~]# ls -lZ /web/
    -rw-r--r--  root root unconfined_u:object_r:httpd_sys_content_t:s0 file1
    -rw-r--r--  root root unconfined_u:object_r:httpd_sys_content_t:s0 file2
    -rw-r--r--  root root unconfined_u:object_r:httpd_sys_content_t:s0 file3
    
    Copy to Clipboard Toggle word wrap
  3. 기본 SELinux 컨텍스트를 복원하려면 restorecon 유틸리티를 root로 사용합니다.
    ~]# restorecon -R -v /web/
    restorecon reset /web context unconfined_u:object_r:httpd_sys_content_t:s0->system_u:object_r:default_t:s0
    restorecon reset /web/file2 context unconfined_u:object_r:httpd_sys_content_t:s0->system_u:object_r:default_t:s0
    restorecon reset /web/file3 context unconfined_u:object_r:httpd_sys_content_t:s0->system_u:object_r:default_t:s0
    restorecon reset /web/file1 context unconfined_u:object_r:httpd_sys_content_t:s0->system_u:object_r:default_t:s0
    
    Copy to Clipboard Toggle word wrap
chcon 에 대한 자세한 내용은 chcon(1) 도움말 페이지를 참조하십시오.
참고
유형 적용은 SELinux 대상 정책에 사용되는 기본 권한 제어입니다. 대부분의 경우 SELinux 사용자 및 역할은 무시할 수 있습니다.

4.7.2. 영구적인 변경 사항: semanage fcontext

semanage fcontext 명령은 파일의 SELinux 컨텍스트를 변경하는 데 사용됩니다. 새로 생성된 파일 및 디렉터리에 대한 컨텍스트를 표시하려면 root로 다음 명령을 입력합니다.
~]# semanage fcontext -C -l
Copy to Clipboard Toggle word wrap
semanage fcontext 의 변경 사항은 다음 유틸리티에서 사용합니다. setfiles 유틸리티는 파일 시스템의 레이블을 다시 지정하고 restorecon 유틸리티가 기본 SELinux 컨텍스트를 복원할 때 사용됩니다. 즉, 파일 시스템의 레이블을 다시 지정하는 경우에도 semanage fcontext 로 변경한 사항이 지속됩니다. SELinux 정책은 사용자가 지정된 파일에 대한 SELinux 컨텍스트를 수정할 수 있는지 여부를 제어합니다.

참고 자료

파일 시스템 레이블 변경 후에도 유지되는 SELinux 컨텍스트 변경을 수행하려면 다음을 수행합니다.
  1. 파일 또는 디렉토리의 전체 경로를 사용하도록 다음 명령을 입력합니다.
    ~]# semanage fcontext -a options file-name|directory-name
    Copy to Clipboard Toggle word wrap
  2. restorecon 유틸리티를 사용하여 컨텍스트 변경 사항을 적용합니다.
    ~]# restorecon -v file-name|directory-name
    Copy to Clipboard Toggle word wrap

semanage fcontext와 함께 정규 표현식 사용

semanage fcontext 명령이 올바르게 작동하려면 정규화된 경로 또는 PCRE( Perl 호환 정규식) 를 사용할 수 있습니다. 사용 중인 유일한 PCRE 플래그는 PCRE2_DOTALL 이므로 와일드카드가 새 행을 포함하여 모든 항목과 일치합니다 . 경로를 나타내는 문자열은 바이트로 처리됩니다. 즉 ASCII가 아닌 문자는 단일 와일드카드와 일치하지 않습니다.
semanage fcontext 를 사용하여 지정된 파일 컨텍스트 정의는 정의 방법에 대한 역순으로 평가됩니다. 최신 항목은 제로 길이에 관계없이 먼저 평가됩니다. file_contexts.local 에 저장된 로컬 파일 컨텍스트 수정은 정책 모듈에 지정된 것보다 우선 순위가 높습니다. 즉, file_contexts.local 에서 지정된 파일 경로에 대한 일치가 발견될 때마다 다른 파일 컨텍스트 정의는 고려되지 않습니다.
중요
semanage fcontext 명령을 사용하여 지정된 파일 컨텍스트 정의는 다른 모든 file-context 정의를 효과적으로 재정의합니다. 따라서 모든 정규 표현식은 의도치 않게 파일 시스템의 다른 부분에 영향을 주지 않도록 가능한 한 구체적이어야 합니다.
file-context 정의 및 적용되는 플래그에 사용되는 정규식 유형에 대한 자세한 내용은 semanage-fcontext(8) 도움말 페이지를 참조하십시오.

절차 4.8. 파일 또는 디렉토리 유형 변경

다음 예제에서는 파일 유형 및 SELinux 컨텍스트의 다른 특성을 변경하는 방법을 보여줍니다. 이 예제는 디렉터리(예: file1 이 디렉터리인 경우)에 대해 동일하게 작동합니다.
  1. root 사용자로 /etc 디렉토리에 새 파일을 만듭니다. 기본적으로 /etc 에서 새로 생성된 파일은 etc_t 유형으로 레이블이 지정됩니다.
    ~]# touch /etc/file1
    Copy to Clipboard Toggle word wrap
    ~]$ ls -Z /etc/file1
    -rw-r--r--  root root unconfined_u:object_r:etc_t:s0       /etc/file1
    
    Copy to Clipboard Toggle word wrap
    디렉터리에 대한 정보를 나열하려면 다음 명령을 사용합니다.
    ~]$ ls -dZ directory_name
    Copy to Clipboard Toggle word wrap
  2. root 로 다음 명령을 입력하여 file1 유형을 samba_share_t 로 변경합니다. a 옵션은 새 레코드를 추가하고 -t 옵션은 유형(samba_share_t)을 정의합니다. 이 명령을 실행하면 유형이 직접 변경되지 않습니다. file1 은 여전히 etc_t 유형으로 레이블이 지정됩니다.
    ~]# semanage fcontext -a -t samba_share_t /etc/file1
    Copy to Clipboard Toggle word wrap
    ~]# ls -Z /etc/file1
    -rw-r--r--  root root unconfined_u:object_r:etc_t:s0       /etc/file1
    
    Copy to Clipboard Toggle word wrap
    ~]$ semanage fcontext -C -l
    /etc/file1    unconfined_u:object_r:samba_share_t:s0
    
    Copy to Clipboard Toggle word wrap
  3. root 로서 restorecon 유틸리티를 사용하여 유형을 변경합니다. semanage/etc/file1file_contexts.local 에 항목을 추가했기 때문에restorecon 은 유형을 samba_share_t:로 변경합니다.
    ~]# restorecon -v /etc/file1
    restorecon reset /etc/file1 context unconfined_u:object_r:etc_t:s0->system_u:object_r:samba_share_t:s0
    
    Copy to Clipboard Toggle word wrap

절차 4.9. 디렉토리 및 콘텐츠 유형 변경

다음 예제에서는 새 디렉터리를 만들고 디렉터리의 파일 유형을 해당 내용과 함께 Apache HTTP 서버에서 사용하는 유형으로 변경하는 방법을 보여줍니다. 이 예제의 구성은 Apache HTTP Server에서 /var/www/html/: 대신 다른 문서 루트를 사용하도록 하려는 경우 사용됩니다.
  1. root 사용자로 이 디렉터리에 새 web/ 디렉토리를 만들고 3개의 빈 파일(file1,file2file3)을 만듭니다. 이 디렉터리의 web/ 디렉터리 및 파일은 default_t 유형으로 레이블이 지정됩니다.
    ~]# mkdir /web
    Copy to Clipboard Toggle word wrap
    ~]# touch /web/file{1,2,3}
    Copy to Clipboard Toggle word wrap
    ~]# ls -dZ /web
    drwxr-xr-x  root root unconfined_u:object_r:default_t:s0 /web
    
    Copy to Clipboard Toggle word wrap
    ~]# ls -lZ /web
    -rw-r--r--  root root unconfined_u:object_r:default_t:s0 file1
    -rw-r--r--  root root unconfined_u:object_r:default_t:s0 file2
    -rw-r--r--  root root unconfined_u:object_r:default_t:s0 file3
    
    Copy to Clipboard Toggle word wrap
  2. root 로서 다음 명령을 입력하여 웹/ 디렉터리의 유형과 해당 디렉터리의 파일을 httpd_sys_content_t 로 변경합니다. a 옵션은 새 레코드를 추가하고 -t 옵션은 유형(httpd_sys_content_t)을 정의합니다. "/web(/.*)?" 정규식으로 인해 semanage웹/ 에도 변경 사항을 적용하고 해당 파일에 변경 사항을 적용합니다. 이 명령을 실행하면 유형이 직접 변경되지 않습니다. 그 안에 있는 web/ 및 파일은 여전히 default_t 유형으로 레이블이 지정됩니다.
    ~]# semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?"
    Copy to Clipboard Toggle word wrap
    ~]$ ls -dZ /web
    drwxr-xr-x  root root unconfined_u:object_r:default_t:s0 /web
    
    Copy to Clipboard Toggle word wrap
    ~]$ ls -lZ /web
    -rw-r--r--  root root unconfined_u:object_r:default_t:s0 file1
    -rw-r--r--  root root unconfined_u:object_r:default_t:s0 file2
    -rw-r--r--  root root unconfined_u:object_r:default_t:s0 file3
    
    Copy to Clipboard Toggle word wrap
    semanage fcontext -a -t httpd_sys_content_t "/web(/.*)?" 명령은 /etc/selinux/targeted/contexts/files/file_contexts.local 에 다음 항목을 추가합니다.
    /web(/.*)?    system_u:object_r:httpd_sys_content_t:s0
    
    Copy to Clipboard Toggle word wrap
  3. root 로서 restorecon 유틸리티를 사용하여 web/ 의 유형 및 해당 파일의 모든 파일을 변경합니다. R 은 재귀를 위한 것입니다. 즉, web/ 아래의 모든 파일과 디렉터리가 httpd_sys_content_t 유형으로 레이블이 지정됩니다. semanage/web(/.*)의 file.contexts.local 에 항목을 추가했기 때문에 restorecon 은 유형을 httpd_sys_content_t 로 변경합니다.
    ~]# restorecon -R -v /web
    restorecon reset /web context unconfined_u:object_r:default_t:s0->system_u:object_r:httpd_sys_content_t:s0
    restorecon reset /web/file2 context unconfined_u:object_r:default_t:s0->system_u:object_r:httpd_sys_content_t:s0
    restorecon reset /web/file3 context unconfined_u:object_r:default_t:s0->system_u:object_r:httpd_sys_content_t:s0
    restorecon reset /web/file1 context unconfined_u:object_r:default_t:s0->system_u:object_r:httpd_sys_content_t:s0
    
    Copy to Clipboard Toggle word wrap
    기본적으로 새로 생성된 파일과 디렉터리는 상위 디렉터리의 SELinux 유형을 상속받습니다.

절차 4.10. 추가된 컨텍스트 삭제

다음 예제에서는 SELinux 컨텍스트 추가 및 제거를 보여줍니다. 컨텍스트가 정규식의 일부인 경우 /web(/.*)?? 에서는 정규식 주위에 따옴표를 사용합니다.
~]# semanage fcontext -d "/web(/.*)?"
Copy to Clipboard Toggle word wrap
  1. 컨텍스트를 제거하려면 root로 다음 명령을 입력합니다. 여기서 file-name|directory-namefile_contexts.local 의 첫 번째 부분입니다.
    ~]# semanage fcontext -d file-name|directory-name
    Copy to Clipboard Toggle word wrap
    다음은 file_contexts.local 의 컨텍스트의 예입니다.
    /test    system_u:object_r:httpd_sys_content_t:s0
    
    Copy to Clipboard Toggle word wrap
    첫 번째 부분은 시험 입니다. restorecon 을 실행한 후 또는 파일 시스템 재레이블 후 test/ 디렉터리의 레이블이 httpd_sys_content_t 로 레이블이 지정되지 않도록 하려면 root로 다음 명령을 입력하여 file_contexts.local 에서 컨텍스트를 삭제합니다.
    ~]# semanage fcontext -d /test
    Copy to Clipboard Toggle word wrap
  2. root 로 restorecon 유틸리티를 사용하여 기본 SELinux 컨텍스트를 복원합니다.
semanage 에 대한 자세한 내용은 semanage(8)semanage-fcontext(8) 매뉴얼 페이지를 참조하십시오.
중요
semanage fcontext -a 로 SELinux 컨텍스트를 변경할 때 파일 또는 디렉토리의 전체 경로를 사용하여 파일 시스템 재레이블 후 또는 restorecon 명령을 실행한 후 파일의 레이블을 잘못 지정하지 않도록 합니다.

4.7.3. 파일 문맥을 확인하는 방법

파일 컨텍스트 확인은 시스템 보안 정책( .fc 파일)에 지정된 파일 컨텍스트 정의를 기반으로 합니다. 시스템 정책에 따라 semanagefile_contexts.homedirsfile_contexts 파일을 생성합니다.
시스템 관리자는 semanage fcontext 명령을 사용하여 파일 컨텍스트 정의를 사용자 지정할 수 있습니다. 이러한 사용자 지정은 file_contexts.local 파일에 저장됩니다.
matchpathcon 또는 restorecon 과 같은 레이블링 유틸리티에서 지정된 경로에 대한 적절한 레이블을 결정하는 경우 먼저 로컬 변경 사항(file_contexts.local)을 검색합니다. 유틸리티에서 일치하는 패턴을 찾지 못하면 file_contexts.homedirs 파일과 file_contexts 파일을 검색합니다. 그러나 지정된 파일 경로와 일치하는 항목이 있을 때마다 검색이 종료되고 유틸리티는 추가 파일 컨텍스트 정의를 찾습니다. 즉, 홈 디렉터리 관련 파일 컨텍스트가 나머지보다 우선 순위가 높으며 로컬 사용자 지정은 시스템 정책을 재정의합니다.
시스템 정책 ( file_contexts.homedirsfile_contexts 파일의 콘텐츠)에 의해 지정된 파일 컨텍스트 정의는 평가 전의 줄임표(모든 와일드카드 이전 경로) 길이로 정렬됩니다. 이는 가장 구체적인 경로가 선택됨을 의미합니다. 그러나 semanage fcontext 를 사용하여 지정된 파일 컨텍스트 정의는 정의 방법에 대한 역순으로 평가됩니다. 최신 항목은 영 길이에 관계없이 먼저 평가됩니다.
자세한 내용은 다음을 참조하십시오.
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2026 Red Hat
맨 위로 이동