ไม่รู้จักโมดูล PAM: กระบวนการใดล้มเหลวจริง
ข้อความระบุอ็อบเจกต์ที่ใช้ร่วมกันและจุดเข้า ไม่ใช่รหัสผ่าน ค้นหากระบวนการที่บันทึกข้อความนี้ แล้วตรวจสอบการโหลด สัญลักษณ์ และการรับประกันของสแตก
อ่านวลีนั้นเป็นข้อความเกี่ยวกับอ็อบเจกต์ที่ใช้ร่วมกันและตัวชี้ฟังก์ชัน ไม่ใช่เกี่ยวกับรหัสผ่าน คำเดียวกันอาจมาจาก OpenVPN ปลั๊กอิน จากสแตก PAM ที่โหลดสำหรับบริการเดียว หรือจากภายในดีมอน RADIUS และนี่คือการสอบสวนที่ต่างกันสามแบบ เลือกกระบวนการก่อน
การตรวจสอบด้านล่างถือว่าข้อความเกิดขึ้นผ่านการผสานรวม Linux-PAM ในการเข้าสู่ระบบ VPN หากมาจากการกำหนดค่าของเซิร์ฟเวอร์ RADIUS เอง ให้เริ่มจากหลักฐานของดีมอนนั้น
ระบุชื่อกระบวนการก่อนระบุชื่อแพ็กเกจ
ส่วนประกอบสามอย่างถูกเรียกว่าโมดูล และไม่มีอันใดทดแทนกันได้ ปลั๊กอินการยืนยันตัวตนของ OpenVPN ถูกโหลดโดยดีมอน VPN และใช้งานอินเทอร์เฟซเรียกกลับของดีมอนนั้น โมดูล PAM คืออ็อบเจกต์ที่ใช้ร่วมกันซึ่ง libpam โหลดสำหรับบริการที่ระบุชื่อ และใช้งานจุดเข้าเช่น pam_sm_authenticate โมดูล FreeRADIUS เป็นส่วนหนึ่งของการกำหนดค่าของดีมอนนั้นเอง ข้อความที่มีคำเดียวกันอาจมาจากทั้งสาม จึงเป็นคำถามแรกว่าไฟล์บันทึกบรรทัดใดสร้างข้อความนี้
จับคู่เวลาของความพยายามที่ล้มเหลวหนึ่งครั้งระหว่างไฟล์บันทึก VPN และไฟล์บันทึกการยืนยันตัวตนของระบบ แล้วอ่านบรรทัดก่อนหน้าสรุป ข้อความเฉพาะของตัวโหลดมักอยู่ที่นั่นแล้ว
อ่านข้อผิดพลาดการโหลด แล้วอ่านจุดเข้า
PAM รายงานโมดูลที่ไม่รู้จักเมื่อโหลดอ็อบเจกต์ที่ใช้ร่วมกันซึ่งเลือกไว้ไม่ได้ หรือเมื่ออ็อบเจกต์ที่โหลดไม่ให้ฟังก์ชันที่รายการสแตกนั้นต้องการ สิ่งเหล่านี้คือการซ่อมที่ต่างกัน อย่างแรกคือปัญหาของเส้นทาง การแพ็กเกจ หรือ ABI และอย่างที่สองคือจุดเข้าที่ไม่ตรงกัน บรรทัดการยืนยันตัวตนต้องใช้ pam_sm_authenticate ในขณะที่บรรทัดบัญชีต้องใช้ pam_sm_acct_mgmt และไลบรารีที่ใช้งานเพียงอย่างเดียวจะล้มเหลวที่อีกอย่าง ดังที่ โค้ดของตัวส่ง แสดง การค้นหาไฟล์บนดิสก์ไม่ได้พิสูจน์ทั้งสองอย่าง
การนำไลบรารีที่ชื่อคล้ายกันจากดิสทริบิวชันหรือสถาปัตยกรรมซีพียูอื่นมาใช้ไม่ใช่การซ่อม และอาจทำให้กระบวนการโหลดโมดูลที่ไม่เคยถูกทดสอบกับ libpam ของมัน ตรวจสอบแพ็กเกจที่เป็นเจ้าของเส้นทางที่ต้องการและสถาปัตยกรรมจริงของไฟล์ก่อนเปลี่ยนสิ่งใด
รักษาการรับประกันที่สแตกให้ไว้
วิธีที่เร็วที่สุดในการทำให้ข้อผิดพลาดนี้เงียบก็เป็นวิธีที่แย่ที่สุดเช่นกัน คือการทำเครื่องหมายโมดูลที่จำเป็นเป็นทางเลือก ลบขั้นตอนบัญชี หรือแทรกการอนุญาตแบบไม่มีเงื่อนไข แต่ละอย่างเปลี่ยนการตรวจสอบที่ล้มเหลวเป็นการตรวจสอบที่หายไป และการเข้าสู่ระบบก็สำเร็จด้วยเหตุผลที่ไม่มีใครตั้งใจ รีเซ็ตรหัสผ่านและการเปลี่ยนความลับร่วมก็ไม่ได้ให้ฟังก์ชันที่หายไป เพราะความล้มเหลวเกิดขึ้นก่อนที่ข้อมูลรับรองใดจะไปถึงแบ็กเอนด์
สแตกหลายโมดูลอาจรันแบ็กเอนด์อื่นก่อนรายการที่ล้มเหลว ดังนั้นข้อผิดพลาดนี้ไม่ได้พิสูจน์ว่าไม่มีการส่งคำขอ RADIUS
ตรวจสอบการเข้าสู่ระบบ ไม่ใช่โมดูล
เมื่อแก้ความไม่ตรงกันแล้ว ให้ทดสอบเส้นทางรับเข้าจริง บัญชีที่ถูกต้องควรผ่าน ข้อมูลรับรองที่ไม่ถูกต้องควรยังล้มเหลว และบัญชีที่ถูกห้ามควรยังถูกปฏิเสธ ยืนยันด้วยว่าข้อกำหนดเรื่องใบรับรองหรือปัจจัยเพิ่มเติมยังถูกบังคับใช้ เพราะสแตกที่ซ่อมแล้วแต่ข้ามขั้นตอนหนึ่งดูเหมือนความสำเร็จจากฝั่งไคลเอนต์
การที่โมดูลโหลดได้อย่างสะอาดคือความคืบหน้า ไม่ใช่การทดสอบที่เสร็จสิ้น
บันทึกว่าชื่อบริการใด ไฟล์นโยบายใด และจุดเข้าใดเกี่ยวข้อง พร้อมความพยายามครั้งเดียวที่ใช้เป็นหลักฐาน บันทึกนั้นคือสิ่งที่ทำให้ครั้งต่อไปเป็นการค้นหาไม่ใช่แบบฝึกหัดทางโบราณคดี