SELinux verhindert, dass Apache in eine Datei schreibt

12

SELinux verhindert, dass der apacheBenutzer in eine ihm gehörende Protokolldatei schreibt. Wenn ich es tue setenforce 0, funktioniert es. Andernfalls wird dieser Fehler angezeigt

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

Der Sicherheitskontext der Datei:

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

Die Datei wurde erstellt, als der SELinux-Modus auf "Zulässig" gesetzt wurde.

Wie wird der Sicherheitskontext festgelegt, damit der apacheBenutzer in dieses Verzeichnis schreiben kann? Ich habe diesen Verzeichnissicherheitskontext mithilfe von festgelegt chcon, kann jedoch keinen geeigneten Dateityp finden.

Von 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
quelle

Antworten:

10

Für Dateien, in die Apache schreiben soll, muss der Typ auf festgelegt sein httpd_sys_rw_content_t.

Michael Hampton
quelle
18

Wie bereits erwähnt, sollten Sie SELINUX anweisen, das Schreiben in diese Datei zuzulassen. Das Richtige ist, /var/www/webapp/k/site/als Typ zu markierenhttpd_sys_rw_content_t

Um dieses Verzeichnis dauerhaft als zu kennzeichnen, httpd_sys_rw_content_tkönnen Sie den Befehl semanage fcontext -a -t httpd_sys_rw_content_t /var/www/webapp/k/site(/.*)?; restorecon -RF /var/www/webapp/k/site/ This verwenden, der die SELINUX-Binärrichtlinienaktualisierungen und die Neukennzeichnung des Dateisystems übersteht.

Shodanshok
quelle
2
Dies sollte als die richtige Antwort markiert worden sein. und es wird empfohlen, das Verzeichnis permanent zu markieren (wie in dieser Antwort angegeben).
Skidadon
1
Wahrscheinlich müssen Sie die Klammern aus der Shell entfernen.
Michael Hampton
6

Dies ändert die Berechtigungen:

chcon --type httpd_sys_rw_content_t /var/www/webapp/k/site/k.log
t0k3n1z3r
quelle
1
Ich erhalte den folgenden Fehler: -bash: Syntaxfehler in der Nähe des unerwarteten Tokens `('
Derrick Miller