Žurnalas papildomas, bet negali būti sukurtas iš naujo: patikrinkite katalogo ACL
Papildyti failą nereikia naujo vardo jo kataloge; sukurti reikia. Prieš ką nors platindami palyginkite prieigos ACL su paveldėtais numatytaisiais.
Žurnalas, kuris nuolat auga, nustoja augti tą akimirką, kai kažkas jį sukuria iš naujo, o klaida sako, kad leidimas atmestas. Viliojanti išvada yra ta, kad pačiam žurnalo failui reikia daugiau leidimų, tačiau failas jau gali būti rašomas tai pačiai paskyrai. Papildymas prie esamo vardo ir naujo vardo sukūrimas yra du skirtingi patikrinimai, ir tik antrasis kreipiasi į katalogą.
Papildymas ir sukūrimas yra skirtingi patikrinimai
Esamo failo atidarymas papildymui reikalauja rašymo teisės tame faile ir paieškos teisės kiekviename jo kelio kataloge. Failo sukūrimas reikalauja rašymo ir paieškos jį talpinančiame kataloge, nes operacija prideda jam vardą. Failo pakeitimas pervadinant paliečia abu katalogus ir jų sticky-bit taisykles.
| 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 |
Jau atidarytas deskriptorius prideda ketvirtą atvejį. Procesas gali laikyti rašymo rankenėlę, atidarytą prieš atsisakant privilegijų, ir vis tiek nepajėgti iš naujo atidaryti to paties kelio savo vėlesne tapatybe. Sėkmingi papildymai ir nepavykęs sukūrimas gali būti abu teisingi tuo pačiu metu tam pačiam procesui.
Numatytieji ACL paveldimi, jie nesuteikia
Įrašas, prasidedantis numatytuoju priešdėliu, aprašo, ką nauji objektai paveldi iš katalogo. Jis nieko nesuteikia pačiam katalogui ir netaiso jau esamo failo ACL.
namei -l /var/log/openvpn/server.log
getfacl -p /var/log/openvpn
getfacl -p /var/log/openvpn/server.log
Prieigos įrašus skaitykite atskirai nuo numatytųjų, ir skaitykite kaukę. Vardinis įrašas, išvardijantis visas teises, vis tiek gali būti apribotas kaukės, todėl efektyvusis komentaras svarbesnis už pirmosios eilutės raides.
Naudokite išspręstą kelią, o ne konfigūracijoje esantį kelią. Simbolinė nuoroda, prijungimo taškas ar pasuktas katalogas gali patalpinti tikrąjį failą ten, kur jūsų suteiktas leidimas niekada nepasiekia. Pirmiausia pereikite kelią vardų įrankiu, tada palyginkite kiekvieną lygį su atitinkama paskyra. Spėjimas viršutiniame kataloge yra būdas, kuriuo pataisymas nusileidžia vienu lygiu per aukštai.
Nustatykite, kas rašo tuo momentu
Prieš ką nors keisdami patikrinkite paslaugos vienetą, jo drop-in failus ir paties tarnybos paskyros nustatymus. Papildantis procesas ir iš naujo kuriantis procesas gali skirtis: rotacijos pagalbininkas, būsenos rašytojas ir žiniatinklio skaitytojas retai dalijasi tapatybe.
Testas iš root terminalo neatkuria ribojamos paslaugos, ir jis pavyks, kol paslauga toliau nepavyksta. Atkurkite nepavykusią operaciją tame pačiame vienete, su ta pačia paskyra ir tais pačiais sandbox nustatymais. Jei negalite, paleiskite vienetą su laikinu terminalu ir patikrinkite jo pranešamą tapatybę. Visa kita matuoja jūsų terminalą, o ne paslaugą.
Jei sukūrimas tikrai būtinas, suteikite rašytojui prieigą prie skirto žurnalo katalogo, o skaitymo prieigą vartotojams palikite atskirai. Bendra paskyra ar visas programos medis, padarytas rašomu vienam registravimo kvietimui patenkinti, iškeičia mažą problemą į didelę.
Rotuokite neįvesdami to iš naujo
Kas iš naujo sukuria failą, tas nusprendžia jo savininką ir režimą kitam ciklui, todėl derinkite pataisymą su rotacijos konfigūracija. Pakaitalas, sukurtas kitoje paskyroje ar su nauju ACL, grąžina gedimą po sėkmingos korekcijos.
Nustatykite režimą ir grupę kūrimo metu, o ne vėliau, ir tikrinkite kitą rotaciją, o ne kitą papildymą. Papildymas tik pakartoja jau praėjusį testą. Jei rotacijos įrankis siūlo kūrimo režimo nustatymą, naudokite jį vietoj chmod po sukūrimo. Tarpas tarp sukūrimo ir chmod yra būtent tas momentas, kai kitas rašymas gali nepavykti.
Kai trumpinimas vis tiek nepavyksta, nustokite pridėti leidimus
Failo, kurį galite rašyti, trumpinimo nesėkmė nepaaiškinama katalogo leidimais, ir jų pridėjimas nepadės. Vietoj to pažiūrėkite į atributus ir apribojimą: append-only atributas leidžia rašyti tik papildymo režimu, o tik skaitymui skirtas prijungimas ar paslaugos sandbox gali atmesti operaciją, kurią ACL leidžia.
Patikrinkite vieneto failų sistemos apribojimus ir kelio prijungimo parinktis, tada atkurkite tikslią operaciją, kuri nepavyko. Leidimo, į kurį niekada nebuvo kreiptasi, išplėtimas tik paslepia, kuris apribojimas buvo tikras. Pašalinkite po vieną apribojimą vienkartiniame vienete ir grąžinkite jį prieš keisdami ką nors nuolatinio.