2017-04-05 4 views
0

CentOS 대상 SELinux 정책을 사용하여 Unix 도메인 소켓에 연결할 수 있도록 허용해야합니다.nginx가 CentOS 대상 SELinux 정책을 사용하여 Unix 도메인 소켓에 연결하도록 허용

module httpd_unix 0.0.0; 

require { 
     attribute file_type; 
     class unix_stream_socket connectto; 
     class sock_file write; 
     type httpd_t; 
} 

type httpd_unix_t; 
typeattribute httpd_unix_t file_type; 
allow httpd_t httpd_unix_t: unix_stream_socket connectto; 
allow httpd_t httpd_unix_t: sock_file write; 

을 그러나 감사는 말한다 :

나는 다음과 같은 모듈을 함께했다

type=AVC msg=audit(1491380970.041:396): avc: denied { connectto } for pid=985 comm="nginx" path="/run/tsubonesystem3/tsubonesystem3.sock" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:system_r:init_t:s0 tclass=unix_stream_socket 

컨텍스트는 물론, 파일에 설정되어 있습니다.

$ sudo ls -Z /var/run/tsubonesystem3/tsubonesystem3.sock 
srw-rw----. tsubonesystem tsubonesystem system_u:object_r:httpd_unix_t:s0 /var/run/tsubonesystem3/tsubonesystem3.sock 

어떻게 해결할 수 있습니까?

답변

0

해결 : Unix 스트림 파일에 바인딩 된 소켓 컨텍스트를 수정해야했습니다. 권한은 리스너 (리스너)를 만드는 프로세스에서 상속되므로 연결 프로세스가 리스너의 컨텍스트에 연결할 수 있습니다. 리스너가 listner_t에서 실행되는 경우

예를 들어, 연결 프로세스가 connector_t에 : 내 경우

allow connector_t listener_t: unix_stream_socket connectto; 

, 청취자가 init_t에서 실행하지만, init_t의 모든 과정을들을 수 nginx를 허용되었다이었다 너무 많은. 청취자를위한 새로운 컨텍스트를 생성하고 컨텍스트를 사용하는 프로세스에 nginx가 연결할 수 있도록했습니다.

관련 문제