소켓에 대한 권한을 777로 설정했지만 Nginx에서는 계속 액세스가 거부되었다고 말하고 서버를 다시 시작했습니다.
Nginx는 루트로 시작되며(가장 좋은 방법은 아니지만 이것이 바로 그런 방식입니다. 저는 이런 방식으로 설정할 사람이 아닙니다) 문제의 소켓은 응용 프로그램 사용자가 소유합니다.
중요한 경우 소켓은 puma 웹 서버에서 실행되는 Rails 애플리케이션용입니다.
제가 사용하는 배포판은 Redhat입니다.
내가 찾은 것을 따라해 보았습니다.여기그런데 달리려고 하면
grep nginx /var/log/audit/audit.log | audit2allow -m nginx
다음 오류가 발생합니다.
compilation failed:
mynginx.te:6:ERROR 'syntax error' at token '' on line 6:
/usr/bin/checkmodule: error(s) encountered while parsing configuration
/usr/bin/checkmodule: loading policy configuration from mynginx.te
내 생각에는 이것이 내가 실행 중인 명령일 수 있습니다.
sudo cat /var/log/audit/audit.log | grep nginx | grep denied | audit2allow -M mynginx
그러나 감사 로그를 덜 열고 거부된 후에도 nginx 관련 항목을 검색한 후에도 여전히 동일한 오류가 발생합니다. 아무것도 얻지 못하고 audit.log에 nginx 관련 항목이 없습니다.
다른 응용 프로그램(동일한 OS)을 사용하는 다른 시스템에서 동일한 작업을 수행하려고 하는데 동일한 문제가 다시 발생하지만 다른 감사 로그에 따르면(결국 내가 얻는 결과는 다음과 같습니다.)
type=USER_CMD msg=audit(1508924031.284:1165419): user pid=30802 uid=502 auid=502 ses=5121 msg='cwd="/home/user/selinux-nginx-rhel/nginx" cmd=73656D6F64756C65202D69206E67696E782E7070 terminal=pts/0 res=success'
nginx가 여전히 거부되는 이유가 표시된다면 res=success
?
또한 이 프로젝트를 시도하면 audit2allow
아래와 같이 빈policy.te 파일이 생성됩니다.사용자 문제물론 밑줄 친 내용은 제가 RHEL에서 실행 중인 내용과 다를 수 있습니다.
또한 SElinux가 실행 중인지 확실하지 않지만 getenforce
: does 를 반환합니다 Disabled
.
소켓 위치를 누구나 액세스할 수 있는 위치로 이동하면 문제가 해결되므로 궁극적으로 이는 사용자 권한 문제라고 생각합니다.
답변1
나는 같은 문제에 직면하고 있습니다. SELinux를 비활성화해야 합니다. 자세한 단계를 보려면 링크를 클릭하세요.
http://blog.odoobiz.com/2017/11/rhel-wsgi-nginx-error-permission-denied.html