Heim  >  Fragen und Antworten  >  Hauptteil

Wie Apache protokolliert

Auf Linux-Systemen wird Apache als www-data-Benutzer (Standard) ausgeführt, und seine Benutzergruppe ist ebenfalls www-data.

Aber ich habe festgestellt, dass das Apache-Protokollverzeichnis /var/log/Apache zu Root gehört und die Gruppe adm ist

www-data hat keine Schreibberechtigungen für das Protokollverzeichnis, ist kein Benutzer in der adm-Gruppe und verfügt nicht einmal über Leseberechtigungen.

Wir haben jedoch festgestellt, dass ein Apache2-Prozess als Root ausgeführt wird, der der Hauptprozess sein sollte. Werden die Protokolle aller untergeordneten Prozesse zunächst über die Prozesskommunikation an den Hauptprozess übergeben und dann aufgezeichnet? Oder gibt es einen anderen Mechanismus?

怪我咯怪我咯2713 Tage vor525

Antworte allen(1)Ich werde antworten

  • 为情所困

    为情所困2017-05-16 17:05:06

    我这里没有 Apache httpd,所以自己写程序试了试。在 write 时是不检查权限的,也就是说只要日志文件打开成功了,那么再改变用户 ID(setuid)之后依旧可以向该文件写入数据。当然这样子的话,如何重新打开日志文件是个问题。你直接去看 Apache httpd 的源码就好。简单地 strace 一下也许会有发现。

    Antwort
    0
  • StornierenAntwort