Y mac.py wedi’i olygu nad yw’n newid dim yw’r arwydd cyntaf arferol. Nid y ffeil ar y disg yw’r hyn y mae Access Server yn ei redeg; mae’r gwasanaeth dilysu yn llwytho’r sgript o gronfa ddata ffurfweddu’r gweinydd, a’r copi storio hwnnw sy’n penderfynu mewngofnodi. Hyd nes y caiff y gwerth storio ei ddisodli, dim ond profi bod yr hen sgript yn dal i weithio y mae pob prawf.

Mae tri amod yn penderfynu’r gwaith: a gafodd y gwerth ei roi yn y gronfa ddata ffurfweddu erioed, a gafodd y gwasanaeth orchymyn i’w ail-lwytho, ac a yw’r cod a newidiasoch yn rhedeg fesul cysylltiad mewn gwirionedd. Mae gan bob un arwydd gwahanol, ac mae trwsio’r un anghywir yn gwastraffu ffenestr gynnal a chadw.

Ffynhonnell yw’r ffeil, nid y copi sy’n rhedeg

Mae Access Server yn cadw’r sgript post-auth o dan yr allwedd auth.module.post_auth_script. Mae golygu’r ffeil yn diweddaru eich copi gwaith yn unig. Mae’r daemon yn darllen y gwerth storio, felly mae’r olygfa yn aros yn anweledig nes eich bod yn dileu’r cofnod hen ac yn rhoi’r ffeil newydd yn ei le. Y gwerth storio hwnnw yw’r unig gopi y mae’r gwasanaeth dilysu yn ymgynghori ag ef.

Darllenwch ef cyn ei newid. Os yw eisoes yn cyfateb i’r ffeil a olygasoch, nid yw’r broblem yn y storfa a dylech neidio i gwestiwn yr amrediad. Os yw’n dangos fersiwn hŷn, ni chyrhaeddodd y newid y gwasanaeth.

./sacli -k auth.module.post_auth_script ConfigGet

Disodlwch y copi storio, yna ei gymhwyso

Nid addurn yw dileu cyn ysgrifennu. Mae ConfigPut gyda --value_file yn disodli’r gwerth mewn un cam, ac mae ConfigDel yn gyntaf yn gwneud hi’n amhosibl gadael cofnod hen neu lygredig ar ôl. Cadwch gopi o’r sgript weithio y tu allan i’r cyfeiriadur sgriptiau cyn dechrau.

./sacli -k auth.module.post_auth_script ConfigDel
# store the file, then apply it
./sacli -k auth.module.post_auth_script --value_file=/root/post_auth.py ConfigPut
./sacli start

Mae sacli start yn cymhwyso’r ffurfweddiad newidiedig i’r gwasanaethau mewnol, a dyna sy’n gwneud i’r sgript newydd ddod i rym. Nid yw hyn yr un peth ag ailgychwyn y peiriant cyfan na’r daemon, ac ni ddylid ei ddisodli ganddo oni bai bod y newid a wnewch yn gofyn am hynny.

Defnyddiwch lwybr absoliwt ar gyfer y ffeil werth a chadarnhewch y gall root ei darllen. Mae llwybr sy’n datrys o’ch plisgyn ond nid o gyfrif y gwasanaeth yn cynhyrchu gwerth storio sy’n edrych yn iawn yn ConfigGet ac yn methu ar y mewngofnodi cyntaf. Gwiriwch y canlyniad storio unwaith eto ar ôl sacli start, nid o’r blaen.

Amrediad modiwl neu fesul cysylltiad: ble mae’r chwiliad yn perthyn

Mae Python yn rhedeg datganiadau lefel modiwl unwaith, pan lwythir y sgript. Felly mae ymholiad cronfa ddata a ysgrifennwyd ar frig y ffeil yn darllen y tabl adeg llwytho ac yn cadw’r ateb hwnnw ar gyfer pob cysylltiad diweddarach. Dyna’r ail reswm pam mae olygfa yn ymddangos fel pe na bai’n gwneud dim: mae’r cod yn rhedeg, ond nid pan fyddwch yn disgwyl.

Rhowch yr ymholiad y tu mewn i’r triniwr post_auth fel ei fod yn gweithredu ar gyfer pob dilysiad. Cadwch y llofnod dogfennedig, addaswch y canlyniad dilysu y mae’r triniwr yn ei dderbyn, a dychwelwch yr un gwrthrych yn hytrach na rhif noeth.

Cadwch y trin cysylltiad y tu mewn i’r triniwr hefyd. Gall y gweinydd gau cysylltiad a agorwyd wrth fewnforio cyn i’r defnyddiwr cyntaf fewngofnodi, ac mae’r gwall sy’n deillio yn edrych fel manylion mewngofnodi a wrthodwyd yn hytrach na sgript wedi torri.

Dau lwybr gwrthod, un perchennog

Os y penderfyniad yw ymholiad lleol, y triniwr Python sy’n berchen ar y canlyniad. Os yw’n wiriad HTTP allanol, gadewch i statws allan y gorchymyn gario’r ateb: mae lapio sy’n gadael gyda chod nad yw’n sero yn gwrthod y mewngofnodi, a daw statws y gorchymyn olaf yn statws y sgript heb exit penodol.

Cadwch y gyfrinach allan o restr y prosesau. Mae ffeil y gellir ei darllen gan root neu werth amgylchedd a basiwyd gan y gwasanaeth yn fwy diogel nag ymresymiad y gall unrhyw ddefnyddiwr lleol ei ddarllen o ps. Pinwch y pen draw mewn newidyn cyn yr alwad, fel bod gwall teipio yn methu adeg ffurfweddu yn hytrach nag yn ystod mewngofnodi rhywun. Cylchdro’wch y gyfrinach honno yn yr un ffordd ag unrhyw gyfrifad arall.

Dewiswch un perchennog fesul gwiriad. Mae sgript sy’n holi’r gronfa ddata ac yn galw gwasanaeth HTTP angen rheol flaenoriaeth ddatganedig ar gyfer yr achos pan fydd y ddau yn anghytuno, neu ni fydd y rheswm gwrthod yn y cofnod yn cyfateb i’r hyn a ddywedwyd wrth y defnyddiwr.

Cymhwyswch ef heb gloi allan y gweinyddwr

Mae dwy fesur diogelu yn gwneud y newid yn wrthdro: ail gyfrif gweinyddol nad yw’n dibynnu ar y sgript, a chopi hysbys dda a gedwir y tu allan i’r cyfeiriadur sgriptiau. Cymhwyswch y newid mewn ffenestr gynnal a chadw, yna gwyliwch un mewngofnodi prawf ac un gwrthodiad bwriadol cyn datgysylltu. Os yw’r cofnod yn dangos gwall cystrawen yn lle penderfyniad dilysu, mae’r sgript storio wedi torri a bydd pob mewngofnodi yn methu.

Mae dau amod yn dweud aros: ni allwch ddarllen y ffeil werth fel root, neu nid oes gennych ail ffordd i mewn i’r rhyngwyneb gweinyddol. Mae’r ddau yn troi newid bach yn gloi allan, ac nid yw’r un ohonynt yn werth ei brofi ar weinydd cynhyrchu ar ddiwedd y dydd. Mae dogfennaeth Access Server yn ymdrin â’r rhyngwyneb post-auth a’i feysydd a gefnogir.

Erthyglau cysylltiedig