SELinux阻止apache
用户写入它拥有的日志文件。 当我setenforce 0
它的作品。 否则会显示这个错误
IOError: [Errno 13] Permission denied: '/var/www/webapp/k/site/k.log'
文件的安全上下文:
$ ll -Z k.log -rw-r--r--. apache apache system_u:object_r:httpd_sys_content_t:s0 k.log
该文件是在SELinux模式设置为宽容时创build的。
如何设置安全上下文,以便apache
用户可以在该目录中写入? 我没有使用chcon
设置目录安全上下文,但是我找不到合适的文件types。
从audit.log
:
type=AVC msg=audit(1409945481.163:1561): avc: denied { append } for pid=16862 comm="httpd" name="k.log" dev="dm-1" ino=201614333 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:httpd_sys_content_t:s0 tclass=file type=SYSCALL msg=audit(1409945481.163:1561): arch=c000003e syscall=2 success=no exit=-13 a0=7fa8080847a0 a1=441 a2=1b6 a3=3 items=0 ppid=15256 pid=16862 auid=4294967295 uid=48 gid=48 euid=48 suid=48 fsuid=48 egid=48 sgid=48 fsgid=48 tty=(none) ses=4294967295 comm="httpd" exe="/usr/sbin/httpd" subj=system_u:system_r:httpd_t:s0 key=(null)
对于希望Apache能够写入的文件,types必须设置为httpd_sys_rw_content_t
。
如前所述,您应该指示SELINUX允许写入该文件。 正确的做法是将/var/www/webapp/k/site/
标记为httpd_sys_rw_content_t
types
要将该目录永久标记为httpd_sys_rw_content_t
,可以使用命令semanage fcontext -a -t httpd_sys_rw_content_t /var/www/webapp/k/site(/.*)?; restorecon -RF /var/www/webapp/k/site/
semanage fcontext -a -t httpd_sys_rw_content_t /var/www/webapp/k/site(/.*)?; restorecon -RF /var/www/webapp/k/site/
这将在SELINUX二进制策略更新和文件系统重新标记后生存。
这将改变权限:
chcon --type httpd_sys_rw_content_t /var/www/webapp/k/site/k.log