web-dev-qa-db-fra.com

SELINUX empêchant Apache d'écrire dans un fichier

SELINUX empêche l'utilisateur Apache de l'écriture à un fichier journal qu'elle possède. Quand je fais setenforce 0 Ça marche. Sinon, cela montre cette erreur

IOError: [Errno 13] Permission denied: '/var/www/webapp/k/site/k.log'

Le contexte de sécurité du fichier:

$ ll -Z k.log 
-rw-r--r--. Apache apache system_u:object_r:httpd_sys_content_t:s0 k.log

Le fichier a été créé lorsque le mode SELINUX a été défini sur permissive.

Comment définir le contexte de sécurité afin que l'utilisateur Apache puisse écrire dans ce répertoire? J'ai défini ce contexte de sécurité annuaire à l'aide de chcon mais je ne trouve pas de type de fichier approprié.

De 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)
12
Clodoaldo

Comme déjà indiqué, vous devez instruire SELINUX à autoriser l'écriture à ce fichier. La bonne chose à faire est de marquer /var/www/webapp/k/site/ Comme du type httpd_sys_rw_content_t

Pour marquer définitivement ce répertoire comme httpd_sys_rw_content_t, Vous pouvez utiliser la commande semanage fcontext -a -t httpd_sys_rw_content_t /var/www/webapp/k/site(/.*)?; restorecon -RF /var/www/webapp/k/site/ Cela survivra des mises à jour de stratégie binaires SELINUX et de la relaboration de systèmes de fichiers.

18
shodanshok

Cela changera les autorisations:

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