pamなしでsshや他のサービスがどのように機能するかを理解することはできません。 pamはすべてのルールを定義し、私が正しく理解した場合は、他のモジュールを呼び出してリソースや制限などを設定します。
SSHを設定すると、SSHがどのように機能するかを説明できますかUsePam=No
?認証、セッションの作成などを担当するモジュールは何ですか?
答え1
に設定すると、UsePam no
PAMsshd
モジュールの動作はできるだけ自ら実行されます。
ルートとして実行されるため、選択したパスワードハッシュアルゴリズムハッシュの開始を調べることによって、sshd
(またはNIS、LDAP、またはシステムのCライブラリがサポートする他の保存場所から)ユーザーのパスワードハッシュおよびその他の情報を取得する機能を使用できます。getspnam(3)
次に、/etc/shadow
結果のソルトを使用して、ユーザーが入力したパスワードをハッシュします。結果は検索された完全なパスワードハッシュと比較されます。一致すると、パスワード認証が成功しました。getspnam(3)
crypt(3)
getspnam(3)
アカウントの確認手順も非常に簡単です。パスワードの有効期限情報が結果に含まれgetspnam(3)
、ユーザーのシェルが再確認され、その情報が存在し、リストにリストされていることを確認します/etc/shells
。
セッションの作成にはいくつかの手順が含まれます。詳細は、サービスが実行されているLinuxまたはUnixの種類によって異なります。ただし、通常、シェルセッションの場合、sshd
この特定の接続を処理するサブプロセスはセッション情報をファイルに記録し、擬似utmp
TTYwtmp
を設定し、fork()
他のサブプロセスはユーザーのUIDとグループメンバーシップを取得し、ユーザーのホームディレクトリに切り替えます。を呼び出します。setsid()
会話のリーダーになってみてください。その後、このプロセスはexec()
ユーザーのシェルに入ります。
シェルが終了すると、擬似sshd
TTYマスターを持つサブプロセスは、セッションの終了をファイルに書き込むなど、必要なクリーンアップ操作を実行しますwtmp
。
これは、PAMが発明される前にUnixセッションがどのように処理されたかとほぼ同じです。