4.10. SELinux 레이블 유지 관리


이 섹션에서는 파일 및 디렉터리를 복사, 이동 및 보관할 때 SELinux 컨텍스트에 발생하는 사항에 대해 설명합니다. 또한 복사 및 보관 시 컨텍스트를 보존하는 방법을 설명합니다.

4.10.1. 파일 및 디렉토리 복사

파일 또는 디렉터리가 복사되면 새 파일 또는 디렉터리가 없는 경우 새로 생성됩니다. 새 파일 또는 디렉터리의 컨텍스트는 원래 컨텍스트를 유지하는 데 옵션을 사용하지 않는 한 원본 파일이나 디렉터리의 컨텍스트가 아닌 기본 레이블 규칙을 기반으로 합니다. 예를 들어 사용자 홈 디렉터리에 생성된 파일은 user_home_t 유형으로 레이블이 지정됩니다.
~]$ 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
이러한 파일이 /etc 와 같은 다른 디렉터리에 복사되는 경우 새 파일이 /etc 의 기본 레이블 지정 규칙에 따라 생성됩니다. 추가 옵션 없이 파일을 복사하면 원래 컨텍스트가 유지되지 않을 수 있습니다.
~]$ ls -Z file1
-rw-rw-r--  user1 group1 unconfined_u:object_r:user_home_t:s0 file1
Copy to Clipboard Toggle word wrap
~]# cp file1 /etc/
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
file1/etc 에 복사되면 /etc/file1 이 없으면 /etc/file1 이 새 파일로 생성됩니다. 위의 예에 표시된 대로 /etc/file1 은 default-labeling 규칙에 따라 etc_t 유형으로 레이블이 지정됩니다.
사용자가 원래 파일의 컨텍스트(예: --preserve=context )를 유지하지 않는 한 기존 파일의 컨텍스트를 기존 파일의 컨텍스트를 복사하면 기존 파일의 컨텍스트가 유지됩니다. SELinux 정책은 복사 중에 컨텍스트가 유지되지 않도록 할 수 있습니다.

절차 4.11. SELinux 컨텍스트를 보존하지 않고 복사

이 절차에서는 cp 명령으로 파일을 복사할 때 옵션이 제공되지 않으면 유형이 대상 상위 디렉터리에서 상속됨을 보여줍니다.
  1. 사용자의 홈 디렉터리에서 파일을 만듭니다. 파일에는 user_home_t 유형으로 레이블이 지정됩니다.
    ~]$ 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
  2. /var/www/html/ 디렉터리는 다음 명령과 같이 httpd_sys_content_t 유형으로 레이블이 지정됩니다.
    ~]$ ls -dZ /var/www/html/
    drwxr-xr-x  root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
    
    Copy to Clipboard Toggle word wrap
  3. file1/var/www/html/ 에 복사되면 httpd_sys_content_t 유형을 상속합니다.
    ~]# cp file1 /var/www/html/
    Copy to Clipboard Toggle word wrap
    ~]$ ls -Z /var/www/html/file1
    -rw-r--r--  root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/file1
    
    Copy to Clipboard Toggle word wrap

절차 4.12. 복사 시 SELinux 컨텍스트 보존

다음 절차에서는 복사 시 컨텍스트를 보존하기 위해 --preserve=context 옵션을 사용하는 방법을 보여줍니다.
  1. 사용자의 홈 디렉터리에서 파일을 만듭니다. 파일에는 user_home_t 유형으로 레이블이 지정됩니다.
    ~]$ 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
  2. /var/www/html/ 디렉터리는 다음 명령과 같이 httpd_sys_content_t 유형으로 레이블이 지정됩니다.
    ~]$ ls -dZ /var/www/html/
    drwxr-xr-x  root root system_u:object_r:httpd_sys_content_t:s0 /var/www/html/
    
    Copy to Clipboard Toggle word wrap
  3. preserve =context 옵션을 사용하면 복사 작업 중에 SELinux 컨텍스트가 유지됩니다. 아래 표시된 대로 파일이 /var/www/html/:에 복사될 때 file1user_home_t 유형이 보존되었습니다.
    ~]# cp --preserve=context file1 /var/www/html/
    Copy to Clipboard Toggle word wrap
    ~]$ ls -Z /var/www/html/file1
    -rw-r--r--  root root unconfined_u:object_r:user_home_t:s0 /var/www/html/file1
    
    Copy to Clipboard Toggle word wrap

