SELinux impedisce a Apache di scrivere su un file

SELinux impedisce all'utente apache di scrivere in un file di log che possiede. Quando faccio setenforce 0 funziona. Altrimenti visualizza questo errore

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

Il context di protezione del file:

  • Pro e contro di un'architettura del burattino decentralizzata
  • Il server Apache su EC2 risponde in localhost, ma non pubblico IP
  • Equivalente di openSuse "zypper ps" in altre distros?
  • Come puoi installare il burattino su CentOS 7?
  • Come fare un repo statico RHEL per un rilascio specifico
  • Non è ansible avviare il servizio CentOS 7 "network"
  •  $ ll -Z k.log -rw-r--r--. apache apache system_u:object_r:httpd_sys_content_t:s0 k.log 

    Il file è stato creato quando la modalità SELinux è stata impostata su permissiva.

    Come impostare il context di protezione in modo che l'utente apache possa scrivere in quella directory? Ho impostato questo context di protezione della directory utilizzando chcon ma non riesco a trovare un tipo di file appropriato.

    Da 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) 

    3 Solutions collect form web for “SELinux impedisce a Apache di scrivere su un file”

    Per i file che si desidera che Apache sia in grado di scrivere, il tipo deve essere impostato su httpd_sys_rw_content_t .

    Come già detto, è necessario istruire SELINUX per consentire la scrittura a tale file. La cosa giusta da fare è contrassegnare il / var / www / webapp / k / site / come del tipo httpd_sys_rw_content_t

    Per contrassegnare definitivamente la directory come httpd_sys_rw_content_t , è ansible utilizzare il command 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/ Questo sopravviverà negli aggiornamenti dei criteri binari di SELINUX e nel riprogrammazione del filesystem.

    Ciò cambierà le autorizzazioni:

     chcon --type httpd_sys_rw_content_t /var/www/webapp/k/site/k.log 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.