Labots mac.py, kas neko nemaina, ir ierastais pirmais simptoms. Fails diskā nav tas, ko izpilda Access Server; autentifikācijas serviss ielādē skriptu no servera konfigurācijas datubāzes, un tieši šī saglabātā kopija nosaka pieteikšanos. Kamēr saglabātā vērtība nav aizstāta, katrs tests pierāda tikai to, ka vecais skripts joprojām darbojas.

Darbu nosaka trīs nosacījumi: vai vērtība kādreiz tika ievietota konfigurācijas datubāzē, vai servisam tika dots rīkojums to pārlādēt, un vai mainītais kods tiešām darbojas katram savienojumam. Katram ir cits simptoms, un nepareizā labošana izšķiež apkalpošanas logu.

Fails ir avots, nevis darbojošā kopija

Access Server glabā post-auth skriptu zem atslēgas auth.module.post_auth_script. Faila labošana atjaunina tikai jūsu darba kopiju. Dēmons nolasa saglabāto vērtību, tāpēc izmaiņas paliek neredzamas, līdz jūs izdzēšat veco ierakstu un ievietojat jauno failu tā vietā. Šī saglabātā vērtība ir vienīgā kopija, ko apskata autentifikācijas serviss.

Izlasiet to pirms maiņas. Ja tā jau sakrīt ar failu, kuru labojāt, problēma nav glabāšanā, un pārejiet pie apjoma jautājuma. Ja tā rāda vecāku versiju, izmaiņa servisu nesasniedza.

./sacli -k auth.module.post_auth_script ConfigGet

Aizstājiet saglabāto kopiju, tad piemērojiet to

Dzēšana pirms rakstīšanas nav rotājums. ConfigPut ar --value_file aizstāj vērtību vienā solī, un vispirms ConfigDel padara neiespējamu atstāt novecojušu vai bojātu ierakstu. Pirms sākšanas saglabājiet darbojošā skripta kopiju ārpus skriptu direktorija.

./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 piemēro mainīto konfigurāciju iekšējiem servisiem, un tas ir tas, kas liek jaunajam skriptam stāties spēkā. Tas nav tas pats, kas visas mašīnas vai dēmona restartēšana, un ar to nevajadzētu aizstāt, ja vien jūsu izmaiņa to neprasa.

Izmantojiet absolūtu ceļu uz vērtības failu un pārliecinieties, ka root to var nolasīt. Ceļš, kas atrisinās no jūsu čaulas, bet ne no servisa konta, dod saglabātu vērtību, kas ConfigGet izskatās pareiza un neizdodas pirmajā pieteikšanās reizē. Pārbaudiet saglabāto rezultātu vēlreiz pēc sacli start, nevis pirms tam.

Moduļa apjoms vai katram savienojumam: kur laikam pieder vaicājums

Python izpilda moduļa līmeņa priekšrakstus vienreiz, kad skripts tiek ielādēts. Tāpēc faila augšdaļā rakstīts datubāzes vaicājums nolasa tabulu ielādes laikā un saglabā šo atbildi katram nākamajam savienojumam. Tas ir otrais iemesls, kāpēc izmaiņa izskatās neko nedaroša: kods darbojas, bet ne tad, kad jūs to gaidāt.

Ievietojiet vaicājumu post_auth apstrādātājā, lai tas darbotos katrā autentifikācijā. Saglabājiet dokumentēto parakstu, pielāgojiet autentifikācijas rezultātu, ko apstrādātājs saņem, un atgrieziet to pašu objektu, nevis kailu skaitli.

Turiet arī savienojuma apstrādi apstrādātāja iekšpusē. Savienojumu, kas atvērts importēšanas laikā, serveris var aizvērt pirms pirmā lietotāja pieteikšanās, un radušās kļūdas izskatās kā noraidīti akreditācijas dati, nevis kā salauzts skripts.

Divi noraidīšanas ceļi, viens īpašnieks

Ja lēmums ir lokāls vaicājums, rezultāts pieder Python apstrādātājam. Ja tā ir ārēja HTTP pārbaude, ļaujiet komandas izvades statusam nest atbildi: ietvars, kas iziet ar nulles kodu, noraida pieteikšanos, un pēdējās komandas statuss kļūst par skripta statusu bez skaidra exit.

Turiet noslēpumu ārpus procesu saraksta. Fails, ko var nolasīt root, vai servisa nodotā vides vērtība ir drošāka par argumentu, ko jebkurš lokāls lietotājs var nolasīt no ps. Pirms izsaukuma nofiksējiet galapunktu mainīgajā, lai drukas kļūda neizdotos konfigurēšanas laikā, nevis kāda pieteikšanās laikā. Mainiet šo noslēpumu tāpat kā jebkurus citus akreditācijas datus.

Izvēlieties vienu īpašnieku katrai pārbaudei. Skriptam, kas gan vaicā datubāzi, gan izsauc HTTP servisu, vajadzīgs deklarēts prioritātes noteikums gadījumam, kad abi atšķiras, citādi noraidīšanas iemesls žurnālā nesaskanēs ar to, kas tika pateikts lietotājam.

Piemērojiet to, nebloķējot administratoru

Divi drošības pasākumi padara izmaiņu atgriežamu: otrs administratora konts, kas nav atkarīgs no skripta, un zināma laba kopija, kas glabāta ārpus skriptu direktorija. Piemērojiet izmaiņu apkalpošanas logā, pēc tam pirms atvienošanās novērojiet vienu testa pieteikšanos un vienu tīšu noraidījumu. Ja žurnāls rāda sintakses kļūdu, nevis autentifikācijas lēmumu, saglabātais skripts ir salauzts un katra pieteikšanās neizdosies.

Divi nosacījumi saka gaidiet: jūs nevarat nolasīt vērtības failu kā root, vai jums nav otra ceļa uz administratora saskarni. Abi pārvērš mazu izmaiņu bloķēšanā, un neviens nav tā vērts, lai dienas beigās testētu ražošanas serverī. Access Server dokumentācija aptver post-auth saskarni un tās atbalstītos laukus.

Saistītie raksti