절차 4.13. 문맥 복사 및 변경

다음 절차에서는 --context 옵션을 사용하여 대상 복사의 컨텍스트를 변경하는 방법을 보여줍니다. 다음 예는 사용자의 홈 디렉터리에서 수행됩니다.
  1. 사용자의 홈 디렉터리에서 파일을 만듭니다. 파일에는 user_home_t 유형으로 레이블이 지정됩니다.
    ~]$ 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
  2. context 옵션을 사용하여 SELinux 컨텍스트를 정의합니다.
    ~]$ cp --context=system_u:object_r:samba_share_t:s0 file1 file2
    Copy to Clipboard Toggle word wrap
  3. --context 가 없으면file2unconfined_u:object_r:user_home_t 컨텍스트로 레이블이 지정됩니다.
    ~]$ ls -Z file1 file2
    -rw-rw-r--  user1 group1 unconfined_u:object_r:user_home_t:s0 file1
    -rw-rw-r--  user1 group1 system_u:object_r:samba_share_t:s0 file2
    
    Copy to Clipboard Toggle word wrap

절차 4.14. 기존 파일에서 파일 복사

이 절차에서는 컨텍스트를 보존하는 데 옵션을 사용하지 않는 한 기존 파일을 통해 파일을 복사할 때 기존 파일의 컨텍스트가 보존되는 것을 보여줍니다.
  1. root 로서 /etc 디렉토리에 새 파일 file1 을 만듭니다. 아래에 표시된 대로 파일에는 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
  2. /tmp 디렉터리에 다른 file2 파일을 생성합니다. 아래 표시된 대로 파일에는 user_tmp_t 유형으로 레이블이 지정됩니다.
    ~]$ touch /tmp/file2
    Copy to Clipboard Toggle word wrap
    ~$ ls -Z /tmp/file2
    -rw-r--r--  root root unconfined_u:object_r:user_tmp_t:s0 /tmp/file2
    
    Copy to Clipboard Toggle word wrap
  3. file2file1 을 덮어씁니다.
    ~]# cp /tmp/file2 /etc/file1
    Copy to Clipboard Toggle word wrap
  4. 복사 후 다음 명령은 /etc/ file1 을 대체하는 /tmp/file2user_tmp_t 유형이 아닌 etc_t 유형으로 레이블이 지정된 file1을 표시합니다.
    ~]$ ls -Z /etc/file1
    -rw-r--r--  root root unconfined_u:object_r:etc_t:s0   /etc/file1
    
    Copy to Clipboard Toggle word wrap
중요
파일 및 디렉터리를 이동하지 않고 복사합니다. 이렇게 하면 올바른 SELinux 컨텍스트로 레이블이 지정되도록 하는 데 도움이 됩니다. 잘못된 SELinux 컨텍스트는 프로세스가 해당 파일 및 디렉터리에 액세스하지 못하도록 할 수 있습니다.

4.10.2. 파일 및 디렉토리 이동

파일과 디렉토리는 이동 시 현재 SELinux 컨텍스트를 유지합니다. 대부분의 경우 이 동작은 이동 중인 위치에 대해 올바르지 않습니다. 다음 예제에서는 사용자의 홈 디렉터리에서 Apache HTTP Server에서 사용하는 /var/www/html/ 디렉터리로 파일을 이동하는 방법을 보여줍니다. 파일이 이동되었으므로 올바른 SELinux 컨텍스트를 상속하지 않습니다.

