Linux システムでは、Apache は www-data (デフォルト) ユーザーとして実行され、そのユーザー グループも www-data です。
しかし、Apache ログ ディレクトリ /var/log/apache は root に属し、グループは adm であることがわかりました
www-data にはログ ディレクトリへの書き込み権限がありません。また、adm グループのユーザーではなく、読み取り権限さえありません。
しかし、ルートとして実行されている apache2 プロセスが存在することがわかりました。これがメインプロセスであるはずです。すべての子プロセスのログは、まずプロセス通信を通じてメインプロセスに渡されてから記録されますか?それとも何か別の仕組みがあるのでしょうか?
ここには Apache httpd がないので、自分でプログラムを書いて試してみました。
write
时是不检查权限的,也就是说只要日志文件打开成功了,那么再改变用户 ID(setuid
の後でもデータはファイルに書き込むことができます)。もちろんこの場合、ログファイルをどうやって開き直すかが問題になります。 Apache httpd のソース コードを見てください。単純な痕跡から何かが明らかになるかもしれません。