ในวันสุดท้ายฉันได้ติดตั้งระบบ Linux ด้วยการรับรองความถูกต้องของ LDAP และทุกอย่างทำงานได้ดี แต่ยังมีบางสิ่งที่ฉันไม่สามารถเข้าใจเกี่ยวกับ NSS และ PAM ได้อย่างแท้จริงหลังจากการวิจัยมากมาย
อ้างอิง:
NSS ช่วยให้ผู้ดูแลระบบสามารถระบุรายการของแหล่งข้อมูลที่ไฟล์รับรองความถูกต้องชื่อโฮสต์และข้อมูลอื่น ๆ จะถูกจัดเก็บและค้นหา
และ
PAM คือชุดของไลบรารีที่จัดเตรียมแพลตฟอร์มการพิสูจน์ตัวตนที่สามารถกำหนดค่าได้สำหรับแอปพลิเคชันและระบบปฏิบัติการพื้นฐาน
สิ่งที่ฉันไม่เข้าใจคือ PAM และ NSS ทำงานอย่างไรและโต้ตอบกัน ในหนังสือเล่มนี้มีการอธิบายสถาปัตยกรรมที่ค่อนข้างดี: ฉันกำหนดค่า PAM เพื่อใช้pam_ldapสำหรับบัญชี LDAP และpam_unixสำหรับบัญชีท้องถิ่นจากนั้นฉันกำหนดค่าnsswitch.confเพื่อดึงข้อมูลจากไฟล์ในเครื่องและ LDAP
หากฉันเข้าใจว่าใช้ LDAP อย่างถูกต้องสองครั้งให้ทำก่อนpam_ldapโดย NSS ซึ่งเรียกตัวเองมาpam_unixก่อน นั่นถูกต้องใช่ไหม? LDAP ใช้สองครั้งจริง ๆ หรือไม่ แต่ทำไมฉันต้องกำหนดค่าทั้ง NSS และ PAM คำอธิบายของฉันคือ PAM ทำงานแตกต่างจาก NSS และใช้โดยโปรแกรมอื่น แต่ก็ควรจะใช้เฉพาะ NSS หรือ PAM เท่านั้นอย่างที่ฉันได้อ่านในหน้านี้
ดังนั้นฉันจึงทดลองสักหน่อยและฉันได้พยายามลบ LDAP ออกจากnsswitch.conf(และการตรวจสอบสิทธิ์หยุดทำงานราวกับว่ามีเพียง pam_ldap เท่านั้นที่ไม่เพียงพอที่จะทำงาน) จากนั้นฉันเปิดใช้งาน LDAP ใน NSS อีกครั้งและฉันลบออกจากการกำหนดค่า PAM (ครั้งนี้ทุกอย่างทำงานได้ดีราวกับว่าpam_ldapไม่มีประโยชน์และ NSS ก็เพียงพอที่จะรับรองความถูกต้องของผู้ใช้)
มีใครบ้างที่สามารถช่วยฉันอธิบายสิ่งนี้ได้ ขอบคุณมากล่วงหน้า
UPDATE
ฉันเพิ่งลองทำอะไรซักอย่างตอนนี้ ฉันออกอีกครั้งทุกpam_ldapรายการในฟิลด์การกำหนดค่า pam ทั้งหมดและฉันได้นำออกจากshadow: ldap nsswitch.confขณะนี้ในทุกระบบมีเพียงเส้น: passwd: ldap filesและในgroup: ldap files nsswitch.confดี ... การเข้าสู่ระบบด้วยผู้ใช้ LDAP ทำงานได้อย่างสมบูรณ์ทั้งสองบรรทัด (บวก/etc/ldap.conf) เพียงพอที่จะกำหนดค่าการรับรองความถูกต้องของ LDAP
จากความรู้ของฉัน PAM เป็นอิสระจาก NSS แต่การทดสอบของฉันแสดงให้เห็นว่ามันไม่ได้ ดังนั้นฉันถามตัวเองว่าเป็นไปได้หรือไม่ที่จะปิดใช้งาน NSS อย่างสมบูรณ์และใช้ PAM เท่านั้น
getent shadow | grep LDAPUSERgrep LDAPUSER /etc/shadow