Lumalaki ang log ngunit hindi na muling magawa: suriin ang ACL ng direktoryo
Ang pagdagdag sa isang file ay hindi nangangailangan ng bagong pangalan sa direktoryo nito; ang paggawa ay nangangailangan. Ihambing ang access ACL sa mga namamana na default bago palawakin ang anuman.
Ang log na patuloy na lumalaki ay tumitigil sa paglaki sa sandaling muling gawin ito ng isang bagay, at sinasabi ng error na tinanggihan ang pahintulot. Ang nakakaakit na konklusyon ay kailangan ng mas maraming pahintulot ang mismong file ng log, ngunit maaaring nakasulat na ito ng parehong account. Ang pagdagdag sa umiiral na pangalan at ang paggawa ng bagong pangalan ay dalawang magkaibang pagsusuri, at ang pangalawa lamang ang nagtatanong sa direktoryo.
Ang pagdagdag at paggawa ay magkaibang pagsusuri
Ang pagbukas ng umiiral na file para dagdagan ay nangangailangan ng access sa pagsulat sa file na iyon at access sa paghahanap sa bawat direktoryo sa landas nito. Ang paggawa ng file ay nangangailangan ng pagsulat at paghahanap sa direktoryong naglalaman nito, dahil nagdaragdag ang operasyon ng pangalan dito. Ang pagpapalit ng file sa pamamagitan ng pagpapalit ng pangalan ay dumadampi rin sa dalawang direktoryo at sa kanilang mga tuntunin sa sticky bit.
| Operation | What must permit it | Typical failure message |
|---|---|---|
| Append to an existing log | File write access, path traversal | Permission denied on the file |
| Create a missing log | Directory write and search access | Permission denied on the path |
| Rename a replacement into place | Both directories, plus sticky restrictions | Permission denied or operation not permitted |
Ang deskriptor na nakabukas na ay nagdaragdag ng ikaapat na kaso. Ang isang proseso ay maaaring humawak ng hawakan sa pagsulat na binuksan bago nito iwanan ang mga pribilehiyo at nabigo pa ring muling buksan ang parehong landas sa ilalim ng huli nitong pagkakakilanlan. Ang mga matagumpay na pagdagdag at ang nabigong paggawa ay maaaring parehong totoo, sa parehong sandali, para sa parehong proseso.
Ang mga default na ACL ay namamana, hindi sila nagbibigay
Ang isang entry na nagsisimula sa default na prefix ay naglalarawan kung ano ang namamana ng mga bagong bagay mula sa direktoryo. Hindi ito nagbibigay ng anuman sa direktoryo mismo, at hindi nito inaayos ang ACL ng file na umiiral na.
namei -l /var/log/openvpn/server.log
getfacl -p /var/log/openvpn
getfacl -p /var/log/openvpn/server.log
Basahin ang mga entry ng access nang hiwalay sa mga default, at basahin ang mask. Ang isang pinangalanang entry na naglilista ng buong karapatan ay maaari pa ring limitahan ng mask, kaya mas mahalaga ang mabisang komento kaysa sa mga titik sa unang linya.
Gamitin ang naresolbang landas sa halip na ang landas sa configuration. Ang isang symbolic link, mount point, o pinaikot na direktoryo ay maaaring maglagay ng tunay na file sa isang lugar na hindi naaabot kailanman ng pahintulot na ibinigay mo. Lakbayin muna ang landas gamit ang tool sa pangalan, pagkatapos ihambing ang bawat antas sa pinag-uusapang account. Ang paghula sa pinakamataas na antas na direktoryo ay kung paano lumalapag ang isang pagwawasto nang isang antas na masyadong mataas.
Kilalanin kung sino ang nagsusulat sa sandaling iyon
Suriin ang service unit, ang mga drop-in nito, at ang sariling mga setting ng account ng daemon bago baguhin ang anuman. Ang prosesong nagdaragdag at ang prosesong muling gumagawa ay maaaring magkaiba: ang katulong sa rotation, manunulat ng status, at mambabasa ng web ay bihirang magbahagi ng pagkakakilanlan.
Ang pagsusulit na pinatakbo mula sa shell ng root ay hindi muling nagagawa ang limitadong serbisyo, at ito ay magtatagumpay habang patuloy na nabibigo ang serbisyo. Ulitin ang nabigong operasyon sa ilalim ng parehong unit, na may parehong account at parehong mga setting ng sandbox. Kung hindi mo kaya, simulan ang unit gamit ang pansamantalang shell at suriin ang pagkakakilanlang iniuulat nito. Anupaman ang iba ay sinusukat ang iyong terminal, hindi ang serbisyo.
Kung tunay na kailangan ang paggawa, bigyan ang manunulat ng access sa nakatalagang direktoryo ng log at panatilihing hiwalay ang access sa pagbasa para sa mga consumer. Ang gawing nakasulat ang isang pinagsasaluhang account o ang buong puno ng application para matugunan ang isang tawag sa pag-log ay nagpapalit ng maliit na problema sa malaki.
I-rotate nang hindi ito muling ipinakilala
Ang muling gumagawa ng file ang nagpapasya sa may-ari at mode nito para sa susunod na siklo, kaya iugnay ang pagwawasto sa configuration ng rotation. Ang kapalit na ginawa sa ilalim ng ibang account, o may bagong ACL, ay nagbabalik ng kabiguan pagkatapos ng matagumpay na pagwawasto.
Itakda ang mode at grupo sa paggawa, hindi pagkatapos, at i-verify ang susunod na rotation sa halip na ang susunod na pagdagdag. Ang pagdagdag ay inuulit lamang ang pagsusulit na naipasa na. Kung nag-aalok ang tool sa rotation ng setting ng create mode, gamitin ito sa halip na chmod pagkatapos ng paggawa. Ang agwat sa pagitan ng paggawa at chmod ay eksaktong sandali kung kailan maaaring mabigo ang susunod na pagsulat.
Kapag nabigo pa rin ang pagtatabas, itigil ang pagdaragdag ng pahintulot
Ang kabiguang tabasin ang isang file na kaya mong sulatan ay hindi ipinapaliwanag ng mga pahintulot sa direktoryo, at hindi makakatulong ang magdagdag ng mas marami. Tingnan sa halip ang mga attribute at ang paghihigpit: pinapayagan ng append-only attribute ang pagsulat sa mode ng pagdagdag lamang, at ang read-only mount o sandbox ng serbisyo ay maaaring tumanggi sa operasyong pinapayagan ng ACL.
Suriin ang mga paghihigpit sa filesystem ng unit at ang mga opsyon sa mount para sa landas, pagkatapos ulitin ang eksaktong operasyong nabigo. Ang pagpapalawak ng pahintulot na hindi kailanman sinangguni ay nagtatago lamang kung aling paghihigpit ang totoo. Alisin ang isang paghihigpit sa isang pagkakataon sa isang itatapong unit, at ibalik ito bago baguhin ang anumang permanente.