เท่าที่ฉันรู้ PAM ไม่ได้กำหนดเชลล์ของผู้ใช้นี่เป็นแอปพลิเคชันที่เหลือ โมดูลเซสชั่นของ PAM ดำเนินการทั่วไปและตรวจสอบว่าจะต้องทำในทุกการเข้าสู่ระบบโดยใช้บริการนั้น หากแอปพลิเคชันต้องการเริ่มเชลล์คุณสามารถดำเนินการได้ฟรีและโดยทั่วไปจะค้นหาเชลล์ในฐานข้อมูลผู้ใช้
สมมติว่าคำถามของคุณเกี่ยวกับOpenSSHนั่นคือสิ่งที่มันทำ: เมื่อผู้ใช้รับรองความถูกต้องและสิ่งเซสชัน PAM เสร็จเรียบร้อยแล้ว (หากกำหนดค่าให้ใช้PAM¹) เซิร์ฟเวอร์ ssh จะค้นหาเชลล์ในฐานข้อมูลผู้ใช้ (โดยตรงไม่ใช่ ผ่านห้องสมุด PAM)
ฐานข้อมูลผู้ใช้ไม่ จำกัด/usr/passwd
และเพื่อน บน Linux (ซึ่งผมถือว่าคุณกำลังใช้ตั้งแต่คุณพูดถึงshadow
) สิ่งที่ทำให้ฐานข้อมูลผู้ใช้จะถูกกำหนดโดยการตั้งค่าในpasswd
/etc/nsswitch.conf
ในการตั้งค่าคอมพิวเตอร์หลายเพิ่มเติมเรื่องธรรมดาที่จะฐานข้อมูลท้องถิ่นที่มีNISและLDAP หากคุณต้องการใช้เชลล์ที่ไม่ได้เป็นหนึ่งใน/etc/passwd
นี้อาจเป็นสิ่งที่จะกำหนดค่า (แม้ว่ามันจะเป็นบิตแปลกและบางทีผู้คนสามารถให้คำแนะนำที่ดีกว่าถ้าคุณบอกเราว่าคุณกำลังพยายามที่จะบรรลุ)
หากคุณต้องการให้ผู้ใช้ที่ไม่มีการเข้าถึงแบบเต็มเชลล์โซลูชันแบบธรรมชาติคือการเปลี่ยน/etc/passwd
เพื่อ จำกัด เชลล์ - บางทีrsshเพื่ออนุญาตแอปพลิเคชันประเภทการคัดลอกไฟล์เพียงไม่กี่อย่างเช่น scp, rsync และ cvs นอกจากนี้คุณยังสามารถใช้คำสั่งบังคับของผู้ใช้ไฟล์~/.ssh/authorized_keys
หากคุณต้องการที่จะเห็นร่องรอยของสิ่งที่เซิร์ฟเวอร์ SSH ssh -ddd
จะทำเริ่มภูตเป็น นอกจากนี้คุณยังสามารถรับมุมมองของลูกค้าได้ด้วยssh -vvv
ที่นี่มุมมองของเซิร์ฟเวอร์คือสิ่งที่คุณสนใจมากที่สุด
¹
OpenSSH เพียงใช้ PAM ถ้ามีการกำหนดค่าด้วยการสนับสนุน PAM และUsePAM
สั่งมีการตั้งค่าในyes
sshd_config
แม้ว่าจะใช้ PAM แต่ก็มีวิธีการรับรองความถูกต้องอื่น ๆ นอกเหนือจาก PAM ในการตรวจสอบคีย์สาธารณะโดยเฉพาะอย่างยิ่งไม่ผ่าน PAM