Hech narsani o’zgartirmaydigan tahrirlangan mac.py odatdagi birinchi alomatdir. Diskdagi fayl Access Server bajaradigan fayl emas; autentifikatsiya xizmati skriptni serverning konfiguratsiya ma lumotlar bazasidan yuklaydi va aynan o’sha saqlangan nusxa kirishni hal qiladi. Saqlangan qiymat almashtirilmaguncha har bir sinov faqat eski skript hali ishlayotganini isbotlaydi.

Ishni uch shart hal qiladi: qiymat qachondir konfiguratsiya ma lumotlar bazasiga kiritilganmi, xizmatga uni qayta yuklash buyrug’i berilganmi va o’zgartirgan kodingiz haqiqatan har bir ulanishda ishlaydimi. Har birining alomati boshqacha va noto’g’ri shartni tuzatish texnik xizmat oynasini behuda o’tkazadi.

Fayl manba, ishlab turgan nusxa emas

Access Server post-auth skriptini auth.module.post_auth_script kaliti ostida saqlaydi. Faylni tahrirlash faqat ish nusxangizni yangilaydi. Demon saqlangan qiymatni o’qiydi, shuning uchun eski yozuvni o’chirib, uning o’rniga yangi faylni qo’ymaguningizcha o’zgarish ko’rinmaydi. Sh’u saqlangan qiymat autentifikatsiya xizmati murojaat qiladigan yagona nusxadir.

Uni o’zgartirishdan oldin o’qing. Agar u tahrirlagan faylingizga allaqachon mos kelsa, muammo saqlashda emas va qamrov savoliga o’ting. Agar eskiroq versiyani ko’rsatsa, o’zgarish xizmatga yetmagan.

./sacli -k auth.module.post_auth_script ConfigGet

Saqlangan nusxani almashtiring, so’ngra uni qo’llang

Yozishdan oldin o’chirish bezak emas. ConfigPut --value_file bilan qiymatni bir qadamda almashtiradi, avval ConfigDel qilish esa eskirgan yoki buzilgan yozuv qolishini imkonsiz qiladi. Boshlashdan oldin ishlayotgan skript nusxasini skript papkasidan tashqarida saqlang.

./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 o’zgartirilgan konfiguratsiyani ichki xizmatlarga qo’llaydi va yangi skriptni kuchga kiritadigan narsa aynan shu. Bu butun mashinani yoki demonni qayta ishga tushirish bilan bir xil emas va o’zgarishingiz talab qilmasa, u bilan almashtirilmasligi kerak.

Qiymat fayli uchun mutlaq yo’l ishlating va root uni o’qiy olishiga ishonch hosil qiling. Sizning qobig’ingizdan hal bo’ladigan, lekin xizmat hisobidan hal bo’lmaydigan yo’l ConfigGet da to’g’ri ko’rinadigan va birinchi kirishda muvaffaqiyatsiz bo’ladigan saqlangan qiymat beradi. Saqlangan natijani sacli start dan keyin yana bir marta tekshiring, undan oldin emas.

Modul qamrovi yoki har bir ulanish: so’rov qayerda bo’lishi kerak

Python modul darajasidagi bayonotlarni skript yuklanganda bir marta bajaradi. Shuning uchun faylning boshiga yozilgan ma lumotlar bazasi so’rovi yuklash paytida jadvalni o’qiydi va shu javobni keyingi har bir ulanish uchun saqlab qoladi. O’zgarish hech narsa qilmayotgandek ko’rinishining ikkinchi sababi shu: kod ishlaydi, lekin siz kutgan paytda emas.

So’rovni post_auth ishlov beruvchisi ichiga qo’ying, har bir autentifikatsiyada bajarilsin. Hujjatlashtirilgan imzoni saqlang, ishlov beruvchi oladigan autentifikatsiya natijasini moslang va yalang’och son o’rniga o’sha obyektning o’zini qaytaring.

Ulanish bilan ishlashni ham ishlov beruvchi ichida saqlang. Import paytida ochilgan ulanishni server birinchi foydalanuvchi kirishidan oldin yopishi mumkin va yuzaga kelgan xato buzilgan skriptga emas, rad etilgan hisob ma lumotlariga o’xshaydi.

Rad etishning ikki yo’li, bitta egasi

Agar qaror mahalliy so’rov bo’lsa, natija egasi Python ishlov beruvchisi. Agar u tashqi HTTP tekshiruvi bo’lsa, javobni buyruqning chiqish holati olib yursin: noldan farqli kod bilan chiqadigan o’rov rad etadi va oxirgi buyruqning holati aniq exit bo’lmasa ham skriptning holatiga aylanadi.

Sirni jarayonlar ro’yxatidan tashqarida saqlang. root o’qiy oladigan fayl yoki xizmat uzatgan muhit qiymati, har qanday mahalliy foydalanuvchi ps dan o’qiy oladigan argumentdan xavfsizroq. Chaquvdan oldin oxirgi nuqtani o’zgaruvchiga mahkamlang, matn xatosi sozlashda muvaffaqiyatsiz bo’lsin, birovning kirishi paytida emas. Bu sirni boshqa hisob ma lumotlari kabi almashtirib turing.

Har bir tekshiruv uchun bitta ega tanlang. Ma lumotlar bazasidan so’raydigan va HTTP xizmatini chaqiradigan skript, ikkisi ziddiyatga tushgan holat uchun e’lon qilingan ustuvorlik qoidasiga muhtoj, aks holda jurnaldagi rad etish sababi foydalanuvchiga aytilgan gapga mos kelmaydi.

Administratorni bloklamasdan qo’llang

Ikki chora o’zgarishni qaytariladigan qiladi: skriptga bog’liq bo’lmagan ikkinchi administrator hisobi va skript papkasidan tashqarida saqlanadigan ma lum yaxshi nusxa. O’zgarishni texnik xizmat oynasida qo’llang, so’ngra uzilishdan oldin bitta sinov kirishini va bitta qasddan rad etishni kuzating. Agar jurnal autentifikatsiya qarori o’rniga sintaksis xatosini ko’rsatsa, saqlangan skript buzilgan va har bir kirish muvaffaqiyatsiz bo’ladi.

Ikki shart kuting deydi: qiymat faylini root sifatida o’qiy olmaysiz yoki administrator interfeysiga ikkinchi yo’l yo’q. Ikkisi ham kichik o’zgarishni bloklanishga aylantiradi va kun oxirida ishlab chiqarish serverida sinashga arziydigani yo’q. Access Server hujjatlari post-auth interfeysi va u qo’llab-quvvatlaydigan maydonlarni qamrab oladi.

O'xshash maqolalar