जहां तक मुझे पता है, PAM उपयोगकर्ता के शेल का निर्धारण नहीं करता है, यह एप्लिकेशन पर छोड़ दिया जाता है। PAM के सत्र मॉड्यूल सामान्य कार्य और जाँच करते हैं जो उस विशेष सेवा का उपयोग करके हर लॉगिन पर किया जाना चाहिए। यदि एप्लिकेशन फिर एक शेल शुरू करना चाहता है, तो वह ऐसा करने के लिए स्वतंत्र है, और आमतौर पर उपयोगकर्ता डेटाबेस में शेल को देखेगा।
अपने प्रश्न को OpenSSH के बारे में मानते हुए , यह ठीक यही है कि यह क्या करता है: एक बार उपयोगकर्ता प्रमाणित होने के बाद, और PAM सत्र सामान हो गया है (यदि PAM¹ का उपयोग करने के लिए कॉन्फ़िगर किया गया है), ssh सर्वर उपयोगकर्ता डेटाबेस में शेल को देखता है (सीधे, नहीं PAM पुस्तकालय के माध्यम से)।
उपयोगकर्ता डेटाबेस /usr/passwd
और दोस्तों तक सीमित नहीं है । लिनक्स पर (जो मुझे लगता है कि आप उल्लेख के बाद से आप का उपयोग कर रहे हैं shadow
), जो उपयोगकर्ता डेटाबेस बनाता है वह passwd
सेटिंग में निर्धारित होता है /etc/nsswitch.conf
। मल्टी-कंप्यूटर सेटअप में, स्थानीय डेटाबेस के लिए सामान्य जोड़ NIS और LDAP हैं । यदि आप किसी ऐसे शेल का उपयोग करना चाहते हैं जो इसमें नहीं है /etc/passwd
, तो यह कॉन्फ़िगर करने के लिए क्या हो सकता है (हालांकि यह थोड़ा अजीब होगा, और हो सकता है कि लोग बेहतर सुझाव दे सकें यदि आप हमें बताएं कि आप क्या हासिल करना चाहते हैं)।
यदि आप पूर्ण शेल एक्सेस के बिना उपयोगकर्ता चाहते हैं, तो प्राकृतिक समाधान /etc/passwd
प्रतिबंधित शेल को बदलने के लिए है - शायद केवल कुछ फ़ाइल-कॉपी-टाइप एप्लिकेशन जैसे कि स्कैप, rsync और cvs को अनुमति देने के लिए rssh । आप उपयोगकर्ता की ~/.ssh/authorized_keys
फ़ाइल में मजबूर कमांड का उपयोग कर सकते हैं ।
यदि आप ssh सर्वर क्या कर रहे हैं, का एक ट्रेस देखना चाहते हैं, तो डेमन को प्रारंभ करें ssh -ddd
। आप ग्राहक के विचार भी प्राप्त कर सकते हैं ssh -vvv
, हालांकि यहां सर्वर का दृष्टिकोण वही है जो आपको सबसे अधिक रूचि देगा।
¹
अगर यह पीएएम समर्थन के साथ कॉन्फ़िगर किया गया है और OpenSSH केवल पीएएम का उपयोग करता है UsePAM
के निर्देश पर सेट है yes
में sshd_config
। जब यह PAM का उपयोग करता है, तब भी यह PAM के अलावा अन्य प्रमाणीकरण विधियों की पेशकश करता है; विशेष रूप से सार्वजनिक कुंजी प्रमाणीकरण PAM के माध्यम से नहीं जाता है।