Az Access Server figyelmen kívül hagyja a lemezen szerkesztett post_auth szkriptet
A post_auth fájl lemezen történő szerkesztése semmit nem tesz: az Access Server a konfigurációs adatbázisában lévő példányt futtatja. Kövesse a döntés útját és a sacli parancsokat.
Egy szerkesztett mac.py, amely semmit nem változtat, a szokásos első tünet. A lemezen lévő fájl nem az, amit az Access Server végrehajt; a hitelesítési szolgáltatás a szkriptet a kiszolgáló konfigurációs adatbázisából tölti be, és pontosan az a tárolt példány dönt egy bejelentkezésről. Amíg a tárolt érték nincs lecserélve, minden teszt csak azt bizonyítja, hogy a régi szkript még működik.
Három feltétel dönti el a munkát: hogy az érték valaha bekerült-e a konfigurációs adatbázisba, hogy a szolgáltatás kapott-e utasítást az újratöltésre, és hogy a módosított kód valóban minden kapcsolatnál lefut-e. Mindegyiknek más a tünete, és a rossz javítása elpazarol egy karbantartási ablakot.
A fájl forrás, nem a futó példány
Az Access Server a post-auth szkriptet a auth.module.post_auth_script kulcs alatt tartja. A fájl szerkesztése csak a munkapéldányt frissíti. A démon a tárolt értéket olvassa, ezért a módosítás láthatatlan marad, amíg nem törli a régi bejegyzést, és nem teszi az új fájlt a helyére. Az a tárolt érték az egyetlen példány, amelyet a hitelesítési szolgáltatás megvizsgál.
Olvassa el, mielőtt módosítja. Ha már megegyezik a szerkesztett fájllal, a probléma nem a tárolás, és lépjen tovább a hatókör kérdésére. Ha régebbi verziót mutat, a módosítás soha nem érte el a szolgáltatást.
./sacli -k auth.module.post_auth_script ConfigGetCserélje le a tárolt példányt, majd alkalmazza
Az írás előtti törlés nem díszítés. A ConfigPut a --value_file kulccsal egy lépésben lecseréli az értéket, és az ConfigDel előbb lehetetlenné teszi egy elavult vagy sérült bejegyzés hátrahagyását. A kezdés előtt őrizzen másolatot a működő szkriptről a szkriptkönyvtáron kívül.
./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 startAz sacli start a módosított konfigurációt a belső szolgáltatásokra alkalmazza, és ez lépteti életbe az új szkriptet. Ez nem ugyanaz, mint az egész gép vagy a démon újraindítása, és nem is helyettesíthető azzal, hacsak a módosítás nem igényli.
Használjon abszolút útvonalat az értékfájlhoz, és erősítse meg, hogy a root olvasni tudja. Az az útvonal, amely a héjból feloldódik, de a szolgáltatásfiókból nem, olyan tárolt értéket ad, amely az ConfigGet kimenetében helyesnek látszik, és az első bejelentkezésnél meghiúsul. Ellenőrizze a tárolt eredményt még egyszer az sacli start után, nem előtte.
Modulhatókör vagy kapcsolatonként: hová tartozik a lekérdezés
A Python a modulszintű utasításokat egyszer futtatja, a szkript betöltésekor. Ezért a fájl elejére írt adatbázis-lekérdezés betöltéskor olvassa a táblát, és ezt a választ tartja meg minden későbbi kapcsolat számára. Ez a második oka annak, hogy egy módosítás hatástalannak tűnik: a kód lefut, de nem akkor, amikor várja.
Tegye a lekérdezést a post_auth kezelőbe, hogy minden hitelesítésnél lefusson. Tartsa meg a dokumentált aláírást, igazítsa a kezelő által kapott hitelesítési eredményt, és ugyanazt az objektumot adja vissza, nem csupasz számot.
A kapcsolatkezelést is a kezelőn belül tartsa. Az importáláskor megnyitott kapcsolatot a kiszolgáló bezárhatja az első felhasználó bejelentkezése előtt, és a keletkező hiba elutasított hitelesítő adatnak tűnik, nem törött szkriptnek.
Két elutasítási út, egy tulajdonos
Ha a döntés helyi lekérdezés, az eredmény a Python kezelőé. Ha külső HTTP-ellenőrzés, hagyja, hogy a parancs kilépési állapota hordozza a választ: a nullától eltérő kóddal kilépő burkoló elutasítja a bejelentkezést, és az utolsó parancs állapota lesz a szkript állapota explicit exit nélkül.
Tartsa a titkot a folyamatlistán kívül. A root által olvasható fájl vagy a szolgáltatás által átadott környezeti érték biztonságosabb, mint egy argumentum, amelyet bármely helyi felhasználó kiolvashat a ps kimenetéből. Rögzítse a végpontot egy változóban a hívás előtt, hogy az elírás a konfigurációnál bukjon el, ne valaki bejelentkezése közben. Forgassa ezt a titkot úgy, mint bármely más hitelesítő adatot.
Ellenőrzésenként egy tulajdonost válasszon. Az a szkript, amely egyszerre kérdez adatbázist és hív HTTP-szolgáltatást, kinyilvánított elsőbbségi szabályt igényel arra az esetre, amikor a kettő ellentmond, különben a napló elutasítási indoka nem fog egyezni azzal, amit a felhasználónak mondtak.
Alkalmazza anélkül, hogy kizárná az adminisztrátort
Két biztosíték teszi visszafordíthatóvá a módosítást: egy második admin fiók, amely nem függ a szkripttől, és egy ismerten jó példány a szkriptkönyvtáron kívül. Alkalmazza a módosítást karbantartási ablakban, majd figyeljen meg egy próba-bejelentkezést és egy szándékos elutasítást, mielőtt lecsatlakozik. Ha a napló szintaktikai hibát mutat hitelesítési döntés helyett, a tárolt szkript törött, és minden bejelentkezés meghiúsul.
Két feltétel azt mondja, várjon: nem tudja rootként olvasni az értékfájlt, vagy nincs második útja az admin felületre. Mindkettő kis módosítást zár ki, és egyik sem érdemes tesztelésre éles kiszolgálón a nap végén. Az Access Server dokumentációja a post-auth felületet és annak támogatott mezőit tárgyalja.