*In file constraints deny /etc/shadow; *In httpd_t.a { domain httpd_t; include constraints; allow /etc/* r,s; }By include constraints; configuration in file constrains is included . So, the above configuration is the same as following.
{ domain httpd_t; include constraints; deny /etc/shadow; allow /etc/* r,s; }This means, httpd_t have r,s permission to files in /etc. But can not access /etc/shadow. To allow access to /etc/shadow, allow /etc/shadow r,s; should be described explicitly. Deny is useful to prevent misconfiguration.
{ domain httpd_t; allow /etc/* r,s; deny /etc;allow /etc/* r,s; is cancelled by deny /etc;