반응형

목차

  1. SELinux 컨텍스트
  2. SELinux 컨텍스트 변경
  3. semanage fcontext
  4. SELinux 기본 파일 컨텍스트 정책 정의

SELinux 컨텍스트

프로세스, 파일, 포트와 같은 모든 리소스에는 SELinux 컨텍스트로 레이블이 지정된다. SELinux는 /etc/ selinux/targeted/contexts/files/ 디렉터리에서 파일 레이블 지정 정책에 대한 파일 기반 데이 터베이스를 유지 관리한다.

 

새 파일은 해당 파일 이름이 기존 레이블 지정 정책과 일치하는 경우 기본 레이블을 가져온다. 새 파일의 이름이 기존 레이블 지정 정책과 일치하지 않는 경우에는 파일에 상위 디렉터리와 동일한 레이블이 상속된다. 레이블 상속을 사용하면 파일에 대한 명시적 정책이 존재하는지의 여부와 관계없이 모든 파일이 생성될 때 항상 레이블이 지정된다.

 

기존의 레이블 지정 정책이 있는 기본 위치에 파일이 생성되거나 사용자 지정 위치에 대한 정책이 있는 경우 새 파일에 올바른 SELinux 컨텍스트로 레이블이 지정된다. 그러나 기존 레이블 지정 정책 없이 파일이 예 기치 않은 위치에 생성되면 상속된 레이블이 새 파일의 의도된 용도에 맞지 않을 수 있다.

 

또한 파일을 새 위치에 복사하면 해당 파일의 SELinux 컨텍스트가 새 위치의 레이블 지정 정책 또는 상위 디렉터리 상속(정책이 없는 경우)으로 결정된 새 컨텍스트로 변경될 수 있다.

 

복사하는 동안 파일의 SELinux 컨텍스트를 보존하여 파일의 원래 위치에 대해 결정된 컨텍스트 레이블을 유지할 수 있다. 예를 들어 cp -p 명령은 가능한 경우 모든 파일 특성을 유지하고, cp -c 명령은 복사하는 동안 SELinux 컨텍스트만 유지한다.


SELinux 컨텍스트 변경

파일의 SELinux 컨텍스트는 semanage fcontext, restorecon, chcon 명령으로 변경한다. 파일의 컨텍스트를 설정하는 데 권장되는 방법은 semanage fcontext 명령을 사용하여 파일 컨텍스트 정책을 생성한 다음 restorecon 명령을 사용하여 정책에 지정된 컨텍스트를 파일에 적용하는 것이다.

 

이 방법을 사용하면 필요할 때마다 restorecon 명령을 사용하여 파일의 레이블을 올바른 컨텍스트로 쉽 게 다시 지정할 수 있다. 이 방법의 장점은 컨텍스트가 무엇인지 기억할 필요가 없으며 파일 집합에서 컨 텍스트를 쉽게 수정할 수 있다는 것이다.

 

chcon 명령은 SELinux 컨텍스트를 파일에 직접 설정하지만 시스템의 SELinux 정책은 참조하지 않는예다. chcon은 테스트 및 디버깅에 유용하지만 이 방법을 사용하여 컨텍스트를 수동으로 설정하는 것은 일시적이다. 수동으로 설정한 파일 컨텍스트는 재부팅 후에도 유지되지만 restorecon을 실행하여 파일 시스템 콘텐츠에 레이블을 다시 지정하는 경우 바뀔 수 있다.


semanage fcontext

파일 컨텍스트 매핑은 SELinux에서 시스템에 있는 파일 및 디렉토리의 보안 컨텍스트를 결정하는 데 사용되며, 이에 따라 적용되는 권한 및 액세스 제어가 결정된다.

semanage fcontext의 목적은 특정 파일 및 디렉토리에 대한 보안 설정 또는 "컨텍스트"를 정의하고 관리하는 것이다. 이러한 컨텍스트는 SELinux에서 각 파일 및 디렉토리에 대해 허용 또는 거부되는 작업(예: 읽기, 쓰기, 실행)을 결정하는 데 사용된다.


SELinux 기본 파일 컨텍스트 정책 정의

semanage fcontext 명령은 기본 파일 컨텍스트를 결정하는 정책을 표시하고 수정한다. semanage fcontext -l 명령을 실행하여 모든 파일 컨텍스트 정책 규칙을 나열할 수 있다. 이러한 규칙은 확장 된 정규 표현식 구문을 사용하여 경로 및 파일 이름을 지정한다.

 

정책을 볼 때 가장 일반적인 확장 정규 표현식은 (/.*)?이며, 일반적으로 디렉터리 이름에 추가된다. 이 표기법은 유머러스하게 해적이라고 한다. 얼굴에 눈 가리개가 있고 그 옆에 갈고리 손이 있는 것처럼 보이 기 때문이다.

 

이 구문은 '슬래시로 시작하고 그 뒤에 임의의 수의 문자가 있는 문자 집합'으로 설명되며, 집합은 있을 수도 있고 없을 수도 있다. 더 간단히 말하면 이 구문은 비어 있는 경우에도 디렉터리 자체와 일치하지만 해당 디렉터리 내에 생성된 거의 모든 파일 이름과 일치한다.


새 파일 컨텍스트 매핑을 추가한다.

semanage fcontext -a -t my_custom_type_t '/path/to/directory(/.*)?'

이 명령은 /path/to/directory 및 그 내용에 대한 새 파일 컨텍스트 매핑을 추가하여 SELinux 유형 my_custom_type_t를 지정된 파일 및 디렉토리에 할당한다.

기존 파일 컨텍스트 매핑을 수정한다.

semanage fcontext -m -t new_type_t '/path/to/directory(/.*)?'

이 명령은 /path/to/directory 및 그 내용에 대한 파일 컨텍스트 매핑을 수정하여 SELinux 유형을 new_type_t로 변경한다.

파일 컨텍스트 매핑을 삭제한다.

semanage fcontext -d '/path/to/directory(/.*)?'

이 명령은 /path/to/directory 및 그 내용에 대한 파일 컨텍스트 매핑을 제거한다.

모든 파일 컨텍스트 매핑을 나열한다.

semanage fcontext -l

이 명령은 현재 시스템에 정의된 모든 파일 컨텍스트 매핑을 나열한다.

semanage fcontext를 사용하여 파일 컨텍스트 매핑을 수정한 후 일반적으로 restorecon 명령을 실행하여 파일 및 디렉토리에 새 컨텍스트를 적용해야 한다.

restorecon -Rv /path/to/directory

이 명령은 semanage fcontext에 의해 정의된 새 매핑을 기반으로 지정된 파일 및 디렉토리의 SELinux 컨텍스트를 업데이트한다.

SELinux 부분은 사실 현업에서는 잘 사용되지는 않는다고 한다. 때문에 참고만하고 시험을 준비하고 있다면 합격을 해야할 테니 알아두는 것이 좋다.

반응형