Žurnāls papildinās, bet to nevar izveidot no jauna: pārbaudiet direktorijas ACL
Faila papildināšanai tā direktorijā nav vajadzīgs jauns nosaukums; izveidei gan. Pirms kaut ko paplašināt salīdziniet piekļuves ACL ar mantotajām noklusējuma vērtībām.
Žurnāls, kas nepārtraukti aug, pārstāj augt tajā brīdī, kad kaut kas to izveido no jauna, un kļūda saka, ka atļauja ir liegta. Vilinošs secinājums ir tāds, ka pašam žurnāla failam vajag vairāk atļauju, taču fails jau var būt rakstāms tam pašam kontam. Papildināšana pie esoša nosaukuma un jauna nosaukuma izveide ir divas dažādas pārbaudes, un tikai otrā vēršas pie direktorijas.
Papildināšana un izveide ir dažādas pārbaudes
Esoša faila atvēršana papildināšanai prasa rakstīšanas tiesības šajā failā un meklēšanas tiesības katrā tā ceļa direktorijā. Faila izveide prasa rakstīšanu un meklēšanu to saturošajā direktorijā, jo operācija pievieno tai nosaukumu. Faila aizstāšana ar pārdēvēšanu skar abas direktorijas un to sticky-bit noteikumus.
| 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 atvērts deskriptors pievieno ceturto gadījumu. Process var turēt rakstīšanas rokturi, kas atvērts pirms tā atteicās no privilēģijām, un tomēr nespēt no jauna atvērt to pašu ceļu ar savu vēlāko identitāti. Veiksmīgie papildinājumi un neizdevusies izveide var būt abi patiesi tajā pašā brīdī vienam un tam pašam procesam.
Noklusējuma ACL tiek mantoti, tie nepiešķir
Ieraksts, kas sākas ar noklusējuma prefiksu, apraksta, ko jauni objekti manto no direktorijas. Tas nepiešķir neko pašai direktorijai un nelabo jau esoša faila ACL.
namei -l /var/log/openvpn/server.log
getfacl -p /var/log/openvpn
getfacl -p /var/log/openvpn/server.log
Lasiet piekļuves ierakstus atsevišķi no noklusējuma ierakstiem, un lasiet masku. Nosaukts ieraksts, kas uzskaita pilnas tiesības, joprojām var būt ierobežots ar masku, tāpēc efektīvais komentārs ir svarīgāks par pirmās rindas burtiem.
Izmantojiet atrisināto ceļu, nevis konfigurācijā esošo ceļu. Simboliskā saite, montēšanas punkts vai pagriezta direktorija var ievietot īsto failu vietā, kur jūsu piešķirtā atļauja nekad nenonāk. Vispirms izstaigājiet ceļu ar nosaukumu rīku, pēc tam salīdziniet katru līmeni ar attiecīgo kontu. Minēšana augšējā direktorijā ir veids, kā labojums nolaižas par vienu līmeni pārāk augstu.
Nosakiet, kas raksta tajā brīdī
Pirms kaut ko mainīt pārbaudiet pakalpojuma vienību, tās drop-in failus un paša dēmona konta iestatījumus. Papildinošais process un no jauna izveidojošais process var atšķirties: rotācijas palīgs, statusa rakstītājs un tīmekļa lasītājs reti dalās identitātē.
Tests no root čaulas neatkārto ierobežotu pakalpojumu, un tas izdosies, kamēr pakalpojums turpina neizdoties. Atkārtojiet neizdevušos operāciju tajā pašā vienībā, ar to pašu kontu un tiem pašiem sandbox iestatījumiem. Ja nevarat, palaidiet vienību ar pagaidu čaulu un pārbaudiet identitāti, ko tā ziņo. Viss cits mēra jūsu termināli, nevis pakalpojumu.
Ja izveide tiešām ir nepieciešama, piešķiriet rakstītājam piekļuvi īpašajai žurnāla direktorijai, un lasīšanas piekļuvi patērētājiem turiet atsevišķi. Koplietota konta vai visas lietojumprogrammas koka rakstāmu padarīšana viena reģistrēšanas izsaukuma dēļ apmaina mazu problēmu pret lielu.
Rotējiet, neieviešot to no jauna
Tas, kas failu izveido no jauna, izlemj tā īpašnieku un režīmu nākamajam ciklam, tāpēc saskaņojiet labojumu ar rotācijas konfigurāciju. Aizvietotājs, kas izveidots citā kontā vai ar svaigu ACL, pēc veiksmīga labojuma atgriež kļūmi.
Iestatiet režīmu un grupu izveides laikā, nevis pēc tam, un pārbaudiet nākamo rotāciju, nevis nākamo papildinājumu. Papildinājums tikai atkārto jau izturēto testu. Ja rotācijas rīks piedāvā izveides režīma iestatījumu, izmantojiet to chmod vietā pēc izveides. Starpība starp izveidi un chmod ir tieši tas brīdis, kad nākamā rakstīšana var neizdoties.
Kad saīsināšana tomēr neizdodas, pārtrauciet pievienot atļaujas
Faila, kurā varat rakstīt, saīsināšanas neizdevušanās nav izskaidrojama ar direktorijas atļaujām, un to pievienošana nepalīdzēs. Tā vietā skatieties atribūtus un ierobežojumu: append-only atribūts atļauj rakstīt tikai papildināšanas režīmā, un tikai lasīšanai paredzēta montāža vai pakalpojuma sandbox var liegt operāciju, ko ACL atļauj.
Pārbaudiet vienības failu sistēmas ierobežojumus un ceļa montāžas opcijas, pēc tam atkārtojiet tieši to operāciju, kas neizdevās. Tādas atļaujas paplašināšana, kura nekad netika vaicāta, tikai paslēpj, kurš ierobežojums bija īsts. Noņemiet vienu ierobežojumu vienlaikus vienreizējā vienībā un atgrieziet to pirms kaut kā pastāvīga maiņas.