절차 4.15. 파일 및 디렉토리 이동

  1. 홈 디렉터리로 변경하고 파일을 만듭니다. 파일에는 user_home_t 유형으로 레이블이 지정됩니다.
    ~]$ 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
  2. 다음 명령을 입력하여 /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/
    
    Copy to Clipboard Toggle word wrap
    기본적으로 /var/www/html/ 은/는 httpd_sys_content_t 유형으로 레이블이 지정됩니다. /var/www/html/ 에서 생성된 파일 및 디렉터리는 이 유형을 상속하므로 이 유형으로 레이블이 지정됩니다.
  3. root 로서 file1/var/www/html/ 로 이동합니다. 이 파일이 이동되므로 현재 user_home_t 유형이 유지됩니다.
    ~]# mv file1 /var/www/html/
    Copy to Clipboard Toggle word wrap
    ~]# ls -Z /var/www/html/file1
    -rw-rw-r--  user1 group1 unconfined_u:object_r:user_home_t:s0 /var/www/html/file1
    
    Copy to Clipboard Toggle word wrap
기본적으로 Apache HTTP 서버는 user_home_t 유형으로 레이블이 지정된 파일을 읽을 수 없습니다. 웹 페이지를 포함하는 모든 파일에 user_home_t 유형으로 레이블이 지정되거나 Apache HTTP Server에서 읽을 수 없는 다른 유형이 있는 경우 Mozilla Firefox 와 같은 웹 브라우저를 사용하여 액세스하려고 할 때 권한이 거부됩니다.
중요
mv 명령을 사용하여 파일과 디렉터리를 이동하면 잘못된 SELinux 컨텍스트가 발생하여 Apache HTTP Server 및 Samba와 같은 프로세스가 이러한 파일 및 디렉터리에 액세스하지 못할 수 있습니다.

4.10.3. 기본 SELinux 컨텍스트 확인

matchpathcon 유틸리티를 사용하여 파일과 디렉터리에 올바른 SELinux 컨텍스트가 있는지 확인합니다. 이 유틸리티는 시스템 정책을 쿼리한 다음 파일 경로와 연결된 기본 보안 컨텍스트를 제공합니다.[6] 다음 예제에서는 matchpathcon 을 사용하여 /var/www/html/ 디렉터리의 파일에 올바르게 레이블이 지정되어 있는지 확인하는 방법을 보여줍니다.

