Ein logg som held fram med å veksa sluttar å veksa i det noko gjer han på nytt, og feilen seier at tilgangen er nekta. Den freistande konklusjonen er at loggfila sjølv treng fleire rettar, men fila kan alt vera skrivbar for same konto. Å leggje til i eit eksisterande namn og å opprette eit nytt namn er to ulike kontrollar, og berre den andre spør mappa.

Å leggje til og å opprette er ulike kontrollar

Å opne ei eksisterande fil for tilføying krev skrivetilgang på den fila pluss søketilgang langs kvar mappe i banen. Å opprette ei fil krev skrive- og søketilgang på mappa som held ho, fordi operasjonen legg eit namn til ho. Å byte ut ei fil via omdøyping rører òg begge mappene og sticky-bit-reglane deira.

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

Ein alt open deskriptor legg til eit fjerde tilfelle. Ein prosess kan halde eit skrivehandtak opna før han sleppte privilegia og likevel mislukkast med å opne same bane på nytt under sin seinare identitet. Dei vellukka tilføyingane og den mislukka opprettinga kan båe vera sanne, i same augneblink, for same prosess.

Standard-ACL-ar blir arva, dei gir ikkje

Ei oppføring som byrjar med standardprefikset skildrar kva nye objekt arvar frå mappa. Ho gir ingenting til mappa sjølv, og ho reparerer ikkje ACL-en til ei fil som alt finst.

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

Les tilgangsoppføringane skilt frå standardoppføringane, og les maska. Ei namngitt oppføring som listar fulle rettar kan framleis avgrensast av maska, difor tyder den effektive kommentaren meir enn bokstavane på første linje.

Bruk den oppløyste banen i staden for banen i konfigurasjonen. Ei symbolsk lenkje, eit monteringspunkt eller ei rotert mappe kan plassere den verkelege fila ein stad der retten du gav aldri når. Gå banen med namneverktøyet fyrst, samanlikn så kvart nivå med den aktuelle kontoen. Å gjette på toppmappa er korleis ei retting landar eitt nivå for høgt.

Identifiser kven som skriv i det augneblinken

Sjekk tenesteeininga, drop-in-filene hennar og daemonen sine eigne kontoinnstillingar før du endrar noko. Prosessen som legg til og prosessen som gjer på nytt kan vera ulike: ein rotasjonshjelpar, ein statusskrivar og ein nettlesar deler sjeldan ein identitet.

Ein testkøyring frå eit root-skal gjer ikkje ein avgrensa teneste på nytt, og han vil lukkast medan tenesta held fram med å mislukkast. Gjer den mislukka operasjonen på nytt under same eining, med same konto og same sandkasseinnstillingar. Kan du ikkje, start eininga med eit mellombels skal og sjekk identiteten ho rapporterer. Alt anna måler terminalen din, ikkje tenesta.

Om oppretting verkeleg er naudsynt, gi skrivaren tilgang til den dedikerte loggmappa og hald lesetilgangen for forbrukarar skilt. Å gjere ein delt konto eller heile applikasjonstreet skrivbart for å tilfredsstille eitt loggkall byter eit lite problem mot eit stort.

Roter utan å gjeninnføre det

Den som gjer fila på nytt avgjer eigaren og modusen for neste syklus, så koordiner rettinga med rotasjonskonfigurasjonen. Ei erstatning oppretta under ein annan konto, eller med ein fersk ACL, bringer feilen tilbake etter ei vellukka retting.

Set modus og gruppe ved opprettinga, ikkje etterpå, og stadfest neste rotasjon i staden for neste tilføying. Ei tilføying gentek berre testen som alt har gått gjennom. Om rotasjonsverktøyet tilbyr ei innstilling for opprettingsmodus, bruk ho i staden for chmod etter opprettinga. Gapet mellom oppretting og chmod er nettopp når neste skriving kan mislukkast.

Når avkorting likevel mislukkast, slutt å leggje til rettar

At avkorting av ei fil du kan skrive til mislukkast, blir ikkje forklart av mappetilgangar, og å leggje til fleire av dei vil ikkje hjelpe. Sjå på attributta og innsperringa i staden: eit append-only-attributt tillèt skriving berre i tilføyingsmodus, og ei skriveverna montering eller ei tenestesandkasse kan nekte ein operasjon som ACL-en tillèt.

Sjekk filsystemavgrensingane til eininga og monteringsvala for banen, og gjer så den nøyaktige operasjonen som mislukkast på nytt. Å utvide ein rett som aldri vart rådspurd skjuler berre kva avgrensing som var ekte. Fjern éi avgrensing om gongen i ei eingongseining, og set ho tilbake før du endrar noko permanent.

Relaterte artiklar