심볼릭 링크는 SELinux type_transition을 허용하지 않습니다.

심볼릭 링크는 SELinux type_transition을 허용하지 않습니다.

SELinux type_transition을 사용하여 심볼릭 링크에 액세스하려는 시도는 허용되지 않습니다. 내 말은 사용자가 /usr/bin/에 있는 심볼릭 링크에 액세스할 수 있고 바이너리가 사용자 디렉터리의 상위 디렉터리에 배치되도록 하는 시나리오를 구현하려고 한다는 것입니다. 원본 바이너리(실행 가능) 파일과 해당 심볼릭 링크는 동일한 SELinux 컨텍스트를 가지며 사용자는 원본 바이너리 파일이 있는 디렉터리에 대한 액세스 권한이 없지만 실행, 읽기 및 기타 작업(아래 참조)에 대한 권한을 갖습니다. 파일 위치로 인해 사용자가 디렉터리를 열거나 검색할 수 없습니다. 사용자가 "seuser_test_libre_writer_two_t"를 입력하면 이 특정 애플리케이션(바이너리)에 대한 정책은 다음과 같습니다.

policy_module(test, 1.0.0)
require {
  type seuser_test_libre_writer_two_t;
  class file { getattr relabelto unlink execute append read setattr 
               write create open rename execute_no_trans entrypoint 
               ioctl lock };
  class dir { getattr relabelfrom relabelto read open setattr write 
              create rename search rmdir add_name };
  class process { transition rlimitinh siginh sigchld noatsecure };
  class lnk_file { read getattr };
  role seuser_test_libre_writer_two_r;
}

type selinux_object_hw_test_t;
type selinux_file_hw_test_exec_t;

role seuser_test_libre_writer_two_r types selinux_object_hw_test_t;

type_transition seuser_test_libre_writer_two_t 
                selinux_file_hw_test_exec_t: process 
                selinux_file_hw_test_exec_t;

allow seuser_test_libre_writer_two_t selinux_file_hw_test_exec_t: 
process { transition };

allow selinux_file_hw_test_exec_t selinux_file_hw_test_exec_t: file { 
      execute read write };
allow seuser_test_libre_writer_two_t selinux_file_hw_test_exec_t: file 
      { execute getattr open read };

allow selinux_file_hw_test_exec_t selinux_object_hw_test_t: dir { 
      search getattr };
allow seuser_test_libre_writer_two_t selinux_file_hw_test_exec_t: 
      lnk_file { read };

축구 클럽:

/opt/test -d gen_context(system_u:object_r:selinux_object_hw_test_t)

/usr/bin/hello_world_link -l 
gen_context(system_u:object_r:selinux_file_hw_test_exec_t)
/opt/test/hw -- 
gen_context(system_u:object_r:selinux_file_hw_test_exec_t)

내 응용 프로그램을 실행하려고 하면 /var/log/audit/audit.log에서 액세스가 거부되고 avc는 원본 파일이 있는 디렉터리에 대한 사용자 액세스 권한을 부여하도록 요청합니다.

type=AVC msg=audit(1545644823.820:11488): avc:  denied  { search } for     pid=12976 comm="bash" name="test" dev="dm-0" ino=2102570 scontext=seuser_test_libre_writer_two_u:seuser_test_libre_writer_two_r:seuser_test_libre_writer_two_t:s0 tcontext=system_u:object_r:selinux_object_hw_test_t:s0 tclass=dir

SELinux "type_transition"을 심볼릭 링크와 함께 사용할 수 있습니까?

이 링크를 확인했습니다."Linux에서 심볼릭 링크를 사용하는 방법은 무엇입니까?","한 디렉터리에서 다른 디렉터리로 파일을 복사할 때 파일의 SELinux 레이블 유지 관리","SELinux: 홈 디렉토리는 홈 디렉토리에 있는 파일의 심볼릭 링크, httpd입니다." 그리고"Symlink가 있는 경로에 SELinux 파일 컨텍스트를 적용할 수 없습니다.“그러나 그것들은 문제와 전적으로 관련이 없습니다.

답변1

이는 불가능합니다. 래퍼나 원본 바이너리의 실제 복사본을 만들어야 합니다.

관련 정보