Sur les systèmes Linux, Apache s'exécute en tant qu'utilisateur www-data (par défaut), et son groupe d'utilisateurs est également www-data.
Mais j'ai découvert que le répertoire des journaux Apache /var/log/apache appartient à root et que le groupe est adm
www-data n'a pas d'autorisations d'écriture sur le répertoire des journaux, et ce n'est pas un utilisateur du groupe adm et n'a même pas d'autorisations de lecture.
Mais nous avons découvert qu'il existe un processus Apache2 exécuté en tant que root, qui devrait être le processus principal. Les journaux de tous les processus enfants sont-ils d'abord transmis au processus principal via la communication de processus, puis enregistrés ? Ou existe-t-il un autre mécanisme ?
Je n'ai pas Apache httpd ici, alors j'ai écrit un programme moi-même et je l'ai essayé. Les données peuvent toujours être écrites dans le fichier après
write
时是不检查权限的,也就是说只要日志文件打开成功了,那么再改变用户 ID(setuid
). Bien entendu, dans ce cas, la manière de rouvrir le fichier journal pose problème. Il suffit de regarder le code source d'Apache httpd. Une simple trace peut révéler quelque chose.