Mae’r log yn tyfu ond ni ellir ei ail-greu: gwiriwch ACL y cyfeiriadur
Nid oes angen enw newydd yn ei gyfeiriadur i atodi at ffeil; mae creu un yn gofyn amdano. Cymharwch yr ACL mynediad â’r rhai diofyn etifeddol cyn lledu unrhyw beth.
Mae log sy’n tyfu’n barhaus yn stopio tyfu yr eiliad y mae rhywbeth yn ei ail-greu, ac mae’r gwall yn dweud permission denied. Y casgliad deniadol yw bod angen mwy o ganiatadau ar y ffeil log ei hun, ond efallai bod y ffeil eisoes yn ysgrifennadwy gan yr un cyfrif. Mae atodi at enw sy’n bodoli a chreu un newydd yn wiriadau gwahanol, a dim ond yr ail sy’n ymgynghori â’r cyfeiriadur.
Mae atodi a chreu yn wiriadau gwahanol
Mae agor ffeil sy’n bodoli ar gyfer atodi angen caniatâd ysgrifennu ar y ffeil honno a chaniatâd chwilio ar hyd pob cyfeiriadur yn ei llwybr. Mae creu ffeil angen ysgrifennu a chwilio yn y cyfeiriadur sy’n ei chynnwys, oherwydd mae’r llawdriniaeth yn ychwanegu enw ato. Mae disodli ffeil trwy ail-enwi yn cyffwrdd y ddau gyfeiriadur a’u rheolau sticky bit hefyd.
| 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 |
Mae disgrifydd sydd eisoes ar agor yn ychwanegu pedwerydd achos. Gall proses ddal handlen ysgrifennadwy a agorwyd cyn iddi ollwng ei braint ac yn dal i fethu ag ail-agor yr un llwybr o dan ei hunaniaeth ddiweddarach. Gall yr atodiadau llwyddiannus a’r creu a fethodd fod yn wir ill dau, ar yr un eiliad, ar gyfer yr un broses.
Mae ACLau diofyn yn etifeddu, nid yn rhoi
Mae cofnod sy’n dechrau â’r rhagddodiad diofyn yn disgrifio’r hyn y mae gwrthrychau newydd yn ei etifeddu o’r cyfeiriadur. Nid yw’n rhoi unrhyw beth i’r cyfeiriadur ei hun, ac nid yw’n trwsio ACL ffeil sy’n bodoli eisoes.
namei -l /var/log/openvpn/server.log
getfacl -p /var/log/openvpn
getfacl -p /var/log/openvpn/server.log
Darllenwch y cofnodion mynediad ar wahân i’r rhai diofyn, a darllenwch y mwgwd. Gall cofnod enwir sy’n rhestru hawliau llawn gael ei gyfyngu gan y mwgwd o hyd, a dyna pam mae’r sylw effeithiol yn bwysicach na’r llythrennau ar y llinell gyntaf.
Defnyddiwch y llwybr wedi’i ddatrys yn hytrach na’r llwybr yn y ffurfwedd. Gall cysylltiad symbolaidd, pwynt mowntio neu gyfeiriadur wedi’i gylchdroi roi’r ffeil wirioneddol yn rhywle nad yw’r caniatâd a roddwyd gennych byth yn cyrraedd. Cerddwch y llwybr gyda’r offeryn enwau yn gyntaf, yna cymharwch bob lefel â’r cyfrif dan sylw. Dyfalu am y cyfeiriadur uchaf yw sut mae trwsiad yn glanio un lefel yn rhy uchel.
Nodwch pwy sy’n ysgrifennu ar yr eiliad honno
Gwiriwch uned y gwasanaeth, ei drop-inau a gosodiadau cyfrif y daemon ei hun cyn newid unrhyw beth. Gall y broses sy’n atodi a’r broses sy’n ail-greu fod yn wahanol: anaml y bydd cynorthwyydd cylchdro, ysgrifennwr statws a darllenydd gwe yn rhannu hunaniaeth.
Nid yw rhediad prawf o gragen root yn ailgynhyrchu gwasanaeth cyfyngedig, a bydd yn llwyddo tra bo’r gwasanaeth yn parhau i fethu. Ailgynhyrchwch y llawdriniaeth a fethodd o dan yr un uned, gyda’r un cyfrif a’r un gosodiadau sandbox. Os na allwch, cychwynnwch yr uned â chragen dros dro a gwiriwch yr hunaniaeth y mae’n ei hadrodd. Mae unrhyw beth arall yn mesur eich terfynell, nid y gwasanaeth.
Os oes wir angen creu, rhowch fynediad i’r ysgrifennwr at y cyfeiriadur log pwrpasol a chadwch fynediad darllen ar gyfer defnyddwyr ar wahân. Mae gwneud cyfrif a rennir neu goeden gyfan o raglen yn ysgrifennadwy i fodloni un alwad logio yn cyfnewid problem fach am un fawr.
Cylchdrowch heb ei ailgyflwyno
Pwy bynnag sy’n ail-greu’r ffeil sy’n penderfynu ei pherchennog a’i modd ar gyfer y cylch nesaf, felly cydlynwch y trwsiad â’r ffurfwedd cylchdro. Mae disodliad a grewyd o dan gyfrif gwahanol, neu ag ACL newydd, yn dod â’r methiant yn ôl ar ôl cywiriad llwyddiannus.
Gosodwch y modd a’r grŵp wrth greu, nid wedyn, a gwiriwch y cylchdro nesaf yn hytrach na’r atodiad nesaf. Nid yw atodiad ond yn ailadrodd y prawf sydd eisoes wedi pasio. Os yw’r offeryn cylchdro yn cynnig gosodiad modd creu, defnyddiwch hwnnw yn lle chmod ar ôl creu. Y bwlch rhwng creu a chmod yw’n union pryd y gall y ysgrifen nesaf fethu.
Pan fydd tocio yn methu beth bynnag, peidiwch ag ychwanegu caniatadau
Nid yw methiant i docio ffeil y gallwch ei hysgrifennu yn cael ei esbonio gan ganiatadau’r cyfeiriadur, ac ni fydd ychwanegu rhagor ohonynt yn helpu. Edrychwch ar yr nodweddion a’r cyfyngiad yn lle hynny: mae nodwedd append-only yn caniatáu ysgrifennu mewn modd atodi yn unig, a gall mownt darllen-yn-unig neu sandbox gwasanaeth wrthod llawdriniaeth y mae’r ACL yn ei chaniatáu.
Gwiriwch gyfyngiadau system ffeiliau’r uned a’r opsiynau mowntio ar gyfer y llwybr, yna ailgynhyrchwch yr union lawdriniaeth a fethodd. Nid yw ehangu caniatâd na ofynnwyd iddo erioed yn gwneud dim ond cuddio pa gyfyngiad oedd yn real. Tynnwch un cyfyngiad ar y tro mewn uned dafladwy, a’i wrthdroi cyn newid unrhyw beth parhaol.