Bir unix soketi ile gunicorn nginx yönlendirme istekleri var /run/gunicorn/socket
. Varsayılan olarak, bu davranışa SELinux tarafından izin verilmez:
grep nginx /var/log/audit/audit.log
type=SERVICE_START msg=audit(1454358912.455:5390): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=nginx comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success'
type=AVC msg=audit(1454360194.623:7324): avc: denied { write } for pid=9128 comm="nginx" name="socket" dev="tmpfs" ino=76151 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:httpd_sys_content_t:s0 tclass=sock_file
type=SYSCALL msg=audit(1454360194.623:7324): arch=c000003e syscall=42 success=no exit=-13 a0=c a1=1f6fe58 a2=6e a3=7ffee1da5710 items=0 ppid=9127 pid=9128 auid=4294967295 uid=995 gid=993 euid=995 suid=995 fsuid=995 egid=993 sgid=993 fsgid=993 tty=(none) ses=4294967295 comm="nginx" exe="/usr/sbin/nginx" subj=system_u:system_r:httpd_t:s0 key=(null)
type=AVC msg=audit(1454361591.701:13343): avc: denied { connectto } for pid=9128 comm="nginx" path="/run/gunicorn/socket" scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:system_r:initrc_t:s0 tclass=unix_stream_socket
type=SYSCALL msg=audit(1454361591.701:13343): arch=c000003e syscall=42 success=no exit=-13 a0=c a1=1f6fe58 a2=6e a3=7ffee1da5950 items=0 ppid=9127 pid=9128 auid=4294967295 uid=995 gid=993 euid=995 suid=995 fsuid=995 egid=993 sgid=993 fsgid=993 tty=(none) ses=4294967295 comm="nginx" exe="/usr/sbin/nginx" subj=system_u:system_r:httpd_t:s0 key=(null)
Baktığım her yerde (örneğin, burada ve burada ), nginx'e bir talepte bulunmalarını sağlamak için bu talimatın SELinux tarafından reddedilmesi, sonra audit2allow
gelecekteki taleplere izin vermek için çalıştırılması talimatı . Bu davranışa açıkça izin veren herhangi bir komut chcon
veya semanage
komut bulamıyorum.
Tek yolu bu mu? Nginx'in bir sokete yazma girişimine izin vermeden ve sonra reddedilen şeyleri mümkün kılan bir araç çalıştırmadan bir sokete yazmasına izin veren bir politika ayarlayamamanız saçma görünüyor. Neyin etkinleştirildiğini tam olarak nasıl biliyorsunuz? Makinelerinizi otomasyon altında kurarsanız bunun nasıl çalışması gerekiyor?
CentOS 7 kullanıyorum.