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 интерфэйс болон түүний дэмжигдсэн талбаруудыг хамарна.