SELinux impedisce ad Apache di scrivere su un file


12

SELinux impedisce apacheall'utente di scrivere su un file di registro di cui è proprietario. Quando lo faccio setenforce 0funziona. Altrimenti mostra questo errore

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

Il contesto di sicurezza del file:

$ 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 contesto di sicurezza in modo che l' apacheutente possa scrivere in quella directory? Ho impostato quel contesto di sicurezza della directory usando chconma non riesco a trovare un tipo di file adatto.

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)

Risposte:


10

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


18

Come già detto, dovresti indicare a SELINUX di consentire la scrittura su quel file. La cosa giusta da fare è contrassegnare /var/www/webapp/k/site/come di tipohttpd_sys_rw_content_t

Per contrassegnare permanentemente quella directory come httpd_sys_rw_content_t, è possibile utilizzare il comando semanage fcontext -a -t httpd_sys_rw_content_t /var/www/webapp/k/site(/.*)?; restorecon -RF /var/www/webapp/k/site/ Questo sopravviverà agli aggiornamenti dei criteri binari SELINUX e alla rietichettatura del filesystem.


2
questo avrebbe dovuto essere contrassegnato come la risposta corretta. e si consiglia di contrassegnare permanentemente la directory (come indicato in questa risposta).
skidadon,

1
Probabilmente dovrai fuggire le parentesi dalla shell.
Michael Hampton

6

Ciò modificherà le autorizzazioni:

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

1
Ottengo questo errore: -bash: errore di sintassi vicino al token imprevisto `('
Derrick Miller
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.