SELinux阻止Apache写入文件


12

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模式设置为许可时创建的。

如何设置安全上下文,以便apache用户可以在该目录中写入?我确实使用设置了该目录安全性上下文,chcon但是找不到合适的文件类型。

来自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)

Answers:



18

如前所述,您应该指示SELINUX允许写入该文件。正确的做法是将/var/www/webapp/k/site/类型标记为httpd_sys_rw_content_t

要将目录永久标记为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/ 此命令将在SELINUX二进制策略更新和文件系统重新标记后保留下来。


2
这应该被标记为正确答案。并且建议永久标记目录(如该答案中所述)。
skidadon '16

1
您可能需要从外壳中转出括号。
迈克尔·汉普顿

6

这将更改权限:

chcon --type httpd_sys_rw_content_t /var/www/webapp/k/site/k.log

1
我收到此错误:-bash:意外令牌'('附近的语法错误
Derrick Miller
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.