
저는 애플리케이션과 브라우저 셸을 가지고 있으며 실행 파일 목록을 가져오기 위해 이 명령을 실행하고 있습니다($PATH의 모든 바이너리 나열)
compgen -A function -abck | sort | uniq
이 명령을 호출하면 실행 파일이 반환되지만 SELinux에서 다음과 같은 많은 오류가 발생합니다.
SELinux is preventing bash from getattr access on the file /usr/sbin/chronyd.
allow this access for now by executing:
# ausearch -c 'bash' --raw | audit2allow -M my-bash
# semodule -X 300 -i my-bash.pp
이 오류를 방지할 수 있는 방법이 있나요? 내 애플리케이션이 SELinux에서도 오류 없이 실행되기를 원합니다.
PATH를 변경하거나 일부 명령을 실행하여 경로가 PATH 변수에 있을 수 있는지 확인할 수 있습니다. /usr/sbin은 PATH에 있을 수 없습니다. 그런 명령이 존재합니까? 기본적으로 다음 경로가 있습니다.
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/games
이것이 결과이다sudo ausearch -c 'bash' --raw
type=AVC msg=audit(1506851274.781:2921): avc: denied { getattr } for pid=12298 comm="bash" path="/usr/sbin/xl2tpd" dev="sda1" ino=2239132 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:l2tpd_exec_t:s0 tclass=file permissive=1
그리고 | audit2why
:
type=AVC msg=audit(1506851274.781:2921): avc: denied { getattr } for pid=12298 comm="bash" path="/usr/sbin/xl2tpd" dev="sda1" ino=2239132 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:l2tpd_exec_t:s0 tclass=file permissive=1
Was caused by:
Missing type enforcement (TE) allow rule.
You can use audit2allow to generate a loadable module to allow this access.
없이도 내 코드를 작동시킬 수 있나요 audit2allow
?
답변1
SELinux와 함께 제공되는 기본 정책은 각 애플리케이션의 일반적인 시스템 액세스를 허용하도록 설계되었습니다. 일반 로그인 셸과 달리"네트워크 쉘"웹 서버 컨텍스트에서 실행(httpd_t) 웹 서버 제한 사항이 적용되는 경우. 귀하의 웹 서버도 다음에서 실행 중입니다.허가 도메인, 이는 정책 규칙이 적용되지 않고 기록만 이루어지므로 실제로 애플리케이션에 권한 거부 오류가 표시되지 않음을 의미합니다.
이 메시지를 제거하는 가장 쉬운 방법은 사용 권장 사항을 따르는 것입니다 audit2allow
.httpd_t강제 모드로 돌아갑니다. audit2allow
거부 메시지가 생성되는 특정 액세스를 허용하는 새 규칙을 만듭니다.httpd_t맥락은 허용한다속성 가져오기파일로l2tpd_exec_t문맥.
웹 서버에서 셸을 계속 사용하려는 경우 SELinux 권한 오류가 더 많이 나타날 수 있습니다(httpd_t문맥).
이상적으로는 실행 중인 셸의 (더 많은) 허용 도메인에 대한 명확한 변환 경로가 포함된 사용자 지정 정책을 만들어야 합니다. 이를 통해 웹 서버에 너무 많은 액세스 권한을 부여하지 않고도 무제한 쉘을 실행할 수 있습니다. 유용하다면 웹 서버에서 셸이 시작되는 방법(스크립트 등)에 대한 세부 사항에 따라 달라집니다.
당신이 결정한다면유지하다httpd_t허용 모드에서그럼에도 불구하고 로그 메시지가 필요하지 않은 경우 웹 서버가 무제한 컨텍스트에서 실행되도록 구성할 수 있습니다. 어느 쪽이든 웹 서버의 경우 이는 실행하는 것과 사실상 동일합니다.SELinux가 비활성화되었습니다..