한 디렉터리에서 SELinux 컨텍스트를 복사하여 다른 디렉터리에 적용하는 방법은 무엇입니까?

한 디렉터리에서 SELinux 컨텍스트를 복사하여 다른 디렉터리에 적용하는 방법은 무엇입니까?

한 디렉터리에서 SELinux 컨텍스트를 복사하여 다른 디렉터리에 적용하는 방법은 무엇입니까?

예제 사용 시나리오는 다음과 같이 기본 /home 경로 외부에 새 로컬 사용자를 생성하는 것입니다.

$ sudo useradd -d /websites Tim

이렇게 하면 Tim의 홈 디렉터리가 생성되고 /websitesTim에 대한 올바른 권한과 소유권이 설정되지만 아래와 같이 SELinux 컨텍스트가 다른 사용자와 다릅니다.

# ls -dZ /websites
drwx------. Tim Tim system_u:object_r:etc_runtime_t:s0 /websites

내가 원하는 것은 다른 사용자의 /home 디렉토리에서 SELinux 컨텍스트를 복사하여 Tim의 /websites디렉토리에 적용하는 것입니다.

다른 사용자를 위한 SELinux 컨텍스트는 다음과 같습니다.

# ls -Z /home/
drwx------. Ben  Ben  unconfined_u:object_r:user_home_dir_t:s0 Ben
drwx------. Bob  Bob  unconfined_u:object_r:user_home_dir_t:s0 Bob
drwx------. lexy lexy unconfined_u:object_r:user_home_dir_t:s0 lexy

답변1

이는 아래와 같이 -a및 플래그를 사용하여 간단히 수행할 수 있습니다.-e

semanage fcontext -a -e /home/Ben '/websites(/.*)?' 

-a: 추가하다,

-e: 동등한


그 후에는 다음과 같이 Restorecon을 실행해야 합니다.

restorecon -vvRF /websites

그리고 새 파일 컨텍스트가 적용됩니다.

-v:파일 레이블 변경 사항을 표시합니다.

-R:재귀,

-F:강제 컨텍스트 재설정


다음 명령을 사용하여 SELinux 파일 컨텍스트를 변경할 수도 있습니다.

semanage fcontext -a -t httpd_sys_content_t '/website(/.*)?'

그럼에도 불구하고 이는 새로운 파일 컨텍스트를 할당합니다.

-a: 추가하다,

-t: 유형

관련 정보