ในวันสุดท้ายฉันได้ติดตั้งระบบ 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 LDAPUSER
grep LDAPUSER /etc/shadow