Access Server eirab kettale muudetud post_auth skripti
Faili post_auth kettal muutmine ei tee midagi: Access Server käivitab konfiguratsiooni andmebaasis oleva koopia. Järgige otsustusteed ja sacli käske.
Muudetud mac.py, mis ei muuda midagi, on tavaline esimene sümptom. Kettal olev fail ei ole see, mida Access Server käivitab; autentimisteenus laadib skripti serveri konfiguratsiooni andmebaasist ja just see salvestatud koopia otsustab sisselogimise. Kuni salvestatud väärtust ei ole asendatud, tõestab iga katse ainult seda, et vana skript töötab endiselt.
Tööd määravad kolm tingimust: kas väärtus pandi kunagi konfiguratsiooni andmebaasi, kas teenusele anti käsk see uuesti laadida ja kas muudetud kood tõesti käivitub iga ühenduse korral. Igal on erinev sümptom ja vale parandamine raiskab hooldusakna.
Fail on allikas, mitte töötav koopia
Access Server hoiab post-auth skripti võtme auth.module.post_auth_script all. Faili muutmine uuendab ainult teie töökoopiat. Deemon loeb salvestatud väärtust, seega jääb muudatus nähtamatuks, kuni kustutate vana kirje ja panete uue faili selle asemele. See salvestatud väärtus on ainus koopia, mida autentimisteenus vaatab.
Lugege seda enne muutmist. Kui see juba ühtib failiga, mida muutsite, ei ole probleem salvestuses ja liikuge ulatuse küsimuse juurde. Kui see näitab vanemat versiooni, ei jõudnud muudatus teenuseni.
./sacli -k auth.module.post_auth_script ConfigGetAsendage salvestatud koopia ja seejärel rakendage see
Enne kirjutamist kustutamine ei ole kaunistus. ConfigPut koos --value_file asendab väärtuse ühe sammuga ja ConfigDel kõigepealt teeb võimatuks jätta maha aegunud või rikutud kirje. Hoidke töötava skripti koopiat enne alustamist väljaspool skriptide kataloogi.
./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 startsacli start rakendab muudetud konfiguratsiooni sisemistele teenustele ja just see paneb uue skripti kehtima. See ei ole sama mis kogu masina või deemoni taaskäivitamine ja seda ei tohiks sellega asendada, kui teie muudatus seda ei nõua.
Kasutage väärtusfaili jaoks absoluutset teed ja veenduge, et root saab seda lugeda. Tee, mis laheneb teie kestast, kuid mitte teenusekontost, annab salvestatud väärtuse, mis näeb välja korras ConfigGet juures ja ebaõnnestub esimesel sisselogimisel. Kontrollige salvestatud tulemust veel kord pärast sacli start, mitte enne.
Mooduli ulatus või ühenduse kaupa: kuhu päring kuulub
Python käivitab mooduli tasandi laused üks kord, skripti laadimisel. Seetõttu loeb faili algusesse kirjutatud andmebaasipäring tabelit laadimise ajal ja hoiab seda vastust iga järgneva ühenduse jaoks. See on teine põhjus, miks muudatus näib mitte midagi tegevat: kood käivitub, aga mitte siis, kui te ootate.
Pange päring post_auth töötleja sisse, et see käivituks iga autentimise korral. Hoidke dokumenteeritud allkiri, kohandage autentimise tulemust, mille töötleja saab, ja tagastage see sama objekt, mitte paljas arv.
Hoidke ka ühenduse käsitlemine töötleja sees. Importimisel avatud ühenduse võib server sulgeda enne esimese kasutaja sisselogimist ja sellest tulenev viga näeb välja nagu tagasilükatud mandaat, mitte katkine skript.
Kaks tagasilükkamise teed, üks omanik
Kui otsus on kohalik päring, kuulub tulemus Pythoni töötlejale. Kui see on väline HTTP-kontroll, laske käsu väljumisstaatusel vastust kanda: mähis, mis väljub nullist erineva koodiga, lükkab sisselogimise tagasi ja viimase käsu staatusest saab skripti staatus ilma selgesõnalise exit-ta.
Hoidke saladus protsesside loendist väljas. Rooti loetav fail või teenuse edastatud keskkonnaväärtus on turvalisem kui argument, mille iga kohalik kasutaja saab lugeda käsust ps. Kinnitage lõpp-punkt enne kutset muutujasse, et kirjaviga ebaõnnestuks konfigureerimise ajal, mitte kellegi sisselogimise ajal. Vahetage seda saladust samamoodi nagu iga teist mandaati.
Valige iga kontrolli jaoks üks omanik. Skript, mis nii küsib andmebaasist kui ka kutsub HTTP-teenust, vajab deklareeritud prioriteedireeglit juhuks, kui need kaks lahknevad, muidu ei ühti logis olev tagasilükkamise põhjus sellega, mida kasutajale öeldi.
Rakendage seda ilma administraatorit välja lukustamata
Kaks kaitset teevad muudatuse pööratavaks: teine administraatori konto, mis ei sõltu skriptist, ja teadaolevalt hea koopia, mida hoitakse väljaspool skriptide kataloogi. Rakendage muudatus hooldusaknas ja jälgige seejärel enne lahtiühendamist ühte proovisisselogimist ja ühte tahtlikku tagasilükkamist. Kui logi näitab autentimisotsuse asemel süntaksiviga, on salvestatud skript katki ja iga sisselogimine ebaõnnestub.
Kaks tingimust ütlevad oota: te ei saa väärtusfaili rootina lugeda või teil pole teist teed haldusliidesesse. Mõlemad muudavad väikese muudatuse väljalukustamiseks ja kumbki ei ole väärt katsetamist tootmisserveris päeva lõpus. Access Serveri dokumentatsioon katab post-auth liidese ja selle toetatud väljad.