Dnevnik se nadodaje, ali se ne može ponovno stvoriti: provjerite ACL mape
Dodavanje u datoteku ne treba novo ime u njezinoj mapi; stvaranje ga treba. Usporedite pristupni ACL s naslijeđenim zadanim vrijednostima prije nego što bilo što proširite.
Dnevnik koji stalno raste prestaje rasti onog trenutka kada ga nešto ponovno stvori, a pogreška kaže da je dopuštenje odbijeno. Primamljiv zaključak je da sama datoteka dnevnika treba više dopuštenja, no datoteka je možda već pisana za isti račun. Dodavanje postojećem imenu i stvaranje novoga dvije su različite provjere, a samo druga konzultira mapu.
Dodavanje i stvaranje različite su provjere
Otvaranje postojeće datoteke za dodavanje zahtijeva pravo pisanja na tu datoteku i pravo pretraživanja duž svake mape u njezinoj putanji. Stvaranje datoteke zahtijeva pisanje i pretraživanje u mapi koja ju sadrži, jer radnja joj dodaje ime. Zamjena datoteke preko preimenovanja dira i obje mape i njihova pravila sticky bita.
| 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 |
Već otvoreni deskriptor dodaje četvrti slučaj. Proces može držati ručku za pisanje otvorenu prije nego što je odbacio privilegije i još uvijek ne može ponovno otvoriti istu putanju pod svojim kasnijim identitetom. Uspješna dodavanja i neuspjelo stvaranje mogu oba biti istinita, u istom trenutku, za isti proces.
Zadani ACL-ovi nasljeđuju se, ne dodjeljuju
Unos koji počinje zadanim prefiksom opisuje što novi objekti nasljeđuju iz mape. On ne daje ništa samoj mapi i ne popravlja ACL datoteke koja već postoji.
namei -l /var/log/openvpn/server.log
getfacl -p /var/log/openvpn
getfacl -p /var/log/openvpn/server.log
Čitajte pristupne unose odvojeno od zadanih i čitajte masku. Imenovani unos koji navodi puna prava još uvijek može biti ograničen maskom, zato je efektivni komentar važniji od slova u prvom retku.
Koristite razriješenu putanju, a ne putanju iz konfiguracije. Simbolička veza, točka montiranja ili rotirana mapa mogu staviti pravu datoteku nekamo gdje dopuštenje koje ste dodijelili nikada ne stiže. Prvo prođite putanjom alatom za imena, zatim usporedite svaku razinu s dotičnim računom. Nagađanje na vršnoj mapi način je na koji popravak sleti jednu razinu previsoko.
Utvrdite tko piše u tom trenutku
Prije bilo kakve promjene provjerite servisnu jedinicu, njezine drop-ine i postavke računa samog daemona. Proces koji dodaje i proces koji ponovno stvara mogu se razlikovati: pomoćnik za rotaciju, pisac statusa i web čitač rijetko dijele identitet.
Testno pokretanje iz root ljuske ne reproducira ograničeni servis, i uspjet će dok servis i dalje ne uspijeva. Reproducirajte neuspjelu radnju pod istom jedinicom, s istim računom i istim postavkama sandboxa. Ako ne možete, pokrenite jedinicu s privremenom ljuskom i provjerite identitet koji prijavljuje. Sve ostalo mjeri vaš terminal, a ne servis.
Ako je stvaranje doista potrebno, dajte piscu pristup namjenskoj mapi dnevnika, a pristup čitanju za potrošače držite odvojeno. Učiniti zajednički račun ili cijelo stablo aplikacije pisivim da bi se zadovoljio jedan poziv za zapisivanje mijenja mali problem za veliki.
Rotirajte bez ponovnog uvođenja problema
Onaj tko ponovno stvara datoteku odlučuje o njezinu vlasniku i načinu za sljedeći ciklus, pa uskladite popravak s konfiguracijom rotacije. Zamjena stvorena pod drugim računom ili sa svježim ACL-om vraća kvar nakon uspješnog ispravka.
Postavite način i grupu pri stvaranju, a ne poslije, i provjerite sljedeću rotaciju, a ne sljedeće dodavanje. Dodavanje samo ponavlja test koji je već prošao. Ako alat za rotaciju nudi postavku načina stvaranja, upotrijebite je umjesto chmoda nakon stvaranja. Razmak između stvaranja i chmoda upravo je trenutak kada sljedeće pisanje može pasti.
Kada skraćivanje ipak ne uspije, prestanite dodavati dopuštenja
Neuspjeh skraćivanja datoteke u koju možete pisati ne objašnjava se dopuštenjima mape, a dodavanje više njih neće pomoći. Umjesto toga pogledajte atribute i ograničenja: atribut samo za dodavanje dopušta pisanje samo u načinu dodavanja, a montiranje samo za čitanje ili sandbox servisa mogu odbiti radnju koju ACL dopušta.
Provjerite ograničenja datotečnog sustava jedinice i opcije montiranja putanje, zatim reproducirajte točnu radnju koja je neuspjela. Širenje dopuštenja koje nikada nije konzultirano samo skriva koje je ograničenje bilo stvarno. Uklonite jedno ograničenje odjednom u privremenoj jedinici i vratite ga prije bilo kakve trajne promjene.