Logi, mis üha kasvab, lakkab kasvamast hetkel, mil miski selle uuesti loob, ja veateade ütleb juurdepääs keelatud. Ahvatlev järeldus on, et fail ise vajab rohkem õigusi, kuigi sama konto võib faili juba kirjutada. Olemasolevale nimele lisamine ja uue loomine on erinevad kontrollid ning ainult teine küsib kataloogi käest.

Lisamine ja loomine on erinevad kontrollid

Olemasoleva faili avamine lisamiseks nõuab kirjutamisõigust sellele failile ja otsinguõigust igas selle tee kataloogis. Faili loomine nõuab kirjutamis- ja otsinguõigust seda sisaldavale kataloogile, sest toiming lisab sinna nime. Faili asendamine ümbernimetamise teel puudutab mõlemat kataloogi ja nende sticky-biti reegleid.

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

Juba avatud kirjeldaja lisab neljanda juhtumi. Protsess võib hoida kirjutatavat käepidet, mis avati enne õiguste mahavõtmist, ja ikkagi ebaõnnestuda sama tee uuesti avamisel oma hilisema identiteediga. Õnnestunud lisamised ja ebaõnnestunud loomine võivad sama protsessi puhul olla korraga tõesed.

Vaikimisi ACL-id päranduvad, need ei anna õigusi

Vaike-eesliitega kirje kirjeldab, mida uued objektid kataloogist pärivad. See ei anna kataloogile endale midagi ega paranda juba olemasoleva faili ACL-i.

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

Loe juurdepääsukirjeid vaikimisi kirjetest eraldi ja loe maski. Nimega kirje, mis loetleb täisõigused, võib ikkagi olla maskiga piiratud, seepärast on kehtivuse kommentaar tähtsam kui esimese rea tähed.

Kasuta lahendatud teed, mitte konfiguratsioonis olevat teed. Sümbolviide, mount-punkt või pööratud kataloog võib panna tegeliku faili sinna, kuhu antud õigus kunagi ei ulatu. Käi tee esmalt läbi namei abil ja võrdle siis iga taset kõnealuse kontoga. Ülemise kataloogi oletamine on viis, kuidas parandus maandub ühe taseme võrra liiga kõrgele.

Tehke kindlaks, kes sel hetkel kirjutab

Kontrolli teenuse üksust, selle drop-in-e ja deemon enda konto seadeid enne, kui midagi muudad. Lisav protsess ja uuesti loov protsess võivad olla erinevad: pööramisabi, olekukirjutaja ja veebilugeja jagavad identiteeti harva.

Juurkasutaja shellist tehtud proovijooks ei taasta piiratud teenust, ja see õnnestub, samal ajal kui teenus jätkab ebaõnnestumist. Taasta ebaõnnestunud toiming sama üksuse all, sama konto ja samade sandbox-seadetega. Kui sa ei suuda, käivita üksus ajutise shelliga ja kontrolli identiteeti, mida see teatab. Kõik muu mõõdab sinu terminali, mitte teenust.

Kui loomine on tõesti vajalik, anna kirjutajale juurdepääs spetsiaalsele logikataloogile ja hoia lugejate lugemisõigus eraldi. Jagatud konto või terve rakendusepuu kirjutatavaks muutmine ühe logikutse rahuldamiseks vahetab väikese probleemi suure vastu.

Pööra, ilma et viga tagasi tuleks

See, kes faili uuesti loob, otsustab selle omaniku ja režiimi järgmiseks tsükliks, seega kooskõlasta parandus pööramise konfiguratsiooniga. Asendus, mis luuakse teise konto all või värske ACL-iga, toob vea pärast edukat parandust tagasi.

Määra režiim ja grupp loomise ajal, mitte hiljem, ja kontrolli järgmist pööramist, mitte järgmist lisamist. Lisamine kordab ainult testi, mis juba läbis. Kui pööramisriist pakub loomisrežiimi seadet, kasuta seda loomisjärgse chmodi asemel. Vahe loomise ja chmodi vahel on täpselt see, millal järgmine kirjutamine võib ebaõnnestuda.

Kui kärpimine siiski ebaõnnestub, lõpeta õiguste lisamine

Faili kärpimise ebaõnnestumist, mida saad kirjutada, ei seleta kataloogiõigused ja nende lisamine ei aita. Vaata hoopis atribuute ja piiramist: ainult lisamise atribuut lubab kirjutada üksnes lisamisrežiimis, ning kirjutuskaitstud mount või teenuse sandbox võib keelata toimingu, mille ACL lubab.

Kontrolli üksuse failisüsteemi piiranguid ja tee mount-valikud, seejärel taasta täpne toiming, mis ebaõnnestus. Õiguse laiendamine, mille käest kunagi ei küsitud, varjab ainult seda, milline piirang oli tegelik. Eemalda üks piirang korraga visatavas üksuses ja võta see tagasi enne, kui muud midagi püsivat.

Seotud artiklid