Access Server اُس post_auth اسکرپٹ کو نظر انداز کرتا ہے جو آپ نے ڈسک پر تبدیل کی
ڈسک پر post_auth فائل میں ترمیم کرنے سے کچھ نہیں ہوتا: Access Server اپنے کنفیگ ڈیٹا بیس میں موجود نقل چلاتا ہے۔ فیصلے کا راستہ اور sacli کمانڈز پر عمل کریں۔
ترمیم شدہ mac.py جو کچھ نہیں بدلتا، معمول کی پہلی علامت ہے۔ ڈسک پر موجود فائل وہ نہیں جو Access Server چلاتا ہے؛ تصدیق کی خدمت اسکرپٹ کو سرور کے کنفیگ ڈیٹا بیس سے لوڈ کرتی ہے، اور وہی محفوظ نقل لاگ اِن کا فیصلہ کرتی ہے۔ جب تک محفوظ قدر بدلی نہ جائے، ہر آزمائش صرف یہ ثابت کرتی ہے کہ پرانا اسکرپٹ اب بھی کام کرتا ہے۔
کام کا فیصلہ تین شرطیں کرتی ہیں: قدر کبھی کنفیگ ڈیٹا بیس میں رکھی گئی یا نہیں، خدمت کو اسے دوبارہ لوڈ کرنے کا حکم ملا یا نہیں، اور آپ کا بدلا ہوا کوڈ واقعی ہر کنکشن پر چلتا ہے یا نہیں۔ ہر ایک کی علامت الگ ہے، اور غلط والی کو درست کرنا دیکھ بھال کا وقت ضائع کرتا ہے۔
فائل ایک ماخذ ہے، چلتی ہوئی نقل نہیں
Access Server post-auth اسکرپٹ کو auth.module.post_auth_script کلید کے تحت رکھتا ہے۔ فائل میں ترمیم صرف آپ کی کام والی نقل کو تازہ کرتی ہے۔ ڈیمن محفوظ قدر پڑھتا ہے، اس لیے تبدیلی اس وقت تک نظر نہیں آتی جب تک آپ پرانا اندراج مٹا کر نئی فائل اس کی جگہ نہ رکھیں۔ وہی محفوظ قدر تصدیق کی خدمت کی دیکھی جانے والی واحد نقل ہے۔
بدلنے سے پہلے اسے پڑھیں۔ اگر یہ آپ کی ترمیم کردہ فائل سے پہلے ہی میل کھاتی ہے تو مسئلہ ذخیرے میں نہیں اور دائرے کے سوال کی طرف جائیں۔ اگر یہ پرانا نسخہ دکھاتی ہے تو تبدیلی خدمت تک پہنچی ہی نہیں۔
./sacli -k auth.module.post_auth_script ConfigGetمحفوظ نقل بدلیں، پھر اسے لاگو کریں
لکھنے سے پہلے مٹانا سجاوٹ نہیں۔ ConfigPut کے ساتھ --value_file قدر کو ایک مرحلے میں بدلتا ہے، اور پہلے ConfigDel کرنا پرانے یا خراب اندراج کے بچ رہنے کو ناممکن بنا دیتا ہے۔ شروع کرنے سے پہلے چلتی اسکرپٹ کی نقل اسکرپٹ فولڈر سے باہر رکھیں۔
./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 بدلی ہوئی کنفیگ کو اندرونی خدمات پر لاگو کرتا ہے، اور یہی نئی اسکرپٹ کو نافذ کرتا ہے۔ یہ پوری مشین یا ڈیمن کو دوبارہ چلانے کے برابر نہیں، اور اگر آپ کی تبدیلی اس کی متقاضی نہ ہو تو اس سے بدلنا نہیں چاہیے۔
قدر کی فائل کے لیے مطلق راستہ استعمال کریں اور یقینی بنائیں کہ root اسے پڑھ سکتا ہے۔ ایسا راستہ جو آپ کے شیل سے حل ہوتا ہے مگر خدمت کے اکاؤنٹ سے نہیں، ایسی محفوظ قدر دیتا ہے جو ConfigGet میں درست دکھتی ہے اور پہلے لاگ اِن پر ناکام ہوتی ہے۔ sacli start کے بعد محفوظ نتیجہ ایک بار پھر دیکھیں، پہلے نہیں۔
ماڈیول کا دائرہ یا فی کنکشن: سوال کہاں ہونا چاہیے
Python ماڈیول سطح کے بیانات اسکرپٹ لوڈ ہونے پر ایک بار چلاتا ہے۔ اس لیے فائل کے اوپر لکھا گیا ڈیٹا بیس سوال لوڈ کے وقت جدول پڑھتا ہے اور وہ جواب ہر اگلے کنکشن کے لیے رکھ لیتا ہے۔ تبدیلی کے کچھ نہ کرنے جیسی دکھائی دینے کی دوسری وجہ یہی ہے: کوڈ چلتا ہے، مگر اس وقت نہیں جب آپ توقع کرتے ہیں۔
سوال کو post_auth ہینڈلر کے اندر رکھیں تاکہ یہ ہر تصدیق پر چلے۔ دستاویزی دستخط برقرار رکھیں، ہینڈلر کو ملنے والا تصدیق کا نتیجہ ہم آہنگ کریں، اور خالی عدد کی بجائے وہی شے واپس دیں۔
کنکشن کی دیکھ بھال بھی ہینڈلر کے اندر رکھیں۔ درآمد کے وقت کھلا کنکشن پہلے صارف کے لاگ اِن سے پہلے سرور بند کر سکتا ہے، اور پیدا ہونے والی خرابی ٹوٹی اسکرپٹ کی بجائے مسترد شدہ اسناد جیسی دکھتی ہے۔
انکار کے دو راستے، ایک مالک
اگر فیصلہ مقامی سوال ہے تو نتیجے کا مالک Python ہینڈلر ہے۔ اگر یہ بیرونی HTTP جانچ ہے تو حکم کی خروجی حالت جواب لے جائے: غیر صفر کوڈ سے نکلنے والا غلاف لاگ اِن مسترد کرتا ہے، اور آخری حکم کی حالت واضح exit کے بغیر اسکرپٹ کی حالت بن جاتی ہے۔
راز کو عمل کی فہرست سے باہر رکھیں۔ root کی پڑھی جا سکنے والی فائل یا خدمت کا بھیجا ہوا ماحول قدر، ایسی دلیل سے زیادہ محفوظ ہے جو کوئی بھی مقامی صارف ps سے پڑھ سکتا ہے۔ کال سے پہلے آخری نقطہ کو متغیر میں جما دیں، تاکہ ٹائپ کی غلطی کنفیگ کے وقت ناکام ہو، کسی کے لاگ اِن کے دوران نہیں۔ اس راز کو کسی بھی دوسری اسناد کی طرح بدلتے رہیں۔
ہر جانچ کے لیے ایک مالک چنیں۔ جو اسکرپٹ ڈیٹا بیس سے پوچھتی اور HTTP خدمت کو بلاتی ہے، اسے اس صورت کے لیے اعلانیہ ترجیحی قاعدہ درکار ہے جب دونوں متفق نہ ہوں، ورنہ لاگ میں انکار کی وجہ صارف کو بتائی گئی بات سے میل نہیں کھائے گی۔
منتظم کو لاک آؤٹ کیے بغیر لاگو کریں
دو حفاظتیں تبدیلی کو واپس لانے کے قابل بناتی ہیں: دوسرا منتظم اکاؤنٹ جو اسکرپٹ پر منحصر نہ ہو، اور اسکرپٹ فولڈر سے باہر رکھی گئی معروف اچھی نقل۔ دیکھ بھال کے وقت تبدیلی لاگو کریں، پھر منقطع ہونے سے پہلے ایک آزمائشی لاگ اِن اور ایک جان بوجھ کر انکار دیکھیں۔ اگر لاگ تصدیق کے فیصلے کی بجائے نحو کی خرابی دکھائے تو محفوظ اسکرپٹ ٹوٹی ہوئی ہے اور ہر لاگ اِن ناکام ہوگا۔
دو شرطیں انتظار کرنے کو کہتی ہیں: آپ root کے طور پر قدر کی فائل نہیں پڑھ سکتے، یا منتظمانہ انٹرفیس تک دوسرا راستہ نہیں۔ دونوں چھوٹی تبدیلی کو لاک آؤٹ میں بدل دیتی ہیں، اور دن کے آخر میں پروڈکشن سرور پر جانچنے کے قابل کوئی نہیں۔ Access Server دستاویزات post-auth انٹرفیس اور اس کے معاون میدانوں کا احاطہ کرتی ہیں۔