apache 如何記錄日志
問(wèn)題描述
在linux系統(tǒng)上,apache是以www-data(默認(rèn))用戶運(yùn)行的,同時(shí)其用戶組也是www-data。
可是我發(fā)現(xiàn)apache的日志目錄/var/log/apache是屬于root的,組是adm
www-data對(duì)該日志目錄是沒(méi)有寫(xiě)權(quán)限的,而且它不是adm組的用戶,甚至連讀權(quán)限都沒(méi)有。
但是我們發(fā)現(xiàn)有一個(gè)apache2進(jìn)程是以root運(yùn)行的,應(yīng)該是主進(jìn)程。難道所有子進(jìn)程的日志都是先通過(guò)進(jìn)程通信傳遞給主進(jìn)程,然后再記錄的嗎?還是說(shuō)有其他什么機(jī)制。
問(wèn)題解答
回答1:我這里沒(méi)有 Apache httpd,所以自己寫(xiě)程序試了試。在 write 時(shí)是不檢查權(quán)限的,也就是說(shuō)只要日志文件打開(kāi)成功了,那么再改變用戶 ID(setuid)之后依舊可以向該文件寫(xiě)入數(shù)據(jù)。當(dāng)然這樣子的話,如何重新打開(kāi)日志文件是個(gè)問(wèn)題。你直接去看 Apache httpd 的源碼就好。簡(jiǎn)單地 strace 一下也許會(huì)有發(fā)現(xiàn)。
相關(guān)文章:
1. java - spring boot 如何打包成asp.net core 那種獨(dú)立應(yīng)用?2. android - SwipeRefreshLayout5.0以下不兼容3. docker start -a dockername 老是卡住,什么情況?4. python文檔怎么查看?5. 安全性測(cè)試 - nodejs中如何防m(xù)ySQL注入6. javascript - 關(guān)于apply()與call()的問(wèn)題7. javascript - webpack 分割加載代碼后,react 界面不更新8. java - 在用戶不登錄的情況下,用戶如何添加保存到購(gòu)物車?9. javascript - nginx反向代理靜態(tài)資源403錯(cuò)誤?10. datetime - Python如何獲取當(dāng)前時(shí)間
