In bewurke mac.py dat neat feroaret is it gewoane earste symptoom. It bestân op de skiif is net wat Access Server útfiert; de autentikaasjetsjinst lûkt it skript út de konfiguraasjedatabank fan de tsjinner, en krekt dy bewarre kopy beslút oer in oanmelding. Oant de bewarre wearde ferfongen is, bewiist elke test allinnich dat it âlde skript noch wurket.

Trije betingsten beslisse it wurk: oft de wearde ea yn de konfiguraasjedatabank set is, oft de tsjinst opdracht krigen hat dy opnij te lêzen, en oft de koade dy jo feroare hawwe echt by elke ferbining draait. Elk hat in oar symptoom, en it ferkearde reparearjen fergriemt in ûnderhâldsfinster.

It bestân is in boarne, net de draaiende kopy

Access Server hâldt it post-auth-skript ûnder de kaai auth.module.post_auth_script. It bestân bewurkje wurket allinnich jo wurkkopy by. De daemon lêst de bewarre wearde, dus de feroaring bliuwt ûnsichtber oant jo de âlde yngong wiskje en it nije bestân op syn plak sette. Dy bewarre wearde is de iennige kopy dy’t de autentikaasjetsjinst besjocht.

Lês it foardat jo it feroarje. As it al oerienkomt mei it bestân dat jo bewurke hawwe, is it probleem net de opslach en moatte jo nei de fraach oer it berik springe. As it in âldere ferzje sjen lit, hat de feroaring de tsjinst nea berikt.

./sacli -k auth.module.post_auth_script ConfigGet

Ferfang de bewarre kopy en pas it dan ta

Wiskje foardat jo skriuwe is gjin fersiering. ConfigPut mei --value_file ferfangt de wearde yn ien stap, en ConfigDel earst makket it ûnmooglik in ferâldere of skansearre yngong efter te litten. Bewarje in kopy fan it wurkjende skript bûten de skriptmap foardat jo begjinne.

./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 past de feroare konfiguraasje ta op de ynterne tsjinsten, en dat is wat it nije skript yn wurking bringt. Dat is net itselde as de hiele masine of de daemon opnij starte, en it moat dêr net troch ferfongen wurde, útsein as jo feroaring dat freget.

Brûk in absolút paad foar it weardebestân en befêstigje dat root it lêze kin. In paad dat út jo shell oplost wurdt mar net út it tsjinstakkount, jout in bewarre wearde dy’t der yn ConfigGet goed út sjocht en by de earste oanmelding mislearret. Kontrolearje it bewarre resultaat noch ien kear nei sacli start, net dêrfoar.

Modulberik of by ferbining: wêr’t it fersyk heart

Python fiert útspraken op modulnivo ien kear út, by it lêzen fan it skript. In databankfersyk dat boppe yn it bestân skreaun is, lêst de tabel dus by it lêzen en hâldt dat antwurd foar elke lettere ferbining. Dat is de twadde reden wêrom’t in feroaring liket neat te dwaan: de koade draait, mar net wannear’t jo it ferwachtsje.

Set it fersyk binnen de post_auth-hanneler, sadat it by elke autentikaasje útfierd wurdt. Behâld de dokumintearre hantekening, pas it autentikaasjeresultaat oan dat de hanneler krijt, en jout dat selde objekt werom yn plak fan in keal getal.

Hâld ek it ferbiningsbehear binnen de hanneler. In ferbining dy’t by ymport iepen makke wurdt, kin troch de tsjinner sletten wurde foardat de earste brûker oanmeldt, en de resultearjende flater liket op wegere oanmeldgegevens yn plak fan in brutsen skript.

Twa wegeringspaden, ien eigner

As de beslissing in lokaal fersyk is, is de Python-hanneler eigner fan it resultaat. As it in eksterne HTTP-kontrôle is, lit dan de útgongstatus fan de opdracht it antwurd drage: in omslach dy’t mei in net-nul koade útgeit, wegeret de oanmelding, en de status fan de lêste opdracht wurdt de status fan it skript sûnder in eksplisite exit.

Hâld it geheim bûten de prosesslist. In bestân dat root lêze kin of in omjouwingswearde dy’t de tsjinst trochjout is feiliger as in argumint dat elke lokale brûker út ps lêze kin. Fêstigje it einpunt yn in fariabele foar de oprop, sadat in typflater by de konfiguraasje mislearret en net by immen syn oanmelding. Rotsje dat geheim lyk as elke oare oanmeldgegevens.

Kies ien eigner per kontrôle. In skript dat sawol de databank freget as in HTTP-tsjinst oanropt, hat in ferklearre foarrangsregel nedich foar it gefal dat de beide faninoar ferskille, oars sil de wegeringsreden yn it log net oerienkomme mei wat tsjin de brûker sein is.

Pas it ta sûnder de administrator bûten te sluten

Twa feilichheden meitsje de feroaring weromdraaibaar: in twadde admin-akkount dat net fan it skript ôfhinklik is, en in bekend goede kopy dy’t bûten de skriptmap bewarre wurdt. Pas de feroaring ta yn in ûnderhâldsfinster, en besjoch dan ien testoanmelding en ien opsetlike wegering foardat jo de ferbining ferbrekke. As it log in syntaksflater sjen lit yn plak fan in autentikaasjebeslissing, is it bewarre skript brutsen en sil elke oanmelding mislearje.

Twa betingsten sizze wachtsje: jo kinne it weardebestân net as root lêze, of jo hawwe gjin twadde wei nei de admin-ynterface. Beide meitsje fan in lytse feroaring in bûtesluting, en gjinien is it wurdich om oan’e ein fan de dei op in produksjetsjinner te testen. De dokumintaasje fan Access Server behannelet de post-auth-ynterface en syn stipe fjilden.

Relatearre artikelen