절차 4.16. matchpathcon으로 기본 SELinux Conxtext 확인

  1. root 사용자로 /var/www/html/ 디렉터리에 세 개의 파일(file1,file2, file3)을 만듭니다. 이러한 파일은 /var/www/html/:의 httpd_sys_content_t 유형을 상속합니다.
    ~]# touch /var/www/html/file{1,2,3}
    Copy to Clipboard Toggle word wrap
    ~]# ls -Z /var/www/html/
    -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
  2. root 로서 file1 유형을 samba_share_t 로 변경합니다. Apache HTTP Server는 samba_share_t 유형으로 레이블이 지정된 파일 또는 디렉터리를 읽을 수 없습니다.
    ~]# chcon -t samba_share_t /var/www/html/file1
    Copy to Clipboard Toggle word wrap
  3. matchpathcon -V 옵션은 현재 SELinux 컨텍스트를 SELinux 정책의 올바른 기본 컨텍스트와 비교합니다. 다음 명령을 입력하여 /var/www/html/ 디렉터리의 모든 파일을 확인합니다.
    ~]$ matchpathcon -V /var/www/html/*
    /var/www/html/file1 has context unconfined_u:object_r:samba_share_t:s0, should be system_u:object_r:httpd_sys_content_t:s0
    /var/www/html/file2 verified.
    /var/www/html/file3 verified.
    
    Copy to Clipboard Toggle word wrap
matchpathcon 명령의 다음 출력에서는 file1samba_share_t 유형으로 레이블이 지정되었지만 httpd_sys_content_t 유형으로 레이블이 지정되어야 함을 설명합니다.
/var/www/html/file1 has context unconfined_u:object_r:samba_share_t:s0, should be system_u:object_r:httpd_sys_content_t:s0
Copy to Clipboard Toggle word wrap
레이블 문제를 해결하고 file1 에 대한 Apache HTTP Server 액세스를 허용하려면 root로 restorecon 유틸리티를 사용합니다.
~]# restorecon -v /var/www/html/file1
restorecon reset /var/www/html/file1 context unconfined_u:object_r:samba_share_t:s0->system_u:object_r:httpd_sys_content_t:s0
Copy to Clipboard Toggle word wrap

4.10.4. tar로 파일 아카이브

tar 유틸리티는 기본적으로 확장된 속성을 유지하지 않습니다. SELinux 컨텍스트는 확장된 특성에 저장되므로 파일을 보관할 때 컨텍스트가 손실될 수 있습니다. tar --selinux 명령을 사용하여 컨텍스트를 유지하고 아카이브에서 파일을 복원하는 아카이브를 생성합니다. tar 아카이브에 확장 속성이 없는 파일이 포함되어 있거나 확장된 속성이 시스템 기본값과 일치하도록 하려면 restorecon 유틸리티를 사용합니다.
~]$ tar -xvf archive.tar | restorecon -f -
Copy to Clipboard Toggle word wrap
디렉터리에 따라 restorecon 을 실행하려면 root 사용자여야 할 수 있습니다.
다음 예제에서는 SELinux 컨텍스트를 유지하는 tar 아카이브를 생성하는 방법을 보여줍니다.

절차 4.17. tar 아카이브 만들기

  1. /var/www/html/ 디렉터리로 변경하고 SELinux 컨텍스트를 확인합니다.
    ~]$ cd /var/www/html/
    Copy to Clipboard Toggle word wrap
    html]$ ls -dZ /var/www/html/
    drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 .
    Copy to Clipboard Toggle word wrap
  2. root 로서 /var/www/html/ 에 세 개의 파일(file1,file2, file3)을 만듭니다. 이러한 파일은 /var/www/html/:의 httpd_sys_content_t 유형을 상속합니다.
    html]# touch file{1,2,3}
    Copy to Clipboard Toggle word wrap
    html]$ ls -Z /var/www/html/
    -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. root 로 다음 명령을 입력하여 test. tar 이라는 tar 아카이브를 만듭니다. SELinux 컨텍스트를 유지하려면 --selinux 를 사용합니다.
    html]# tar --selinux -cf test.tar file{1,2,3}
    Copy to Clipboard Toggle word wrap
  4. root 로서 test/ 라는 새 디렉터리를 생성한 다음 모든 사용자가 모든 사용자가 액세스할 수 있도록 허용합니다.
    ~]# mkdir /test
    Copy to Clipboard Toggle word wrap
    ~]# chmod 777 /test/
    Copy to Clipboard Toggle word wrap
  5. test.tar 파일을 test/:에 복사합니다.
    ~]$ cp /var/www/html/test.tar /test/
    Copy to Clipboard Toggle word wrap
  6. test/ 디렉터리로 변경합니다. 이 디렉터리에 다음 명령을 입력하여 tar 아카이브를 추출합니다. --selinux 옵션을 다시 지정합니다. 그러지 않으면 SELinux 컨텍스트가 default_t 로 변경됩니다.
    ~]$ cd /test/
    Copy to Clipboard Toggle word wrap
    test]$ tar --selinux -xvf test.tar
    Copy to Clipboard Toggle word wrap
  7. SELinux 컨텍스트 보기. httpd_sys_content_t 유형은 default_t 로 변경되지 않고 --selinux 를 사용하지 않은 상태로 유지되었습니다.
    test]$ ls -lZ /test/
    -rw-r--r--  user1 group1 unconfined_u:object_r:httpd_sys_content_t:s0 file1
    -rw-r--r--  user1 group1 unconfined_u:object_r:httpd_sys_content_t:s0 file2
    -rw-r--r--  user1 group1 unconfined_u:object_r:httpd_sys_content_t:s0 file3
    -rw-r--r--  user1 group1 unconfined_u:object_r:default_t:s0 test.tar
    
    Copy to Clipboard Toggle word wrap
  8. test/ 디렉터리가 더 이상 필요하지 않은 경우 root로 다음 명령을 입력하여 제거하고 여기에 있는 모든 파일을 삭제합니다.
    ~]# rm -ri /test/
    Copy to Clipboard Toggle word wrap
모든 확장 속성을 유지하는 --xattrs 옵션과 같이 tar 에 대한 자세한 내용은 tar(1) 매뉴얼 페이지를 참조하십시오.

4.10.5. 별이있는 파일 아카이브

star 유틸리티는 기본적으로 확장 속성을 유지하지 않습니다. SELinux 컨텍스트는 확장된 특성에 저장되므로 파일을 보관할 때 컨텍스트가 손실될 수 있습니다. star -xattr -H=exustar 명령을 사용하여 컨텍스트를 유지하는 아카이브를 생성합니다. star 패키지는 기본적으로 설치되지 않습니다. 별표 를 설치하려면 root 사용자로 yum install star 명령을 실행합니다.
다음 예제에서는 SELinux 컨텍스트를 유지하는 아카이브를 생성하는 방법을 보여줍니다.

절차 4.18.  아카이브 생성

  1. root 로서 /var/www/html/ 에 세 개의 파일(file1,file2, file3)을 만듭니다. 이러한 파일은 /var/www/html/:의 httpd_sys_content_t 유형을 상속합니다.
    ~]# touch /var/www/html/file{1,2,3}
    Copy to Clipboard Toggle word wrap
    ~]# ls -Z /var/www/html/
    -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
  2. /var/www/html/ 디렉터리로 변경합니다. 이 디렉터리에서 root로 다음 명령을 입력하여 test. star:이라는 별 아카이브를 생성합니다.
    ~]$ cd /var/www/html
    Copy to Clipboard Toggle word wrap
    html]# star -xattr -H=exustar -c -f=test.star file{1,2,3}
    star: 1 blocks + 0 bytes (total of 10240 bytes = 10.00k).
    
    Copy to Clipboard Toggle word wrap
  3. root 로서 test/ 라는 새 디렉터리를 생성한 다음 모든 사용자가 모든 사용자가 액세스할 수 있도록 허용합니다.
    ~]# mkdir /test
    Copy to Clipboard Toggle word wrap
    ~]# chmod 777 /test/
    Copy to Clipboard Toggle word wrap
  4. 다음 명령을 입력하여 test.star 파일을 test/:에 복사합니다.
    ~]$ cp /var/www/html/test.star /test/
    Copy to Clipboard Toggle word wrap
  5. test/ 로 변경합니다. 이 디렉터리에 다음 명령을 입력하여 star 아카이브를 추출합니다.
    ~]$ cd /test/
    Copy to Clipboard Toggle word wrap
    test]$ star -x -f=test.star 
    star: 1 blocks + 0 bytes (total of 10240 bytes = 10.00k).
    
    Copy to Clipboard Toggle word wrap
  6. SELinux 컨텍스트 보기. httpd_sys_content_t 유형이 default_t 로 변경되지 않고 유지되었습니다. 이 유형은 -xattr -H=exustar 옵션이 사용되지 않았습니다.
    ~]$ ls -lZ /test/
    -rw-r--r--  user1 group1 unconfined_u:object_r:httpd_sys_content_t:s0 file1
    -rw-r--r--  user1 group1 unconfined_u:object_r:httpd_sys_content_t:s0 file2
    -rw-r--r--  user1 group1 unconfined_u:object_r:httpd_sys_content_t:s0 file3
    -rw-r--r--  user1 group1 unconfined_u:object_r:default_t:s0 test.star
    
    Copy to Clipboard Toggle word wrap
  7. test/ 디렉터리가 더 이상 필요하지 않은 경우 root로 다음 명령을 입력하여 제거하고 여기에 있는 모든 파일을 삭제합니다.
    ~]# rm -ri /test/
    Copy to Clipboard Toggle word wrap
  8. 더 이상 별이 필요하지 않은 경우 root 로서 패키지를 제거합니다.
    ~]# yum remove star
    Copy to Clipboard Toggle word wrap
별에 대한 자세한 내용은 star(1) 도움말 페이지를 참조하십시오.


[6] matchpathcon 에 대한 자세한 내용은 matchpathcon(8) 도움말 페이지를 참조하십시오.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

Theme

© 2025 Red Hat