SELinux zapobiega zapisywaniu Apache'a do pliku

12

SELinux uniemożliwia apacheużytkownikowi zapisywanie do pliku dziennika, którego jest właścicielem. Kiedy to robię setenforce 0, działa. W przeciwnym razie pokazuje ten błąd

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

Kontekst bezpieczeństwa pliku:

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

Plik został utworzony, gdy tryb SELinux został ustawiony na zezwolenie.

Jak ustawić kontekst bezpieczeństwa, aby apacheużytkownik mógł pisać w tym katalogu? Ustawiłem ten kontekst zabezpieczeń katalogu przy użyciu, chconale nie mogę znaleźć odpowiedniego typu pliku.

Od 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)
Clodoaldo
źródło

Odpowiedzi:

10

Aby pliki, do których Apache mógł zapisywać, muszą mieć ustawiony typ httpd_sys_rw_content_t.

Michael Hampton
źródło
18

Jak już wspomniano, powinieneś poinstruować SELINUX, aby zezwolił na zapis do tego pliku. Właściwe jest oznaczenie /var/www/webapp/k/site/typuhttpd_sys_rw_content_t

Aby trwale oznaczyć ten katalog jako httpd_sys_rw_content_t, możesz użyć polecenia semanage fcontext -a -t httpd_sys_rw_content_t /var/www/webapp/k/site(/.*)?; restorecon -RF /var/www/webapp/k/site/ To przetrwa aktualizacje polityki binarnej SELINUX i ponowne oznakowanie systemu plików.

Shodanshok
źródło
2
to powinno być oznaczone jako poprawna odpowiedź. i zaleca się trwałe oznaczenie katalogu (jak podano w tej odpowiedzi).
skidadon
1
Prawdopodobnie musisz uciec nawiasom z powłoki.
Michael Hampton
6

Spowoduje to zmianę uprawnień:

chcon --type httpd_sys_rw_content_t /var/www/webapp/k/site/k.log
t0k3n1z3r
źródło
1
Otrzymuję ten błąd: -bash: błąd składni w pobliżu nieoczekiwanego tokena `('
Derrick Miller