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:

  • Come configurare la connettività protetta tra più sottoreti
  • Inoltro del traffico IPv6
  • Abilita FastCGI su Apache con Puppetlabs / Apache
  • Letsencrypt - devo mantenere "ben noto" accessibile per il rinnovo del certificato?
  • Posso utilizzare TLSv1.0 per un IP client, TLS v1.2 per tutti gli altri
  • yum aggiorna l'integer rilascio, ma limita a una versione precedente
  •  $ 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.