Urejen mac.py, ki ne spremeni ničesar, je običajen prvi simptom. Datoteka na disku ni tisto, kar izvaja Access Server; storitev preverjanja naloži skript iz konfiguracijske zbirke podatkov strežnika in prav ta shranjena kopija odloči o prijavi. Dokler shranjena vrednost ni zamenjana, vsak test dokaže le, da stari skript še deluje.

Delo določajo trije pogoji: ali je bila vrednost kdaj vstavljena v konfiguracijsko zbirko, ali je storitev dobila ukaz, naj jo znova naloži, in ali se spremenjena koda res izvaja pri vsaki povezavi. Vsak ima drugačen simptom in popravljanje napačnega zapravi servisno okno.

Datoteka je vir, ne delujoča kopija

Access Server hrani skript post-auth pod ključem auth.module.post_auth_script. Urejanje datoteke posodobi le vašo delovno kopijo. Demon bere shranjeno vrednost, zato sprememba ostane nevidna, dokler ne izbrišete starega vnosa in ne postavite nove datoteke na njegovo mesto. Ta shranjena vrednost je edina kopija, ki jo storitev preverjanja pregleda.

Preberite jo, preden jo spremenite. Če se že ujema z datoteko, ki ste jo uredili, težava ni v shranjevanju in pojdite na vprašanje obsega. Če prikazuje starejšo različico, sprememba ni prišla do storitve.

./sacli -k auth.module.post_auth_script ConfigGet

Zamenjajte shranjeno kopijo in jo nato uporabite

Brisanje pred pisanjem ni okras. ConfigPut s --value_file zamenja vrednost v enem koraku, ConfigDel pa najprej onemogoči, da bi ostal zastarel ali poškodovan vnos. Pred začetkom shranite kopijo delujočega skripta zunaj mape skriptov.

./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

sacli start uporabi spremenjeno konfiguracijo na notranjih storitvah in prav to uveljavi novi skript. To ni isto kot ponovni zagon celotnega stroja ali demona in se s tem ne sme nadomestiti, razen če vaša sprememba to zahteva.

Uporabite absolutno pot do datoteke z vrednostjo in potrdite, da jo root lahko prebere. Pot, ki se razreši iz vaše lupine, ne pa iz računa storitve, ustvari shranjeno vrednost, ki je videti pravilna v ConfigGet in spodleti pri prvi prijavi. Preverite shranjeni rezultat še enkrat po sacli start, ne pred tem.

Obseg modula ali na povezavo: kam sodi poizvedba

Python izvede stavke na ravni modula enkrat, ob nalaganju skripta. Zato poizvedba v bazo, napisana na vrhu datoteke, prebere tabelo ob nalaganju in ta odgovor obdrži za vsako poznejšo povezavo. To je drugi razlog, da je sprememba videti brez učinka: koda se izvaja, a ne takrat, ko pričakujete.

Postavite poizvedbo v obravnavo post_auth, da se izvede pri vsakem preverjanju. Ohranite dokumentirani podpis, prilagodite rezultat preverjanja, ki ga obravnava prejme, in vrnite isti objekt namesto golega števila.

Tudi obravnavo povezave imejte znotraj obravnave. Povezavo, odprto pri uvozu, lahko strežnik zapre, preden se prijavi prvi uporabnik, in nastala napaka je videti kot zavrnjene poverilnice, ne kot pokvarjen skript.

Dve poti zavrnitve, en lastnik

Če je odločitev lokalna poizvedba, je rezultat v lasti obravnave v Pythonu. Če gre za zunanje preverjanje HTTP, naj odgovor nosi izhodni status ukaza: ovoj, ki se konča z neničelno kodo, prijavo zavrne in status zadnjega ukaza postane status skripta brez izrecnega exit.

Skrivnost imejte zunaj seznama procesov. Datoteka, berljiva za root, ali vrednost okolja, ki jo posreduje storitev, je varnejša od argumenta, ki ga lahko kateri koli lokalni uporabnik prebere iz ps. Pred klicem pripnite končno točko v spremenljivko, da tipkarska napaka spodleti pri konfiguraciji in ne med prijavo nekoga. To skrivnost zavrtite tako kot vse druge poverilnice.

Izberite enega lastnika na preverjanje. Skript, ki poizveduje v bazo in kliče storitev HTTP, potrebuje razglašeno pravilo prednosti za primer, ko se oba razhajata, sicer se razlog zavrnitve v dnevniku ne bo ujemal s tem, kar je bilo povedano uporabniku.

Uporabite brez zaklepa skrbnika

Dve varovalki naredita spremembo povratno: drug skrbniški račun, ki ni odvisen od skripta, in znana dobra kopija, shranjena zunaj mape skriptov. Spremembo uporabite v servisnem oknu in nato pred odklopom opazujte eno preskusno prijavo in eno namerno zavrnitev. Če dnevnik pokaže skladenjsko napako namesto odločitve o preverjanju, je shranjeni skript pokvarjen in vsaka prijava bo spodletela.

Dva pogoja pravita počakajte: datoteke z vrednostjo ne morete prebrati kot root ali pa nimate druge poti v skrbniški vmesnik. Oba spremenita majhno spremembo v zaklep in nobeno ni vredno preizkusa na produkcijskem strežniku ob koncu dneva. Dokumentacija Access Server pokriva vmesnik post-auth in njegova podprta polja.

Sorodni članki