4.10. SELinux 레이블 유지 관리
이 섹션에서는 파일 및 디렉터리를 복사, 이동 및 보관할 때 SELinux 컨텍스트에 발생하는 사항에 대해 설명합니다. 또한 복사 및 보관 시 컨텍스트를 보존하는 방법을 설명합니다.
4.10.1. 파일 및 디렉토리 복사
파일 또는 디렉터리가 복사되면 새 파일 또는 디렉터리가 없는 경우 새로 생성됩니다. 새 파일 또는 디렉터리의 컨텍스트는 원래 컨텍스트를 유지하는 데 옵션을 사용하지 않는 한 원본 파일이나 디렉터리의 컨텍스트가 아닌 기본 레이블 규칙을 기반으로 합니다. 예를 들어 사용자 홈 디렉터리에 생성된 파일은
user_home_t
유형으로 레이블이 지정됩니다.
~]$
touch file1
~]$
ls -Z file1
-rw-rw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1
이러한 파일이 /etc와 같은 다른 디렉토리에 복사되면
/etc
의 default-labeling 규칙에 따라 새 파일이 생성됩니다 .
추가 옵션 없이 파일을 복사하면 원래 컨텍스트가 유지되지 않을 수 있습니다.
~]$
ls -Z file1
-rw-rw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1
~]#
cp file1 /etc/
~]$
ls -Z /etc/file1
-rw-r--r-- root root unconfined_u:object_r:etc_t:s0 /etc/file1
file1
을 /etc/
file1에 복사하면 /etc/file1
이 없으면 /etc/file1
이 새 파일로 생성됩니다. 위 예제와 같이 /etc/file1
은 기본 레이블 규칙에 따라 etc_t
유형으로 레이블이 지정됩니다.
파일이 기존 파일을 통해 복사되면 사용자가
--preserve=context
와 같은 원본 파일의 컨텍스트를 보존하기 위해 지정한 cp 옵션이 아닌 한 기존 파일의 컨텍스트가 보존됩니다. SELinux 정책은 복사 중에 컨텍스트가 유지되지 않도록 할 수 있습니다.
절차 4.11. SELinux 컨텍스트를 보존하지 않고 복사
이 절차에서는 파일을 cp 명령으로 복사할 때 옵션을 지정하지 않으면 타겟 상위 디렉터리에서 유형을 상속함을 보여줍니다.
- 사용자의 홈 디렉터리에서 파일을 만듭니다. 파일은
user_home_t
유형으로 레이블이 지정됩니다.~]$
touch file1~]$
ls -Z file1 -rw-rw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1 /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/file1
이/var/www/html/
에 복사되면httpd_sys_content_t
유형을 상속합니다.~]#
cp file1 /var/www/html/~]$
ls -Z /var/www/html/file1 -rw-r--r-- root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/html/file1
절차 4.12. 복사 시 SELinux 컨텍스트 보존
다음 절차에서는 복사 시 컨텍스트를 보존하기 위해
--preserve=context
옵션을 사용하는 방법을 보여줍니다.
- 사용자의 홈 디렉터리에서 파일을 만듭니다. 파일은
user_home_t
유형으로 레이블이 지정됩니다.~]$
touch file1~]$
ls -Z file1 -rw-rw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1 /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/- preserve
=context
옵션을 사용하면 복사 작업 중에 SELinux 컨텍스트가 유지됩니다. 아래 표시된 대로file1
의user_home_t
유형은/var/www/html/
에 파일을 복사할 때 보존됩니다.~]#
cp --preserve=context file1 /var/www/html/~]$
ls -Z /var/www/html/file1 -rw-r--r-- root root unconfined_u:object_r:user_home_t:s0 /var/www/html/file1
절차 4.13. 문맥 복사 및 변경
다음 절차에서는
--context
옵션을 사용하여 대상 복사의 컨텍스트를 변경하는 방법을 보여줍니다. 다음 예는 사용자의 홈 디렉터리에서 수행됩니다.
- 사용자의 홈 디렉터리에서 파일을 만듭니다. 파일은
user_home_t
유형으로 레이블이 지정됩니다.~]$
touch file1~]$
ls -Z file1 -rw-rw-r-- user1 group1 unconfined_u:object_r:user_home_t:s0 file1 context
옵션을 사용하여 SELinux 컨텍스트를 정의합니다.~]$
cp --context=system_u:object_r:samba_share_t:s0 file1 file2컨텍스트가
없으면file2
는unconfined_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
절차 4.14. 기존 파일에서 파일 복사
이 절차에서는 컨텍스트를 보존하는 데 옵션을 사용하지 않는 한 기존 파일을 통해 파일을 복사할 때 기존 파일의 컨텍스트가 보존되는 것을 보여줍니다.
- root로
/etc
디렉토리에 새파일 file1
을 만듭니다. 아래 표시된 대로 파일은etc_t
유형으로 레이블이 지정됩니다.~]#
touch /etc/file1~]$
ls -Z /etc/file1 -rw-r--r-- root root unconfined_u:object_r:etc_t:s0 /etc/file1 - 다른 파일
file2
를/tmp
디렉토리에 만듭니다. 아래 표시된 대로 파일은user_tmp_t
유형으로 레이블이 지정됩니다.~]$
touch /tmp/file2~$
ls -Z /tmp/file2 -rw-r--r-- root root unconfined_u:object_r:user_tmp_t:s0 /tmp/file2 file1
을file2
로 덮어쓰기 :~]#
cp /tmp/file2 /etc/file1- 복사 후 다음 명령은 /
etc/file
을 보여줍니다.1을 대체한
1/tmp/file2
의user_tmp_t
유형이 아닌etc_t 유형으로
레이블이 지정된 file~]$
ls -Z /etc/file1 -rw-r--r-- root root unconfined_u:object_r:etc_t:s0 /etc/file1
중요
파일 및 디렉터리를 이동하지 않고 복사합니다. 이렇게 하면 올바른 SELinux 컨텍스트로 레이블이 지정되도록 하는 데 도움이 됩니다. 잘못된 SELinux 컨텍스트는 프로세스가 해당 파일 및 디렉터리에 액세스하지 못하도록 할 수 있습니다.