’n Log wat aanhou groei, hou op groei sodra iets dit herskep, en die fout sê permission denied. Die aanloklike gevolgtrekking is dat die loglêer self meer regte nodig het, maar die lêer is dalk reeds skryfbaar deur dieselfde rekening. Om by ’n bestaande naam aan te voeg en om ’n nuwe een te skep, is verskillende kontroles, en net die tweede een raadpleeg die gids.

Voeg by en skep is verskillende kontroles

Om ’n bestaande lêer vir byvoeging oop te maak, vereis skryftoegang op daardie lêer plus soektoegang langs elke gids in sy pad. Om ’n lêer te skep, vereis skryf- en soektoegang op die bevatende gids, want die bewerking voeg ’n naam daarby. Om ’n lêer deur ’n hernoeming te vervang, raak albei gidse en hul sticky-bit-reëls ook.

OperationWhat must permit itTypical failure message
Append to an existing logFile write access, path traversalPermission denied on the file
Create a missing logDirectory write and search accessPermission denied on the path
Rename a replacement into placeBoth directories, plus sticky restrictionsPermission denied or operation not permitted

’n Reeds oop descriptor voeg ’n vierde geval by. ’n Proses kan ’n skryfbare handvatsel hou wat oopgemaak is voordat dit voorregte laat vaar het, en steeds versuim om dieselfde pad onder sy latere identiteit weer oop te maak. Die geslaagde byvoegings en die mislukte skepping kan albei waar wees, op dieselfde oomblik, vir dieselfde proses.

Verstek-ACL’s erf, hulle verleen nie

’n Inskrywing wat met die verstekvoorvoegsel begin, beskryf wat nuwe objekte van die gids erf. Dit verleen niks aan die gids self nie, en dit herstel nie die ACL van ’n lêer wat reeds bestaan nie.

namei -l /var/log/openvpn/server.log
getfacl -p /var/log/openvpn
getfacl -p /var/log/openvpn/server.log

Lees die toegangsinskrywings apart van die verstekinskrywings, en lees die masker. ’n Genoemde inskrywing wat volle regte lys, kan steeds deur die masker beperk word, en daarom is die doeltreffende opmerking belangriker as die letters op die eerste reël.

Gebruik die opgeloste pad eerder as die pad in die konfigurasie. ’n Simboliese skakel, ’n monteerpunt of ’n geroteerde gids kan die werklike lêer êrens plaas waar die toestemming wat jy verleen het nooit bereik nie. Stap die pad eers met die naamgereedskap, en vergelyk dan elke vlak met die betrokke rekening. Om by die boonste gids te raai, is hoe ’n regstelling een vlak te hoog beland.

Identifiseer wie op daardie oomblik skryf

Kontroleer die diens-eenheid, sy drop-ins en die daemon se eie rekeninginstellings voordat jy iets verander. Die proses wat byvoeg en die proses wat herskep, kan verskillend wees: ’n rotasiehulp, ’n statuskrywer en ’n webleser deel selde ’n identiteit.

’n Toetslopie uit ’n root-dop reproduseer nie ’n beperkte diens nie, en dit sal slaag terwyl die diens aanhou misluk. Reproduseer die mislukte bewerking onder dieselfde eenheid, met dieselfde rekening en dieselfde sandbox-instellings. As jy dit nie kan nie, begin die eenheid met ’n tydelike dop en kyk watter identiteit dit rapporteer. Enigiets anders meet jou terminaal eerder as die diens.

As skepping werklik nodig is, verleen die skrywer toegang tot die toegewyde loggids en hou leestoegang vir verbruikers apart. Om ’n gedeelde rekening of ’n hele toepassingsboom skryfbaar te maak om een logoproepe te bevredig, ruil ’n klein probleem vir ’n groot een.

Roteer sonder om dit weer in te bring

Wie die lêer herskep, besluit sy eienaar en modus vir die volgende siklus, so koördineer die regstelling met die rotasiekonfigurasie. ’n Vervanging wat onder ’n ander rekening of met ’n nuwe ACL geskep is, bring die mislukking terug ná ’n suksesvolle regstelling.

Stel die modus en die groep met skepping, nie daarna nie, en verifieer die volgende rotasie eerder as die volgende byvoeging. ’n Byvoeging herhaal net die toets wat reeds geslaag het. As die rotasieinstrument ’n skeppingsmodus-instelling bied, gebruik dit eerder as ’n chmod ná skepping. Die gaping tussen skepping en chmod is juis wanneer die volgende skryf kan misluk.

Wanneer afkapping tog misluk, hou op om regte by te voeg

’n Mislukking om ’n lêer af te kap wat jy kan skryf, word nie deur gidsregte verklaar nie, en om meer daarvan by te voeg sal nie help nie. Kyk eerder na die attribute en die confinement: ’n append-only-attribute laat skryf net in byvoegmodus toe, en ’n lees-alleen-monteerpunt of ’n diens-sandbox kan ’n bewerking weier wat die ACL toelaat.

Kontroleer die eenheid se lêerstelselbeperkings en die monteeropsies vir die pad, en reproduseer dan die presiese bewerking wat misluk het. Om ’n toestemming uit te brei wat nooit geraadpleeg is nie, verberg net watter beperking werklik was. Verwyder een beperking op ’n slag in ’n wegdoenbare eenheid, en draai dit terug voordat jy iets permanent verander.

Verwante artikels