Bildiğim kadarıyla, PAM kullanıcının kabuğunu belirlemez, bu uygulamaya bırakılır. PAM'ın oturum modülleri, söz konusu hizmeti kullanan her girişte yapılması gereken genel eylemler ve kontroller gerçekleştirir. Uygulama daha sonra bir kabuk başlatmak isterse, bunu yapmak ücretsizdir ve genellikle kullanıcı veritabanındaki kabuğu arar.
Sorunuzun OpenSSH ile ilgili olduğunu varsayarsak, tam olarak yaptığı şey: kullanıcının kimliği doğrulandıktan ve PAM oturumları yapıldıktan sonra (PAM¹ kullanacak şekilde yapılandırılmışsa), ssh sunucusu kullanıcı veritabanındaki kabuğu arar (doğrudan değil, PAM kitaplığı aracılığıyla).
Kullanıcı veritabanı yalnızca /usr/passwdarkadaşlarla sınırlı değildir . Linux'ta (bahsettiğinizden beri kullandığınızı varsayıyorum shadow), kullanıcı veritabanını oluşturan passwdayardaki ayar tarafından belirlenir /etc/nsswitch.conf. Çok bilgisayarlı kurulumlarda, yerel veritabanına yapılan genel eklemeler NIS ve LDAP'dir . /etc/passwdİçinde olmayan bir kabuk kullanmak istiyorsanız , bu ne yapılandırabilir (biraz garip olsa da ve belki de neyi başarmaya çalıştığınızı söylerseniz insanlar daha iyi öneriler sunabilir).
Tam kabuk erişimi olmayan kullanıcılara sahip olmak istiyorsanız, doğal çözüm /etc/passwdsınırlı bir kabuk koymak için değiştirmektir - belki de scp, rsync ve cvs gibi birkaç dosya kopyalama türü uygulamaya izin vermek için rssh . Kullanıcının ~/.ssh/authorized_keysdosyasında zorunlu komutları da kullanabilirsiniz .
Ssh sunucusunun ne yaptığının bir izini görmek istiyorsanız, arka plan programını şu şekilde başlatın ssh -ddd. Ayrıca müşterinin görüşünü de alabilirsiniz ssh -vvv, ancak burada sunucunun görünümü sizi en çok ilgilendiren şeydir.
¹
o PAM desteği ile yapılandırılmıştır ve eğer OpenSSH sadece PAM kullanan UsePAMdirektif olarak ayarlanır yesiçinde sshd_config. PAM kullansa bile, PAM'a ek olarak başka kimlik doğrulama yöntemleri de sunar; özellikle ortak anahtar kimlik doğrulaması PAM'den geçmez.