A folyamatosan növekvő napló abban a pillanatban abbahagyja a növekedést, amikor valami újra létrehozza, és a hiba azt mondja, hogy az engedély megtagadva. A csábító következtetés az, hogy magának a naplófájlnak több engedélyre van szüksége, pedig a fájl már lehet írható ugyanazon fiók számára. A meglévő névhez fűzés és az új név létrehozása két különböző ellenőrzés, és csak a második kérdezi a könyvtárat.

A hozzáfűzés és a létrehozás különböző ellenőrzés

Egy meglévő fájl hozzáfűzésre való megnyitásához írási jog kell a fájlon, és keresési jog az útvonal minden könyvtárán. Egy fájl létrehozásához írás és keresés kell a tartalmazó könyvtáron, mert a művelet nevet ad hozzá. Egy fájl átnevezéssel történő cseréje mindkét könyvtárat és azok sticky bit szabályait is érinti.

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

Egy már megnyitott leíró negyedik esetet ad. Egy folyamat tarthat olyan írási fogantyút, amelyet a jogosultságok elhagyása előtt nyitott meg, és mégis meghiúsulhat ugyanazon útvonal későbbi identitással való újranyitása. A sikeres hozzáfűzések és a sikertelen létrehozás egyszerre lehet igaz ugyanarra a folyamatra.

Az alapértelmezett ACL-ek öröklődnek, nem adnak jogot

Az alapértelmezett előtaggal kezdődő bejegyzés azt írja le, mit örökölnek az új objektumok a könyvtárból. Semmit nem ad magának a könyvtárnak, és nem javítja a már létező fájl ACL-jét.

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

A hozzáférési bejegyzéseket külön olvassa az alapértelmezettektől, és olvassa a maszkot. Egy teljes jogokat felsoroló nevesített bejegyzést a maszk még korlátozhat, ezért az effektív megjegyzés fontosabb, mint az első sor betűi.

A feloldott útvonalat használja a konfigurációban szereplő helyett. Egy szimbolikus hivatkozás, egy csatolási pont vagy egy elforgatott könyvtár olyan helyre teheti a valódi fájlt, ahová a megadott engedély soha nem ér el. Először a nézeszközzel járja be az útvonalat, majd hasonlítsa össze minden szintet a szóban forgó fiókkal. A felső szintű könyvtár kitalálása az, amitől egy javítás egy szinttel túl magasra kerül.

Azonosítsa, ki ír abban a pillanatban

Bármit módosítana, ellenőrizze a szolgáltatási egységet, annak drop-injeit és a daemon saját fiókbeállításait. A hozzáfűző folyamat és az újra létrehozó folyamat különbözhet: egy rotációs segéd, egy állapotíró és egy webes olvasó ritkán osztozik identitáson.

A root héjból futtatott teszt nem reprodukálja a korlátozott szolgáltatást, és sikerülni fog, miközben a szolgáltatás továbbra is meghiúsul. Reprodukálja a sikertelen műveletet ugyanazon egység alatt, ugyanazzal a fiókkal és ugyanazokkal a sandbox-beállításokkal. Ha nem tudja, indítsa el az egységet egy ideiglenes héjjal, és ellenőrizze a jelentett identitást. Bármi más a terminálját méri, nem a szolgáltatást.

Ha a létrehozás valóban szükséges, adjon az írónak hozzáférést a dedikált naplókönyvtárhoz, és a fogyasztók olvasási hozzáférését tartsa külön. Egy megosztott fiók vagy egy teljes alkalmazásfa írhatóvá tétele egyetlen naplózási hívás kedvéért egy kis problémát cserél nagyra.

Rotáljon anélkül, hogy visszahozná

Aki újra létrehozza a fájlt, az dönt a tulajdonosáról és módjáról a következő ciklusra, ezért hangolja össze a javítást a rotációs konfigurációval. Egy másik fiók alatt vagy friss ACL-lel létrehozott csere a sikeres javítás után visszahozza a hibát.

A módot és a csoportot létrehozáskor állítsa be, ne utólag, és a következő rotációt ellenőrizze, ne a következő hozzáfűzést. A hozzáfűzés csak megismétli a már átment tesztet. Ha a rotációs eszköz kínál létrehozási mód beállítást, használja azt a létrehozás utáni chmod helyett. A létrehozás és a chmod közötti rés pontosan az, amikor a következő írás meghiúsulhat.

Amikor a csonkítás mégis meghiúsul, hagyja abba az engedélyek hozzáadását

Egy olyan fájl csonkításának sikertelenségét, amelybe írhat, nem a könyvtár engedélyei magyarázzák, és több engedély hozzáadása nem segít. Inkább az attribútumokat és a korlátozást nézze: az append-only attribútum csak hozzáfűzési módban enged írást, egy csak olvasható csatolás vagy egy szolgáltatás sandbox pedig megtagadhat egy olyan műveletet, amelyet az ACL engedélyez.

Ellenőrizze az egység fájlrendszer-korlátozásait és az útvonal csatolási beállításait, majd reprodukálja a pontos műveletet, amely meghiúsult. Egy soha nem kérdezett engedély kiterjesztése csak elrejti, melyik korlátozás volt valódi. Egyetlen korlátozást távolítson el egyszerre egy ideiglenes egységben, és állítsa vissza, mielőtt bármi véglegeset módosítana.

Kapcsolódó cikkek