私の知る限り、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サポートで構成UsePAM
され、ディレクティブがに設定さyes
れてsshd_config
いる場合にのみPAMを使用します。PAMを使用する場合でも、PAMに加えて他の認証方法を提供します。特に、公開鍵認証はPAMを経由しません。